首页 > 解决方案 > Terraform 将 AMI 权限设置为公共

问题描述

我目前正在使用 Terraform 将 AMI 从一个区域复制到多个区域,使用:

resource "aws_ami_copy" "my_ami" {
  name              = "my_ami-${var.region}"
  source_ami_id     = "${var.source_ami_id}"
  source_ami_region = "${var.source_ami_region}"
}

我需要将此 AMI 公开,我在网上查看过,但找不到使用 Terraform 的方法。

标签: amazon-web-servicesterraformamazon-ami

解决方案


Terraform 目前没有本地方法来执行此操作。您通常可以使用 Terraform 与使用该aws_ami_launch_permission资源的另一个帐户共享 AMI,但这仅支持添加特定帐户,而不支持将all其公开所需的组。

您始终可以使用local-exec预置器向AWS CLI 支付费用,以通过以下方式公开 AMI

resource "null_resource" "share_ami_publicly" {
  provisioner "local-exec" {
    command = "aws ec2 modify-image-attribute --image-id ami-12345678 --launch-permission '{\"Add\":[{\"Group\":\"all\"}]}'"
  }
}

供应商可以附加到任何相关资源的位置(例如,如果您使用该aws_ami资源来创建 AMI)。


推荐阅读