1

我看到它现在可以创建SSM协会(S)自举EC2实例:CloudFormation LaunchConfiguration SSM协会

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-document.html

,但我没有看到暴露在启动配置类似的属性...

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html

然而这是不可能的,还是有越来越SSM协会的方式自动添加到通过一个启动配置推出EC2实例?

回答

3

一种解决方案是在每个实例启动时直接调用CreateAssociation API。您可以使用Auto Scaling Event来调用Lambda函数,或者(可能更简单)将shell脚本行添加到启动配置的UserData中,该行通过AWS CLI(aws ssm create-association)调用API,通过instance metadata检索当前正在运行的实例ID:

aws ssm create-association \ 
    --name mySSMDocumentName \ 
    --instance-id $(curl http://169.254.169.254/latest/meta-data/instance-id) 

您需要提供启动配置与IAM实例配置文件“SSM:CreateAssociation”的权限,并且还提供了AWS CLI与当前区域(无论是出口到AWS_DEFAULT_REGION环境变量,或者以显式--region参数。)

+0

是的,但我希望有东西内置 – Jeff

+0

具体而言,对于我来说这是一个答案,我需要能够提供EC2实例可以将其自身关联到哪些特定的SSM文档。如果SSM文档本身是在与实例配置文件,角色和启动配置相同的模板中创建的,则会变成鸡或蛋类游戏。基本上,我需要一种方法来说明,在这个LaunchConfiguration中的EC2实例可以自己执行SSM关联......但仅限于作为堆栈一部分的这一个SSM文档。此外,我不能让堆栈的启动器拥有创建新策略的全部权利。 – Jeff

+0

要将权限限制为单个SSM文档,请在实例配置文件的实例配置文件策略定义中的“Resource”元素的值中将'*'替换为'arn:aws:ssm:region:account-id:document/document_name', ssm:CreateAssociation'行动。如果您不想让堆栈启动器创建新的IAM策略权限,则可以在单独的堆栈中或通过AWS控制台创建策略,然后输入实例配置文件的ARN('arn:aws:iam :: account:instance -profile/instance-profile-name')直接在你的LaunchConfiguration中。 – wjordan