为什么用 AWS CLI?因为我懒得点鼠标!

简介: 为什么用 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,你随意了

  1. 设置权限

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

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

  1. 查看和创建

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

可以看到已经提示创建成功
参考文献:beuya.xinmi1009fan.com

  1. 创建密钥

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

点击用户名称

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

选择第一个即可

设置标签

我这里还是使用aws-cli

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

参考文献:zpgh.azvii.com

  1. 配置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配置正确。

转载请在文章开头著名原文地址:rmds.back2myself.com

二、网络配置

  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 |

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

  1. 创建网关
    创建网关

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

输出如下:

  1. 更新路由表

由于创建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

  1. 创建安全组

这里创建一个名为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

  1. 创建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

  1. ssh登录ec2服务器

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

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

网络测试

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

  1. 安装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

  1. 注册目标

将你的 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 值来自上一步的输出

  1. 检查 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 |

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

  1. 访问测试

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

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

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

相关文章
|
24天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
17天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
4天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
1天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
241 12
|
19天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
21天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2579 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
3天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
169 2
|
1天前
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
101 65
|
21天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1578 16
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
4天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
256 2