能否通过CloudFormation部署搭载新版AWS CLI的非过时EC2实例Cloud9?
如何通过CloudFormation部署适配新版AWS CLI的现代Cloud9环境
当然可以通过CloudFormation部署搭载更现代EC2实例的Cloud9环境,同时确保AWS CLI版本符合需求,这里提供两种核心方案:
1. 指定现代EC2实例类型与兼容的新版AMI
Cloud9默认实例配置老旧,首先可以在CloudFormation模板中直接指定更新的实例类型和最新的兼容AMI:
- 实例类型:替换默认的
t2.micro为更现代的类型,比如t3.medium或t3.large,这类实例性能更好,预装的基础环境更贴近当前标准。 - AMI选择:使用AWS SSM参数获取最新的Amazon Linux 2或Amazon Linux 2023 AMI(Cloud9对这两个系统兼容度最高),避免手动指定固定AMI ID导致后续过期。
示例CloudFormation资源片段:
Resources: DevCloud9Environment: Type: AWS::Cloud9::EnvironmentEC2 Properties: InstanceType: t3.medium # 引用最新Amazon Linux 2 AMI的SSM参数 ImageId: !Sub '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}' Description: 开发团队专用Cloud9环境(搭载新版AWS CLI) OwnerArn: !Sub arn:aws:iam::${AWS::AccountId}:role/DevTeamCloud9Role
如果偏好Amazon Linux 2023,只需替换SSM参数为:/aws/service/ami-amazon-linux-latest/amzn2023-ami-kernel-default-x86_64
2. 加入初始化脚本强制升级AWS CLI
即使使用新版实例,也可以通过CloudFormation的UserData字段注入初始化脚本,直接将AWS CLI升级到你需要的版本(比如官方推荐的2.9.1,或1系列最新的1.27.19):
示例更新后的资源片段,包含CLI升级脚本:
Resources: DevCloud9Environment: Type: AWS::Cloud9::EnvironmentEC2 Properties: InstanceType: t3.medium ImageId: !Sub '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}' Description: 开发团队专用Cloud9环境(搭载新版AWS CLI) OwnerArn: !Sub arn:aws:iam::${AWS::AccountId}:role/DevTeamCloud9Role UserData: Fn::Base64: | #!/bin/bash # 升级系统依赖 yum update -y # 卸载旧版AWS CLI yum remove -y aws-cli # 安装指定版本的AWS CLI v2(这里用2.9.1) curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.9.1.zip" -o "awscliv2.zip" unzip -q awscliv2.zip sudo ./aws/install # 清理临时文件 rm -rf awscliv2.zip aws # 验证版本 aws --version
注意事项
- 若使用Amazon Linux 2023,脚本中的
yum需替换为dnf,包管理命令略有差异。 - 实例类型选择需结合团队实际使用需求,平衡性能与成本。
- 确保Cloud9环境的IAM角色拥有足够权限执行脚本中的操作(比如网络下载等)。
两种方案结合使用效果最佳:用现代实例提供基础环境,再通过脚本强制锁定AWS CLI版本,能完全满足开发团队的初始配置需求。
内容的提问来源于stack exchange,提问作者Blunt Jackson
相关产品推荐
相关产品推荐

