在 Parameter Store 中为 Amazon Machine Image ID 使用本机参数支持
创建 String
参数时,您可以将数据类型指定为 aws:ec2:image
,以确保所输入的参数值为有效的 Amazon Machine Image (AMI) ID 格式。
通过支持 AMI ID 格式,您可以避免每次要在流程中使用的 AMI 发生更改时都使用新 ID 来更新所有脚本和模板。您可以创建数据类型为 aws:ec2:image
的参数,并输入 AMI ID 作为其值。这是您要从中创建新实例的 AMI。然后在模板、命令和脚本中引用此参数。
例如,您可以在运行 Amazon Elastic Compute Cloud (Amazon EC2) run-instances
命令时指定包含首选 AMI ID 的参数。
注意
运行此命令的用户必须具有包含 ssm:GetParameters
API 操作的 Amazon Identity and Access Management (IAM) 权限,才能验证参数值。否则,参数创建过程将失败。
您也可以在使用 Amazon EC2 控制台创建实例时选择首选 AMI。有关更多信息,请参阅《Amazon EC2 用户指南》中的使用 Systems Manager 参数查找 AMI。
当在实例创建工作流中使用其他 AMI 时,您只需使用新的 AMI 值更新参数即可,然后 Parameter Store 会再次验证您所输入 ID 的格式是否正确。
授予创建 aws:ec2:image
数据类型参数的权限
使用 Amazon Identity and Access Management (IAM) 策略,您可以提供或限制用户对 Parameter Store API 操作和内容的访问权限。
要创建 aws:ec2:image
数据类型参数,用户必须同时拥有 ssm:PutParameter
和 ec2:DescribeImages
权限。
以下示例策略授予用户为 aws:ec2:image
调用 PutParameter
API 操作的权限。因此,用户可以向系统添加数据类型为 aws:ec2:image
的参数。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:PutParameter", "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:DescribeImages", "Resource": "*" } ] }
AMI 格式验证的工作原理
在将 aws:ec2:image
指定为参数的数据类型时,Systems Manager 不会立即创建参数。而是执行异步验证操作,以确保参数值满足 AMI ID 的格式设置要求,并且指定的 AMI 在您的 Amazon Web Services 账户中可用。
在验证操作完成之前,可能会生成参数版本号。即使生成了参数版本号,操作也可能无法完成。
要监控参数是否已成功创建,我们建议使用 Amazon EventBridge 向您发送有关 create
和 update
参数操作的通知。这些通知会报告参数操作是否成功。如果操作失败,通知会包含一条错误消息,指出失败的原因。
{ "version": "0", "id": "eed4a719-0fa4-6a49-80d8-8ac65EXAMPLE", "detail-type": "Parameter Store Change", "source": "aws.ssm", "account": "111122223333", "time": "2020-05-26T22:04:42Z", "region": "us-east-2", "resources": [ "arn:aws:ssm:us-east-2:111122223333:parameter/golden-ami" ], "detail": { "exception": "Unable to Describe Resource", "dataType": "aws:ec2:image", "name": "golden-ami", "type": "String", "operation": "Create" } }
有关在 Eventbridge 中订阅 Parameter Store 事件的信息,请参阅 基于 Parameter Store 事件设置通知或触发操作。