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 和 Auto Scaling cassandra

AWS Auto Scaling 组源服务器

AWS EC2 Auto Scaling 同步如何自动工作?

如何覆盖 AWS CDK 中的资源?

如何在 AWS EC2 上为 Rancher 和 Kubernetes 集群做 Auto Scaling?

amazon aws Auto Scaling 组实例名称标签