首页 > 解决方案 > 通过 CDK 在需要的包中配置 EC2 机器

问题描述

是否可以使用所需的软件包在 CDK 中初始化 EC2 机器?还是唯一的方法是先创建它然后安装所需的软件包?

感谢您的回答和提示,

标签: amazon-ec2aws-cdk

解决方案


UserData可以运行cfn-init脚本,该脚本将下拉从 CloudFormation 传入的元数据,在 CDK 中,这可以通过CloudFormationInit类在一个对象中完成

来自 CDK 文档 - https://docs.aws.amazon.com/cdk/api/latest/docs/aws-ec2-readme.html#configuring-instances-using-cloudformation-init-cfn-init

将 init 参数添加到您的 aws_ec2.Instance 定义中(类似于 python)

aws_ec2.Instance(self, scope, ...
  init=aws_ec2.CloudFormationInit.from_config_sets(
    config_sets={'default': ['init']},
    configs={
      'init': aws_ec2.InitConfig([
         aws_ec2.InitPacakge.python(package_name='boto3'),
         aws_ec2.InitFile.from_asset('/usr/local/myscript.sh', 'scripts/myscript.sh')
      ])          
    }
  ), ...
)

这将导致 EC2 实例在 UserData 部分自动具有适当的 cfn-init 脚本,并将scripts/myscript.sh加载到安装了boto3 python 包的实例中。

有关AWS::CloudFormation::Init的更多信息- https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-init.html


推荐阅读