我有一个打包的.json文件,它管理几个不同AMI版本的构建/供应。每个AMI之间的差异是通过将不同的base-config.json变量集传递给打包程序来配置的,这取决于正在更改的内容(例如,我有一个base_config-us-west-1.json和base_config-us-east-2.json,并选择一个,以填充vpc_id、subnet_id和security_group_id字段)。
现在,我需要构建一个将kms_key_id用于外部account_id的AMI,并将对新创建的快照的访问权限授予拥有该密钥的account_id。
如果.json只是为了这个新的AMI,我可以很容易地将"snapshot_users" : [ "{{user external_account_id}}" ]添加到json中并完成它。但是,如果使用默认的kms_key_id (就像使用"kms_key_id": ""一样),那么即使在.json中包含"snapshot_users" : [ "" ]也会导致烘焙失败,并出现错误"Cannot share snapshot encrypted with default KMS key“的问题。
有没有办法让我只能根据builders命令中指定的一些标准将snapshot_users选项插入到打包部分,或者在烘焙完成后,我必须使用ec2-api-tools编写脚本来更改构建ami上的权限(有多个完整的.json文件,不能构建不同的ami)。
也许,这也是一个打包程序错误,因为打包程序应该识别snapsho_users数组是否为空,或者只包含空字符串,它可以被忽略。
发布于 2017-11-14 23:37:09
打包程序将,上的变量拆分到数组中。所以你可以直接定义:
{
"variables": {
"snap_users": ""
},
"builders": [
{
"type": "amazon-ebs",
"snapshot_users": "{{user `snap_users`}}"
}
]
} 发布于 2019-02-13 02:58:13
从封隔器文档中:
region_kms_key_ids (字符串映射)-要将ami复制到的区域映射,以及用于该区域加密的自定义kms密钥id (别名或arn)。密钥必须与ami_regions中提供的区域匹配。如果您只想使用默认ID进行加密,您可以坚持使用kms_key_id和ami_regions。如果您希望使用区域的默认密钥ID对该区域进行加密,则可以在此映射中使用空字符串"“而不是密钥id。(例如"us-east-1":"") 但是,如果您将其与snapshot_users一起使用,则不能使用默认密钥IDs -在这种情况下,您必须使用自定义密钥。有关有效格式,请参阅AWS API文档中的KmsKeyId - CopyImage。
https://stackoverflow.com/questions/47286471
复制相似问题