首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用用户变量在包装程序中配置snapshot_users选项

如何使用用户变量在包装程序中配置snapshot_users选项
EN

Stack Overflow用户
提问于 2017-11-14 20:55:02
回答 2查看 482关注 0票数 0

我有一个打包的.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数组是否为空,或者只包含空字符串,它可以被忽略。

EN

回答 2

Stack Overflow用户

发布于 2017-11-14 23:37:09

打包程序将,上的变量拆分到数组中。所以你可以直接定义:

代码语言:javascript
复制
{
  "variables": {
    "snap_users": ""
  },
  "builders": [
    {
      "type": "amazon-ebs",
      "snapshot_users": "{{user `snap_users`}}"
    }
  ]
}  
票数 0
EN

Stack Overflow用户

发布于 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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47286471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档