[AWS] 使用 AWS CLI 快速创建自动缩放!

目录
你好。
我是Mandai,负责Wild 开发团队。
在使用 AWS 自动扩展时,您可能需要在开发过程中以及运维开始后创建启动设置、自动扩展组和其他任务。
从 AWS 控制台重复执行这些步骤既耗时又容易导致疏漏。
AWS 有一个名为 AWS CLI 的命令行工具,因此一旦创建完成,就可以快速、安全、可靠地创建它。
这类内容已经泛滥成灾,很难说之前有多少人做过,但事实就是如此。这就是它。那么,让我们开始吧!
自动缩放启动设置和自动缩放组
要实现自动扩缩容,您必须首先创建一个启动配置作为模板。
此时,您需要注册 AMI,但一旦创建了启动配置,就无法更改。
换句话说,如果您忘记在 AMI 中包含必需的命令,或者用户数据或环境设置发生更改,则需要重新创建启动配置。
如果启动设置发生更改,则还需要根据新的启动设置重新创建自动伸缩组,因此最好一次性完成所有操作。
当您从 Amazon Linux 提供的 AMI 启动实例时,以 aws 开头的命令会自动安装,但在其他 AMI 或本地环境中,您需要自行安装这些命令。
“安装和配置 AWS CLI - Amazon Kinesis Streams” ,请使用适合您操作系统的方法进行安装。
“aws autoscaling create-launch-configuration”命令用于创建自动扩展启动配置。
要创建自动扩展启动配置,请使用“aws autoscaling create-launch-configuration”命令。
如果您不确定如何使用该命令或有哪些可用选项,可以通过运行“aws autoscaling create-launch-configuration help”(英文)来查看选项列表。
有些选项是必填项,因此基本格式如下:
aws autoscaling create-launch-configuration \ --launch-configuration-name [启动配置的名称] \ --image-id [要使用的 AMI 的 AMI ID] \ --security-groups [要应用的安全组列表] \ --instance-type [要启动的 EC2 实例类型]
上述命令本身并没有什么特别需要注意的地方,但在设置安全组时,需要列出多个以空格分隔的“sg-xxxxxxx”。
如果您正在使用 bash 创建 shell 脚本,可以按如下方式操作。
sg=( "sg-xxxxxxx1" "sg-xxxxxxx2" "sg-xxxxxxx3" ) aws autoscaling create-launch-configuration \ --launch-configuration-name hogehoge \ --image-id ami-xxxxxxxx \ --security-groups ${sg[@]} \ --instance-type t2.micro
由于通常会注册多个安全组,如果将它们组织成一个数组,则可以通过简单的部署轻松管理它们。
由于环境通常构建在多可用区 (AZ) 环境中,因此最好以相同的方式列出可用区,如下所示。
az=( "ap-northeast-1c" "ap-northeast-1a" )
使用“--user-data”选项可以在启动配置中指定用户数据
启动启用自动扩缩容的 EC2 实例时,通常会使用用户数据进行初始配置。
用户数据会在创建启动配置时注册,因此如果用户数据发生任何更改,则需要重新创建启动配置。考虑到需要多次尝试才能确保其按预期运行,自动化此过程可能更为理想。
从 AWS CLI 在启动配置中注册用户数据时,除了上述基本格式外,还必须使用“--user-data”选项指定一个文件。
aws autoscaling create-launch-configuration \ --launch-configuration-name [启动配置的名称] \ --image-id [要使用的 AMI 的 AMI ID] \ --security-groups [要应用的安全组列表] \ --instance-type [要启动的 EC2 实例类型] \ --user-data "file:///path/to/user-data.sh"
用户数据可以指定为本地文件。
如果在“file://”后添加绝对路径,例如“/path/to/user-data.sh”,AWS CLI 将尝试从运行 AWS CLI 的计算机上的相应路径检索该文件。
如果您指定一个没有斜杠(两个斜杠)的路径,例如“file://user-data.sh”,它将尝试从当前目录中检索该文件。
从帮助文档中可以看到,AWS 控制台中可以选择使用 base64 进行注册,但通过 CLI,您可以直接指定文件路径。
使用“aws autoscaling create-auto-scaling-group”命令创建自动伸缩组
创建启动配置后,创建自动伸缩组。
如果按如下方式创建启动配置:
aws autoscaling create-launch-configuration \ --launch-configuration-name my-test-lc \ --image-id ami-123123 \ --security-groups sg-xyzxyz \ --instance-type t2.large
创建自动缩放组的命令如下:
aws autoscaling create-auto-scaling-group \ --auto-scaling-group-name my-test-asg \ --launch-configuration-name my-test-lc \ --min-size 2 \ --max-size 4 \ --desired-capacity 2 \ --target-group-arns "arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxxxxxx:targetgroup/hogehoge-group/1234567890abcdef" --availability-zones "ap-northeast-1c" "ap-northeast-1a" \ --vpc-zone-identifier "subnet-aaaaaaaa,subnet-bbbbbbbb"
上述命令,
- 自动缩放组的名称是“my-test-asg”。
- 自动缩放组中使用的启动设置名称为“my-test-lc”。
- 最小数量为 2 个单位
- 最大尺寸为 4 个单位
- 所需实例数:2
- 目标组 ARN 为“arn:aws:elasticloadbalancing:...”
- 使用的可用区为“ap-northeast-1c”和“ap-northeast-1a”。
- VPC 子网为“subnet-aaaaaaaa”和“subnet-bbbbbbbb”。
VPC 设置以逗号分隔,这让人有些困惑,但事实就是如此,所以你只能记住它。
另外,由于这次我们选择了两个可用区,因此最初的两台机器应该位于不同的可用区中。
尝试设置一下
使用 AWS 控制台,您需要点击选择各种项目,如果您忘记勾选某些选项,则可能无法正常工作,这可能会有点麻烦,但一旦设置好,您应该能够创建基本相同的内容,因此您可以随心所欲地重新创建 AMI 并验证用户数据。
说实话,我觉得如果你不用它,那就纯粹是在浪费时间。
可以通过与 SQS 连接来自动执行此类处理,但如果您做得太复杂,可能会偏离您的目的,所以要小心。
就是这样。
0