在这篇博客中,我们一起深入探索 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. Python 实时获取任务请求对应的Nginx日志

    需求描述 项目需求测试过程中,需要向Nginx服务器发送一些用例请求,然后查看对应的Nginx日志,判断是否存在特征内容,来判断任务是否执行成功.为了提升效率,需要将这一过程实现自动化. 实践环境 P ...

  2. js 做树形数组查询筛选功能

    对二级菜单进行搜索查询: watch: { librarySearch(val) { if(val == '') { this.libraryFiles = this.libraryFilesAll ...

  3. Kmesh v0.4发布!迈向大规模 Sidecarless 服务网格

    本文分享自华为云社区<Kmesh v0.4发布!迈向大规模 Sidecarless 服务网格>,作者: 云容器大未来. 近日 Kmesh 发布了 v0.4.0 版本,感谢社区的贡献者在两个 ...

  4. mybatisplus关于驼峰命名法与下划线的映射

    今天遇到一个很坑的事情,我在测试之前的案例的时候我有一个字段的名字是typeId,我调试之后发现插入出现了错误. 开启sql日志之后我发现mybatisplus自动把我的typeId改成type_id ...

  5. ChatGPT的作用(附示例)

    ChatGPT介绍(内容由ChatGPT生成) ChatGPT是一款基于GPT(生成式预测网络)的聊天机器人,它可以根据用户输入自动生成相应的回复. GPT是由OpenAI开发的一种预测网络模型,其中 ...

  6. RHCA cl210 013 制作镜像 轮转key rabbitmq追踪 写时复制 keystone多域登录图形界面

    undercloud 部署 overcloud overcloud控制节点上的组建rabbitmq 排错需要rabbitmq,开启追踪则会更详细,会消耗性能 环境问题 登录一下classroom os ...

  7. html2canvas截取专题图(包含地图)

    html2canvas截取专题图(包含地图) 问题:html2canvas截取地图时地图空白,报错: Unable to clone WebGL context as it has preserveD ...

  8. 【Mybatis + Spring】 Mybatis - Spring 结合

    环境搭建 EvBuild 软件环境准备 - MySQL 5.0 + - IDEA 2018 + - JDK1.8 + 依赖包相关 - Junit单元测试 - JDBC驱动 - Mybatis 组件 - ...

  9. 循环神经网络 —— LSTM 图片

  10. NVIDIA公司官宣最新最高性能的GPU芯片及平台 —— Blackwell GPU

    官宣视频: https://www.youtube.com/watch?v=bMIRhOXAjYk 相关: https://baijiahao.baidu.com/s?id=1793921686210 ...