AWS CDK 如何覆盖 Auto Scaling 组中的默认启动配置?
Posted
技术标签:
【中文标题】AWS CDK 如何覆盖 Auto Scaling 组中的默认启动配置?【英文标题】:AWS CDK How to override default launch configuration in auto scaling group? 【发布时间】:2020-03-31 07:55:34 【问题描述】:您好,我正在研究 AWS CDK。我正在创建 ECS。我已经创建了如下的自动伸缩组。
autoScallingGroup=asg.AutoScalingGroup(self, id = "auto scalling", vpc= vpc, machine_image=ecs.EcsOptimizedImage.amazon_linux(), desired_capacity=1, key_name="mws-location", max_capacity=1, min_capacity=1, instance_type=ec2.InstanceType("t2.xlarge"))
这也将生成默认启动配置。我想为这个 Auto Scaling 组编写自己的启动配置。
有人可以帮我解决这个问题吗?任何帮助,将不胜感激。谢谢
【问题讨论】:
【参考方案1】:在 CDK 中没有创建启动配置的特定结构。但是,您可以通过将参数传递给 aws_autoscaling.AutoScalingGroup 构造函数来构造一个。
您需要指定 AutoScalingGroup 类的以下属性:
角色 instance_type key_name machine_image 用户数据 associate_public_ip_address block_devices您还可以使用add_security_group()
函数添加安全组。
例如,如果您想将用户数据添加到 LaunchConfig:
userdata = ec2.UserData.for_linux(shebang="#!/bin/bash -xe")
userdata.add_commands(
"echo '======================================================='",
"echo \"ECS_CLUSTER=$MWSServiceCluster\" >> /etc/ecs/ecs.config"
)
asg = autoscaling.AutoScalingGroup(
self,
"asg-identifier",
...
user_data=userdata,
)
【讨论】:
谢谢。如何指定用户数据?我有这样的 userdata = 'Fn::Base64: !Sub | #!/bin/bash -xe echo "========================================= ===========================================" echo ECS_CLUSTER=$MWSServiceCluster > > /etc/ecs/ecs.config' 我需要创建 aws_cdk.aws_ec2.UserData 构造吗? 是的,我已经使用示例用户数据更新了我的答案。 嗨,在启动配置中,我有 ImageId(当我写云形成时)。这里怎么指定? machine_image = ec2.AmazonLinuxImage()。查看模块文档以获取一些示例:pypi.org/project/aws-cdk.aws-ec2以上是关于AWS CDK 如何覆盖 Auto Scaling 组中的默认启动配置?的主要内容,如果未能解决你的问题,请参考以下文章
AWS EC2 Auto Scaling 同步如何自动工作?