在这篇博客中,我们一起深入探索 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. ABC362

    A link 判断即可... 点击查看代码 #include<bits/stdc++.h> using namespace std; int r,g,b; string c; signed ...

  2. CF1951

    A link 这个题就是讨论. 首先,如果没有\(1\)就一定可以. 如果有\(1\). 如果长度为\(2\)一定不行. \(1\)的个数为奇数不行. 如果为偶数 有一个小点:如果是\(2\)个\(1 ...

  3. 单细胞测序最好的教程(十六):关于RNA速率你想知道的都在这

    作者按 本章节详细讲解了基于RNA速率的三种拟时序模型,包括稳态模型,EM模型和深度学习模型,并对比了不同模型的适用场景与计算特点.本教程首发于单细胞最好的中文教程,未经授权许可,禁止转载. 全文字数 ...

  4. iframe嵌入svg图片动态更改文本样式并进行缩放等功能实现拓扑图

    好久没更了,近期开发遇到的需求,抽空梳理一下~ 需求:实现一个复杂的拓扑图,图中元素的个数,以及各个参数内容是动态展示的. 于是让ui提供了对应的svg图片. 解决思路:使用iframe嵌入svg图片 ...

  5. whk随记

    金刚烷,实际上是p4把磷换成碳,然后在每两个碳之间再加一个碳,氢再补齐,由于碳都是sp3杂化,所以画出来并不对称,但实际上是对称的,一氯代物只有两种,像p4o6一样,而p4o10实际上是每个磷外面再连 ...

  6. holiday week2

    本周进度总结: 本周完成了小学期内容 LOL打了近20把,rank几乎不变 平均每天用6h+在编程学习上,更进一步了解了C++,我相信我有更进一步的编程水平,可以编写更多的东西 JAVA还没开始学 别 ...

  7. golang轻量级的代码复制粘贴检查器 cpd

    golang轻量级的代码复制粘贴检查器 cpd 项目地址: https://github.com/dengjiawen8955/copy-paste-detector 快速开始 clone git c ...

  8. 映射lun

    环境 VMware1 网卡与 主机ping通 创建文件夹将文件解压进去 删除压缩包 创建虚拟机 下一步下一步,完成虚拟机 编辑虚拟机设置 否 账号密码 admin Admin@storage 等待 导 ...

  9. 7、SpringBoot2之整合事务及AOP

    本文在SpringBoot2之整合Mybatis的基础上进行 7.1.整合事务 7.1.1.mapper接口 int deleteEmployeeById(int id); 7.1.2.mapper映 ...

  10. 【Kotlin】官网学习笔记

    0.IDEA环境设置: 1.基础语法 BasicSyntax 地址:https://kotlinlang.org/docs/basic-syntax.html 一.方法与变量 可以直接编写main方法 ...