amazon-web-services - Cloudformation Init 的 Cloudformation 输出
问题描述
我有一个 CloudFormation 堆栈,如下所示,
"Metadata" : {
"AWS::CloudFormation::Init" : {
"config" : {
"/home/ec2-user/create_db_user.sh" : {
"source" :
"http://s3.amazonaws.com/devops/create_db_user.sh",
"mode" : "000755",
"owner" : "ec2-user"
}
}
...
在我需要将此初始化脚本输出设置到 cloudformation 堆栈之后,我需要在 EC2 实例启动时运行此命令。
我怎么能这样。
解决方案
派对有点晚了,但除了之前的答案......
AWS::CloudFormation::Init
无法通过 Cloudformation 访问 at EC2 实例创建的输出。
但是,在已启动的 EC2 实例上,您会发现AWS::CloudFormation::Init
(又名cfn-init
)和用户数据(cloud-init
)的日志。
在 Amazon Linux 上,其结构如下:
- /var/log/cfn-init-cmd.log:cfn-init 和带有时间戳的命令输出
- /var/log/cfn-init.log:cfn-init 和命令输出
- /var/log/cloud-init.log:与运行用户数据中的命令有关的云初始化日志
- /var/log/cloud-init-output.log:用户数据命令本身的输出
访问这些日志的最简单方法是将日志流式传输到 Cloudwatch Logs,这将使您能够按时间和内容搜索和过滤日志。还可以考虑使用 Cloudwatch Insights 进行搜索和过滤——它具有更全面、更易于理解的搜索、过滤甚至简单可视化(图表)语法。
鉴于您已经在使用 cfn-init,您可以在此处找到有关如何安装新的 Cloudwatch 代理(不是 Cloudwatch 日志代理!)的信息。使用 Cloudwatch 代理的好处是它还可以将自定义指标流式传输到 Cloudwatch 指标(例如内存使用情况、应用程序指标、数据库指标等)。
对于已经运行的 EC2 实例,请考虑查看cfn-hup
此处。
另一种方法是使用 SSM(系统管理器)按照此处的说明将代理推送到已运行的实例上。
推荐阅读
- cordova - IOS 的 Cordova 工具需要 Apple macOS
- regex - String.replace 函数返回非字符串输出
- php - 检查数据库的值,同时创建一个 foreach 循环复选框
- metpy - Stationplot barbs 因 AttributeError 而失败:“list”对象没有属性“shape”
- reactjs - 如何将 toMatchSnapshot 与酶一起使用,因此结果类似于带有 react-testing-library 的 container.firstChil
- java - Java 日历没有得到正确的星期几
- java - 为什么在 Effective Java 中推荐使用静态方法?
- python-3.x - 使用 configparser 导入系统路径不起作用
- android - 反应本机linkedin登录正在重定向到url
- javascript - 从数组中删除所有具有特征 X 的元素,除了最新的