ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

aws-cli 实战指南:使用 `aws autoscaling create-launch-configuration` 创建启动配置(9 个实用示例)

aws-cli 实战指南:使用 `aws autoscaling create-launch-configuration` 创建启动配置(9 个实用示例) aws-cli 实战指南使用aws autoscaling create-launch-configuration创建启动配置9 个实用示例【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli导读create-launch-configuration是 AWS CLI 中用于创建 Auto Scaling 启动配置Launch Configuration的核心命令。启动配置定义了 Auto Scaling 组自动扩容时新启动 EC2 实例的模板包括 AMI、实例类型、安全组、密钥对、用户数据、IAM 角色、监控级别、Spot 价格与块设备映射等。本文以 aws-cli 仓库中 create-launch-configuration.rst 官方示例文档为主线完整继承其 9 个实战示例并结合作者仓库中 service-2.json 的 API 模型定义与 paramfile.py 源码深入讲解每个参数的取值、默认值与底层行为帮助你从命令行层面全面掌握启动配置的创建、验证与最佳实践。前提说明启动配置是 Auto Scaling 的老一代实例模板方案。从 service-2.json 的 API 文档描述可见AWS 官方强烈建议新项目优先使用启动模板Launch Template因为它支持 Auto Scaling 与 EC2 的完整功能。本文所有示例命令在 AWS CLI 环境中均可直接运行。一、命令基础语法、必需参数与无输出行为1.1 底层 API 与参数模型该命令对应 Auto Scaling API 的CreateLaunchConfiguration操作POST 请求。从 service-2.json 中的CreateLaunchConfigurationType结构定义看唯一必需参数LaunchConfigurationName启动配置名称在每个 Region 内对每个账户唯一该操作可能抛出三类错误AlreadyExistsFault同名配置已存在、LimitExceededFault超出账户启动配置配额上限、ResourceContentionFault资源竞争。1.2 命令成功时无输出与原文档中所有示例的说明一致该命令成功执行时不产生任何标准输出。这是 AWS CLI 的常规行为——异步/幂等型创建类命令默认静默成功。因此执行后建议通过describe-launch-configurations验证见文末。1.3 最小可用命令原文档示例 1 给出了最简形态只需名称、AMI 与实例类型三个参数aws autoscaling create-launch-configuration \ --launch-configuration-name my-lc \ --image-id ami-04d5cc9b88example \ --instance-type m5.large从 API 模型看ImageId与InstanceType并非强制必填——如果指定了InstanceId基于已有实例创建则两者均可省略。但作为通用实践建议始终显式给出避免依赖实例派生属性的不确定性。二、创建带安全组、密钥对与引导脚本的启动配置这是生产环境中最常见的组合用法。原文档示例 2 同时演示了三类参数aws autoscaling create-launch-configuration \ --launch-configuration-name my-lc \ --image-id ami-04d5cc9b88example \ --instance-type m5.large \ --security-groups sg-eb2af88example \ --key-name my-key-pair \ --user-data file://myuserdata.txt2.1 各参数说明参数说明底层 API 字段--security-groups分配给组内实例的安全组 ID 列表注意传的是 ID 而非名称SecurityGroups--key-name用于 SSH 登录的 EC2 密钥对名称KeyName--user-data实例启动时执行的用户数据引导脚本UserData2.2file://前缀的底层机制--user-data file://myuserdata.txt中的file://前缀是 AWS CLI 的参数文件加载机制。在 paramfile.py 源码中可以看到该机制的实现CLI 会识别file://前缀并调用get_file以文本模式读取文件内容作为参数值对于二进制文件则需使用fileb://前缀。这意味着无需手动 base64 编码API 模型的UserData字段文档明确指出使用命令行工具时 base64 编码由 CLI 自动完成你只需用file://从文本文件加载内容即可大小限制用户数据上限为 16 KB如果脚本内容较短也可以直接以普通字符串内联传入但file://方式更利于脚本的可维护性与转义处理。2.3 引导脚本示例myuserdata.txt 内容参考#!/bin/bash yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo Hello from Auto Scaling instance $(hostname -f) /var/www/html/index.html三、为启动配置绑定 IAM 角色原文档示例 3 演示了如何让扩容出的实例自动获得 IAM 权限aws autoscaling create-launch-configuration \ --launch-configuration-name my-lc \ --image-id ami-04d5cc9b88example \ --instance-type m5.large \ --iam-instance-profile my-autoscaling-role3.1--iam-instance-profile参数要点对应 API 字段IamInstanceProfile可接受实例配置文件名称或 ARN实例配置文件Instance Profile是 IAM 角色的容器实例启动后会以临时凭证形式获得该角色权限供实例内应用调用 S3、DynamoDB 等 AWS 服务常见实践先创建 IAM 角色 → 将角色附加到实例配置文件同名→ 在此处传入配置文件名称。官方示例文档 create-launch-configuration.rst 中的my-autoscaling-role即为角色名与配置文件同名的情况examples-1.json 中官方注册的示例还提供了含IamInstanceProfile、SecurityGroups组合的完整输入样例可作为参考。四、启用 EC2 详细监控CloudWatch 指标粒度原文档示例 4 通过--instance-monitoring控制监控级别aws autoscaling create-launch-configuration \ --launch-configuration-name my-lc \ --image-id ami-04d5cc9b88example \ --instance-type m5.large \ --instance-monitoring Enabledtrue4.1 监控粒度的成本权衡API 模型对InstanceMonitoring字段有明确说明这里有几个关键事实需要掌握默认值为true详细监控已启用CloudWatch 每 1 分钟生成一次指标会产生额外费用设为false时CloudWatch 每 5 分钟生成一次指标详细监控对需要快速响应伸缩告警的场景如基于 CPU 利用率的扩展策略有实际价值但需自行评估成本CLI 语法为结构体形式Enabledtrue等价于 JSON 形式{Enabled: true}。五、创建纯 Spot 实例的启动配置原文档示例 5 演示了如何让 Auto Scaling 组只使用 Spot 实例aws autoscaling create-launch-configuration \ --launch-configuration-name my-lc \ --image-id ami-04d5cc9b88example \ --instance-type m5.large \ --spot-price 0.505.1--spot-price参数细节对应 API 字段SpotPrice含义是愿意为每个 Spot 实例支付的最高小时价格有效范围为最小值 0.001美元/小时当你的出价高于当前 Spot 市场价格时Spot 实例才会被启动出价被超出后实例可能被回收指定该参数后该启动配置将仅以 Spot 作为购买选项不混合按需实例注意修改最高价需要新建启动配置启动配置不可变且正在运行的实例会继续运行只要其当前最高价仍高于当时 Spot 价格。六、基于已有 EC2 实例创建启动配置原文档示例 6 展示了从运行中的实例克隆配置的能力并演示了两个覆盖参数aws autoscaling create-launch-configuration \ --launch-configuration-name my-lc-from-instance \ --instance-id i-0123a456700123456 \ --instance-type m5.large \ --no-associate-public-ip-address \ --placement-tenancy dedicated6.1 派生规则与覆盖行为指定InstanceId后启动配置会从该实例派生 AMI、实例类型等属性但块设备映射不会自动派生如需自定义块设备映射或覆盖其他实例属性须在同一请求中显式指定对应示例 7/8/9示例中--no-associate-public-ip-address是布尔参数的取反写法等价于--associate-public-ip-address false即禁止 Auto Scaling 为实例分配公网 IPv4--placement-tenancy dedicated将实例置于单租户硬件dedicated tenancy只能启动到 VPC 中合法值为default或dedicated联动条件API 模型指出一旦指定了AssociatePublicIpAddress或PlacementTenancy创建 Auto Scaling 组时必须同时指定VPCZoneIdentifier至少一个子网。七、块设备映射EBS 卷、实例存储卷与设备抑制块设备映射Block Device Mapping决定实例启动时挂载哪些块设备。原文档示例 7、8、9 分别演示了三种典型场景均以 JSON 数组形式传给--block-device-mappings。7.1 示例 7附加一个 EBS gp3 数据卷aws autoscaling create-launch-configuration \ --launch-configuration-name my-lc \ --image-id ami-04d5cc9b88example \ --instance-type m5.large \ --block-device-mappings [{DeviceName:/dev/sdh,Ebs:{VolumeSize:20,VolumeType:gp3}}]要点DeviceName为设备挂载点如/dev/sdhEbs.VolumeSize为卷大小GiB示例为 20Ebs.VolumeType为卷类型如gp3、gp2、io1等若需加密、IOPS 等高级属性可在Ebs对象内继续扩展如Encrypted:true。7.2 示例 8附加实例存储卷Ephemeralaws autoscaling create-launch-configuration \ --launch-configuration-name my-lc \ --image-id ami-04d5cc9b88example \ --instance-type m5.large \ --block-device-mappings [{DeviceName:/dev/sdc,VirtualName:ephemeral1}]要点VirtualName: ephemeral1表示使用实例存储临时存储卷数据不持久实例停止/终止后数据丢失并非所有实例类型都提供实例存储需与所选实例类型匹配。7.3 示例 9抑制 AMI 默认块设备NoDeviceaws autoscaling create-launch-configuration \ --launch-configuration-name my-lc \ --image-id ami-04d5cc9b88example \ --instance-type m5.large \ --block-device-mappings [{DeviceName:/dev/sdf,NoDevice:}]要点AMI 自带块设备映射默认会被继承对应 API 文档默认使用 AMI 块设备映射当需要阻止某个设备在启动时挂载时用NoDevice:明确抑制例如示例中抑制/dev/sdf这一机制常用于避免 AMI 中多余数据卷被意外挂载。7.4 JSON 引号规范重要三个示例都以内联 JSON 字符串传递原文档特别提示了引号规则JSON 属性名与字符串值需使用双引号整个 JSON 需用单引号包裹避免与 shell 冲突。若 JSON 较复杂更推荐使用file://mapping.json方式从文件加载机制同 2.2 节既规避转义问题又便于复用。八、创建后的验证与常见错误排查8.1 验证命令由于创建命令静默无输出推荐创建后执行# 查看指定启动配置 aws autoscaling describe-launch-configurations \ --launch-configuration-names my-lc # 列出全部启动配置可加 --max-items 分页 aws autoscaling describe-launch-configurations输出中包含名称、AMI、实例类型、创建时间、安全组、密钥对、Spot 价格、块设备映射等完整属性可与预期一一核对。对应示例文档位于 describe-launch-configurations.rst。8.2 常见错误与对策报错场景原因对策AlreadyExistsFault同一 Region 内配置名重复换名或先执行 delete-launch-configuration.rst 删除旧配置LimitExceededFault超出账户启动配置配额调用describe-account-limits查看配额并清理无用配置公网 IP/租期参数被忽略创建 Auto Scaling 组时未指定子网创建组时通过--vpc-zone-identifier指定至少一个子网8.3 清理与生命周期提示启动配置创建后不可修改无 update 操作任何变更都需要新建配置。确认不再使用后应及时删除aws autoscaling delete-launch-configuration --launch-configuration-name my-lc九、总结启动配置 vs 启动模板综合原文档与 service-2.json 中的 API 文档声明可以给出以下结论本命令价值create-launch-configuration仍是管理存量 Auto Scaling 基础设施、理解实例模板参数模型的重要命令行工具上述 9 个示例覆盖了安全、身份、监控、成本Spot、存储EBS/实例存储与网络公网 IP、租期六大维度的配置AWS 官方立场官方 API 文档明确强烈建议不要使用启动配置因为它们无法提供 Auto Scaling 与 EC2 的完整功能如混合实例策略、版本化模板等新项目应使用启动模板迁移思路如果项目正从启动配置迁移可先通过describe-launch-configurations导出当前参数再映射为启动模板的等价字段最后更新 Auto Scaling 组的--launch-template引用。无论选择哪种方案理解本文的参数模型默认值、联动条件、引号规范、静默输出行为都能帮助你在命令行层面做出正确、可复现的配置决策。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表