在这篇博客中,我们一起深入探索 AWS CLI 的世界,从零开始,逐步构建在云端的家园。将介绍 AWS CLI 的基本功能和使用场景,如何创建 IAM 用户、VPC、子网、安全组、EC2 实例等,甚至还会搭建一个应用负载均衡器(ALB)。无论你是初学者还是有一定基础的用户,都能通过本指南掌握 AWS CLI 的使用技巧,让你在云端操作时更加得心应手。准备好了吗?让我们一起开始这段云端之旅吧!

AWS CLI 介绍

什么是 AWS CLI

AWS CLI(命令行界面)是一个统一的工具,允许用户通过命令行管理和自动化 AWS 服务。它提供了对 AWS API 的直接访问,使用户能够在终端中执行各种操作,而无需依赖图形用户界面(GUI)。

基本功能和使用场景

  • 资源管理:创建、更新和删除 AWS 资源,如 EC2 实例、S3 存储桶和 VPC。
  • 自动化任务:通过脚本批量处理资源,支持自动化部署和管理流程。
  • 配置管理:快速配置 AWS 资源的属性,如安全组、IAM 权限等。
  • 监控和查询:使用 CLI 查询资源状态和健康状况,查看日志和指标。
  • 集成和兼容性:与其他开发工具和 CI/CD 流水线集成,提升开发效率。

一、创建IAM用户并配置aws cli

1.打开iam服务

在搜索框输入“iam"

2.创建用户

点击左侧“角色”, 右边“创建用户”

输入用户名

我这里就叫aws-cli,你随意了

3. 设置权限

我这里为了测试方便,就直接给AdministratorAccess权限了。后边我会专门写关于IAM的博客。敬请期待!

选择“直接附加策略”,然后输入“AdministratorAccess”,选择AdministratorAccess,下一步即可

4. 查看和创建

看下权限设置是否正确,没问题的话就点击创建用户。

可以看到已经提示创建成功

5. 创建密钥

接下来我们来创建密钥,即accesskey

点击用户名称

点击安全凭证->创建访问密钥

选择第一个即可

设置标签

我这里还是使用aws-cli

可以看到已经创建成功,为防止遗忘,建议下载.csv文件

6. 配置aws cli

aws configure, 输入刚才.csv文件中的内容即可,区域我这里使用us-west-1(美西加利福尼亚州),格式选择json.

更多信息可参考aws 管网相关内容:https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html

检查aws cli是否配置正确

aws ec2 describe-instances

有正确返回,可见aws cli配置正确。

转载请在文章开头著名原文地址:https://www.cnblogs.com/Sunzz/p/18432935

二、网络配置

1. 创建vpc

aws ec2 create-vpc --cidr-block 10.0.0.0/16 

输出如下:

为方便识别,给vpc设置一个名称aws-cli-vpc(可选)

aws ec2 create-tags --resources vpc-0a3a6fd36df03aea6 --tags Key=Name,Value="aws-cli-vpc"

可以在控制台看到vpc已经创建成功了vpc id为vpc-0a3a6fd36df03aea6,名字为aws-cli-vpc的vpc

2.创建子网

设置cidr

这里设置子网的网段为10.0.1.0/24

aws ec2 create-subnet --vpc-id vpc-0a3a6fd36df03aea6 --cidr-block 10.0.1.0/24

输出如下:

给子网命名

方便标识(可选)

aws ec2 create-tags --resources subnet-08b88d4a329f823a9 --tags Key=Name,Value=aws-cli-subnet01

查看控制台,可以看到,subnet id为subnet-08b88d4a329f823a9,名字为aws-cli-subnet01,cidr为10.0.1.0/24的子网已经创建

由于ALB(Application Load Balancer)必须设置多个可用区以确保高可用性和容错能力。如果一个可用区出现故障,流量会自动转发到其他可用区中的实例,从而保持服务可用性。这种配置能够减少单点故障的风险,提高应用的可靠性和稳定性。所以再来创建一个子网aws-cli-subnet02,cidr为10.0.2.0/24,可用区为us-west-1a

aws ec2 create-subnet \
--vpc-id vpc-0a3a6fd36df03aea6 \
--cidr-block 10.0.2.0/24 \
--availability-zone us-west-1a \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=aws-cli-subnet02}]'

查看所有子网信息

aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-0a3a6fd36df03aea6" --query "Subnets[*].[Tags[?Key=='Name'].Value | [0], SubnetId, CidrBlock]" --output table

-----------------------------------------------------------------

|                        DescribeSubnets                        |

+-------------------+----------------------------+--------------+

aws-cli-subnet02subnet-03dd42c387a0f3539  |  10.0.2.0/24 |

aws-cli-subnet01subnet-08b88d4a329f823a9  |  10.0.1.0/24 |

+-------------------+----------------------------+--------------+

3. 创建网关

创建网关

aws ec2 create-internet-gateway 

输出如下:

再来给起个名字,方便标识(可选)

aws ec2 create-tags --resources igw-0787503762feb666c --tags Key=Name,Value=aws-cli-igw

把网关附加到vpc

aws ec2 attach-internet-gateway --internet-gateway-id igw-0787503762feb666c --vpc-id vpc-0a3a6fd36df03aea6

这次我们通过aws 命令来查看网关和vpc附加信息

aws ec2 describe-internet-gateways --internet-gateway-ids igw-0787503762feb666c

输出如下:

4. 更新路由表

由于创建VPC 时,AWS 会自动创建一个默认的路由表

添加一条路由,将目标为 0.0.0.0/0 的流量指向您的 Internet Gateway,以便能够访问互联网。

查看路由表id

aws ec2 describe-route-tables --query 'RouteTables[*].[RouteTableId, VpcId]' --output table

输出如下:

列出来目前两个vpc id和其对应的路由表id

我这里只想查询刚才创建vpc vpc-0a3a6fd36df03aea6 的路由表ID

aws ec2 describe-route-tables --filters "Name=vpc-id,Values=vpc-0a3a6fd36df03aea6" --query 'RouteTables[*].[RouteTableId]' --output table
---------------------------
| DescribeRouteTables |
+-------------------------+
| rtb-094254eb8def0f2fc |
+-------------------------+

更新路由表

aws ec2 create-route --route-table-id rtb-094254eb8def0f2fc --destination-cidr-block 0.0.0.0/0 --gateway-id igw-0787503762feb666c
{
"Return": true
}

可用如下命令查询路由表详情

 aws ec2 describe-route-tables --route-table-ids rtb-094254eb8def0f2fc

5. 创建安全组

这里创建一个名为aws-cli-sg01,运行所有IP 地址连接22端口和ping的规则的安全组。

aws ec2 create-security-group --group-name aws-cli-sg01 --description "Security group for AWS CLI demo" --vpc-id vpc-0a3a6fd36df03aea6
输出:
{
"GroupId": "sg-0a986a2e312c0c947"
}

允许所有 IP 连接 22 端口

aws ec2 authorize-security-group-ingress --group-id sg-0a986a2e312c0c947 --protocol tcp --port 22 --cidr 0.0.0.0/0

运行所有ip访问80端口

aws ec2 authorize-security-group-ingress --group-id sg-0a986a2e312c0c947 --protocol tcp --port 80 --cidr 0.0.0.0/0

允许 ICMP(ping):

aws ec2 authorize-security-group-ingress --group-id sg-0a986a2e312c0c947 --protocol icmp --port -1 --cidr 0.0.0.0/0

查看安全组信息

aws ec2 describe-security-groups --filters "Name=group-name,Values=aws-cli-sg01"

只查看安全组id

aws ec2 describe-security-groups --filters "Name=group-name,Values=aws-cli-sg01" --query "SecurityGroups[*].GroupId" --output text
输出:
sg-0a986a2e312c0c947

转载请在文章开头著名原文地址:https://www.cnblogs.com/Sunzz/p/18432935

三、创建服务器

1. 创建密钥对

这里创建一个名为aws-cli-key的密钥对

 aws ec2 create-key-pair --key-name aws-cli-key --query 'KeyMaterial' --output text > aws-cli-key.pem

这将创建密钥对并将私钥保存到 aws-cli-key.pem 文件中。确保将此文件的权限设置为只读,以保护私钥:

chmod 400 aws-cli-key.pem

2. 创建ec2实例

aws ec2 run-instances \
--image-id ami-047d7c33f6e7b4bc4 \
--count 1 \
--instance-type t2.micro \
--subnet-id subnet-08b88d4a329f823a9 \
--security-group-ids sg-0a986a2e312c0c947 \
--key-name aws-cli-key \
--block-device-mappings "[{\"DeviceName\":\"/dev/xvda\",\"Ebs\":{\"VolumeSize\":10}}]" \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=aws-cli-ec2-instance}]' \
--associate-public-ip-address

查看ec2实例信息

aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--query "Reservations[*].Instances[*].[Tags[?Key=='Name'].Value | [0], InstanceId, State.Name, InstanceType, PublicIpAddress]" \
--output table

3. ssh登录ec2服务器

由于使用的是amazon linux,故而登录用户命为ec2-user

ssh -i aws-cli-key.pem  ec2-user@18.144.37.51

网络测试

可以看到可以ping通,说明安全组设置也符合预期。

4. 安装nginx

为后边创建alb做准备

sudo yum install nginx -y
sudo systemctl start nginx

转载请在文章开头著名原文地址:https://www.cnblogs.com/Sunzz/p/18432935

四、创建负载均衡alb

1. 创建目标组

首先,需要创建一个目标组,并将其配置为将流量转发到 EC2 实例的 80 端口。

aws elbv2 create-target-group \
--name aws-cli-target-group \
--protocol HTTP \
--port 80 \
--vpc-id vpc-0a3a6fd36df03aea6 \
--health-check-protocol HTTP \
--health-check-path / \
--output json

2. 注册目标

将你的 EC2 实例注册到目标组中:

aws elbv2 register-targets \
--target-group-arn arn:aws:elasticloadbalancing:us-west-1:xxxxxxxx:targetgroup/aws-cli-target-group/4c9f519307ef326f \
--targets Id=i-0ebebdb8eda7d10c9

--target-group-arn来自创建目标组输出的内容

--targets为关联的ec2

3.创建负载均衡器

aws elbv2 create-load-balancer \
--name aws-cli-load-balancer \
--subnets subnet-08b88d4a329f823a9 subnet-03dd42c387a0f3539 \
--security-groups sg-0a986a2e312c0c947 \
--scheme internet-facing \
--output json

4.创建监听器

创建一个监听器,将 ALB 的流量转发到目标组:

aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:us-west-1:xxxxxx:loadbalancer/app/aws-cli-load-balancer/2626f9962b63d4d5 \
--protocol HTTP \
--port 80 \
--default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-west-1:712368562757:targetgroup/aws-cli-target-group/4c9f519307ef326f

--load-balancer-arn 值来自上一步的输出

5. 检查 ALB 状态

使用以下命令查看 ALB 状态和:

aws elbv2 describe-load-balancers

查看DNS 名称:

aws elbv2 describe-load-balancers --names aws-cli-load-balancer --query "LoadBalancers[*].[DNSName]" --output table

-----------------------------------------------------------------

|                     DescribeLoadBalancers                     |

+---------------------------------------------------------------+

aws-cli-load-balancer-961374360.us-west-1.elb.amazonaws.com  |

+---------------------------------------------------------------+

6. 访问测试

更多详细信息和资源,请查看 AWS CLI 官方文档:AWS CLI Documentation

在本篇博客中,我们已经成功使用 AWS CLI 创建了 VPC、子网、安全组、互联网网关、EC2 实例和 ALB,整个过程犹如在云端进行了一次愉快的旅行。如果你对 AWS CLI 的其他功能感兴趣,欢迎在评论区留言,告诉我你想了解的内容!

记得常回来看看,云端的冒险永远不会停!

为什么用 AWS CLI?因为我懒得点鼠标!的更多相关文章

  1. AWS CLI使用s3

    aws CLI是什么东西,暂且先不去了解,目前的需求是s3. 我在Jenkins上创建一个bucket,然后申请access_key,然后就可以使用s3来存储数据了.也就是说,s3就是一个网盘. 1. ...

  2. [Notes] AWS Automation using script and AWS CLI

    (c) 2014 Amazon Web Services, Inc. and its afflialtes, All rights reserved. The content in this file ...

  3. AWS CLI 中使用S3存储

    登录 通过控制面板, 在S3管理器中创建一个新的bucket 所有AWS服务 -> 安全&身份 -> IAM -> 组, 创建一个新的组, 例如 "s3-user& ...

  4. 用aws cli 下载s3中数据到本地

    参考https://blog.csdn.net/DynastyRumble/article/details/76649120 1 首先注册AWS账户,绑定信用卡.一定要填写正确的手机,因为验证方式是它 ...

  5. AWS CLI以及AWS S3 SYNC命令行使用

    1.到AWS的IAM创建用户,并且获取到访问密钥 ID 和私有访问密钥.下载密钥并保存. 2.到http://docs.amazonaws.cn/cli/latest/userguide/instal ...

  6. aws cli command line interface的安装与使用

    安装 在centos中安装aws cli,安装依赖python,先装好python,然后按下述命令执行 yum install wget wget https://bootstrap.pypa.io/ ...

  7. 亚马逊s3存储: aws cli上传工具速度和各文件大小关系探究

    1,背景介绍 公司最近最近统一了存储环境,由ftp文件存储全量转换为ceph存储.有业务组表示以前往ftp文件批量上传30万个文件1.3GB只需要16分钟左右.切换为ceph存储需要1个多小时,也就是 ...

  8. AWS Switching to an IAM role (AWS CLI)

    一,引言 今天额外分享一篇 AWS 的技术内容,需要在 EC2 切换到跨账号 IAM 角色(AWS CLI).假设我们使用两个 AWS 账户,A账号,B账号.我们希望允许 A 账号用于 "i ...

  9. 关于aws cli命令的exit/return code分析

    最近总是收到一个备份脚本的失败邮件,脚本是之前同事写的,没有加入任何有调试信息,及有用的日志 于是去分析 ,脚本中有一条 aws s3 sync $srclocal  $dsts3 命令,然后根据这条 ...

  10. 关于在Linux上安装aws cli版本1的记录

    AWS Command Line Interface (AWS CLI) 是一种开源工具,让您能够在命令行 Shell 中使用命令与 AWS 服务进行交互. 因公司项目要求,要在Linux服务器安装a ...

随机推荐

  1. Oracle 删除大量表记录操作总结

    By:授客 QQ:1033553122 删除表数据操作 清空所有表记录 TRUNCATE TABLE your_table_name; 或者批量删除满足条件的表记录 BEGIN LOOP DELETE ...

  2. mybatis源码配置文件解析之五:解析mappers标签(解析class属性)

    在上篇文章中分析了mybatis解析mapper标签中的resource.url属性的过程,<mybatis源码配置文件解析之五:解析mappers标签(解析XML映射文件)>.通过分析可 ...

  3. java8interface的新特性:default,static,funcation

    default:默认方法 在类接口中可以直接定义的方法,实现接口的类可以直接使用 使用案例: public interface MyInterface { default void display() ...

  4. elasticsearch初步使用学习

    通过使用elasticsearch,我们可以加快搜索时间(直接使用SQL的模糊查询搜索耗时会比较久,而且elasticsearch的响应耗时与数据量关系不大) es主要用于存储,计算,搜索数据 依次部 ...

  5. python 返回实例对象个数

    python 返回实例对象个数 Python 没有提供任何内部机制来跟踪一个类有多少个实例被创建了,或者记录这些实例是些什么东西.如果需要这些功能,你可以显式加入一些代码到类定义或者__init__( ...

  6. 从.net开发做到云原生运维(六)——分布式应用运行时Dapr

    1. 前言 上一篇文章我们讲了K8s的一些概念,K8s真的是带来了很多新玩法,就像我们今天这篇文章的主角Dapr一样,Dapr也能在K8s里以云原生的方式运行.当然它也可以和容器一起运行,或者是CLI ...

  7. 英语词汇:simplistic和simple区别

    "Simplistic" 和 "simple" 都表示简单,但它们有不同的含义和语境: Simplistic: 含义: 过于简单化的,有贬义,表示忽略了复杂性或 ...

  8. 什么是智慧城市(Smart City)?

    Smart City是一个常见的概念,但是这个东西,这个名词到底指代的是什么却一直搞不太清,于是就查了查资料,有了这篇blog. 参考: https://baijiahao.baidu.com/s?i ...

  9. 深度学习框架Theano停止维护

    Theano停止开发的声明地址: https://groups.google.com/g/theano-users/c/7Poq8BZutbY/m/rNCIfvAEAwAJ 原文内容: Dear us ...

  10. EF Core 索引器属性(Indexer property)场景及应用

    EF Core 索引器属性(Indexer property)场景及应用 简介 EF Core 中的索引器属性(Indexer Property)是指通过一个特殊的属性来访问实体类中的数据,而不必明确 ...