我知道可以使用 CloudFormation 模板在 AWS 中启动新的EC2 实例并使用用户数据安装任何包。
但是有什么方法可以连接到现有实例并使用 CloudFormation 模板执行 shell 文件?
我知道可以使用 CloudFormation 模板在 AWS 中启动新的EC2 实例并使用用户数据安装任何包。
但是有什么方法可以连接到现有实例并使用 CloudFormation 模板执行 shell 文件?
如果您想在现有实例上执行此操作,并且您被迫使用 cloudformation。
您可以创建一个 SystemManager 文档以在具有 cloudformation 的实例上运行,即
document:
Type: AWS::SSM::Document
Properties:
Content:
schemaVersion: '2.2'
description: 'Run a script on Linux instances.'
parameters:
commands:
type: String
description: "(Required) The commands to run or the path to an existing script
on the instance."
default: 'echo Hello World'
mainSteps:
- action: aws:runShellScript
name: runCommands
inputs:
timeoutSeconds: '60'
runCommand:
- "{{ commands }}"
DocumentType: Command
Name: 'CFN_2.2_command_example'
遗憾的是,目前这在纯 CloudFormatoin 中是不可能的。要启用此功能,您必须在 CloudFormation 中开发 [自定义资源][1]。
该资源将采用lambda 函数的形式,该函数将使用 AWS SDK 在您的实例上运行SSM Run Command,前提是它已配置为与 SSM 一起使用。
或者,您可以使用Paraminko等工具从自定义资源中的 lambda 函数通过 ssh 连接到实例。