为什么用 AWS CLI?因为我懒得点鼠标!
在这篇博客中,我们一起深入探索 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-subnet02 | subnet-03dd42c387a0f3539 | 10.0.2.0/24 |
| aws-cli-subnet01 | subnet-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?因为我懒得点鼠标!的更多相关文章
- AWS CLI使用s3
aws CLI是什么东西,暂且先不去了解,目前的需求是s3. 我在Jenkins上创建一个bucket,然后申请access_key,然后就可以使用s3来存储数据了.也就是说,s3就是一个网盘. 1. ...
- [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 ...
- AWS CLI 中使用S3存储
登录 通过控制面板, 在S3管理器中创建一个新的bucket 所有AWS服务 -> 安全&身份 -> IAM -> 组, 创建一个新的组, 例如 "s3-user& ...
- 用aws cli 下载s3中数据到本地
参考https://blog.csdn.net/DynastyRumble/article/details/76649120 1 首先注册AWS账户,绑定信用卡.一定要填写正确的手机,因为验证方式是它 ...
- AWS CLI以及AWS S3 SYNC命令行使用
1.到AWS的IAM创建用户,并且获取到访问密钥 ID 和私有访问密钥.下载密钥并保存. 2.到http://docs.amazonaws.cn/cli/latest/userguide/instal ...
- aws cli command line interface的安装与使用
安装 在centos中安装aws cli,安装依赖python,先装好python,然后按下述命令执行 yum install wget wget https://bootstrap.pypa.io/ ...
- 亚马逊s3存储: aws cli上传工具速度和各文件大小关系探究
1,背景介绍 公司最近最近统一了存储环境,由ftp文件存储全量转换为ceph存储.有业务组表示以前往ftp文件批量上传30万个文件1.3GB只需要16分钟左右.切换为ceph存储需要1个多小时,也就是 ...
- AWS Switching to an IAM role (AWS CLI)
一,引言 今天额外分享一篇 AWS 的技术内容,需要在 EC2 切换到跨账号 IAM 角色(AWS CLI).假设我们使用两个 AWS 账户,A账号,B账号.我们希望允许 A 账号用于 "i ...
- 关于aws cli命令的exit/return code分析
最近总是收到一个备份脚本的失败邮件,脚本是之前同事写的,没有加入任何有调试信息,及有用的日志 于是去分析 ,脚本中有一条 aws s3 sync $srclocal $dsts3 命令,然后根据这条 ...
- 关于在Linux上安装aws cli版本1的记录
AWS Command Line Interface (AWS CLI) 是一种开源工具,让您能够在命令行 Shell 中使用命令与 AWS 服务进行交互. 因公司项目要求,要在Linux服务器安装a ...
随机推荐
- Python 按比例获取样本数据或执行任务
按比例获取样本数据或执行任务 By:授客 QQ:1033553122 开发环境 win 10 python 3.6.5 需求 已知每种分类的样本占比数,及样本总数,需要按比例获取这些分类的样本.比如, ...
- Superviso可视化监控进程
如果您需要同时运行多个 ThinkPHP 命令,可以在 Supervisor 中为每个命令创建一个单独的程序段.以下是示例配置,其中包含两个 ThinkPHP 命令:command1.php 和 co ...
- (六)Redis 消息队列 List、Streams
Redis 适合做消息队列吗?有什么解决方案?首先要明白消息队列的消息存取需求和工作流程. 1.消息队列 我们一般把消息队列中发送消息的组件称为生产者,把接收消息的组件称为消费者,下图是一个通用的消息 ...
- Jmeter函数助手16-StringFromFile
StringFromFile函数用于获取文本文件的值,一次读取一行,可读取多个文件. 输入文件的全路径:填入文件路径 存储结果的变量名(可选) Start file sequence number ( ...
- 【MQTT】Mosquitto 入门案例
参考博主StoneGeek的文章 https://www.cnblogs.com/sxkgeek/p/9140180.html 之前接触的是在应用程序之间的消息中间件技术 RabbitMQ, Kafk ...
- 国产芯片 —— 2023年龙芯最新的 3A6000 确实已经追上 2020年发布的 10代 i3酷睿 四核处理器
看新闻: https://news.cnblogs.com/n/752564/ 首先,龙芯3A6000已经有了i3酷睿10代的水平,这是十分可喜可贺的,可以说这个CPU的性能已经是国产CPU的天花板了 ...
- Linux的netns使用总结
转载请注明出处: Linux的netns(Network Namespace)是Linux内核提供的一项强大的网络隔离功能,它能够创建多个独立的网络空间,每个空间都拥有自己独立的网络协议栈,包括网络接 ...
- Ambiguous Mapping 的处理方法
出现原因:两个不同的Controller 中出现相同映射路径 eg: AController:/v1/wdnmd/userList/list BController:/v1/wdnmd/userLis ...
- How-many
#include <bits/stdc++.h> #include <termio.h> #include <unistd.h> typedef long long ...
- JMESPath 使用
最近在学习使用 AWS CLI,经常要用到 query 功能.AWS CLI 使用的查询语法是 JMESPath,因此特地在这里记录常用的 JMESPath 语法. JMESPath 是一种查询语言, ...