amazon-ec2 - 通过 CDK 在需要的包中配置 EC2 机器
问题描述
是否可以使用所需的软件包在 CDK 中初始化 EC2 机器?还是唯一的方法是先创建它然后安装所需的软件包?
感谢您的回答和提示,
解决方案
UserData可以运行cfn-init脚本,该脚本将下拉从 CloudFormation 传入的元数据,在 CDK 中,这可以通过CloudFormationInit类在一个对象中完成
将 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
推荐阅读
- r - 将机场代码转换为完整的机场名称
- javascript - 如何通过单击按钮更改彩色框的不透明度?
- ios - Xcode中的iOS自定义标签栏事件
- php - 意外聊天过滤器输出
- c++ - 如何让派生类对象访问基类的值?
- javascript - javascript DOM元素更改后将php变量插入数据库
- lua - 如何将具有多个元素和子元素的字符串拆分为Lua中的表格
- git - 如何在不提交的情况下获取 git 日志
- python - 如何在 PyQt5 中制作嵌套的 StackedLayouts?
- c# - C# FileSystemEventHander 不会从 FileSystemWatcher 触发