amazon-web-services - 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 的方法。
解决方案
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)。
推荐阅读
- flutter - 如何使用 Flutter 从 URL 中获取参数
- spring - 在 Spring Boot 应用程序中延迟 EurekaClient 启动
- r - 使用输入在 Shiny 中生成带有多个向量的 data.frame
- python - TypeError:不能将序列乘以“unicode”类型的非整数
- java - 具有传递依赖关系的 Spring Boot Docker 层
- c - 在 while 循环内使用 fflush 不起作用
- junit - 测试 Spring5 RestController
- python - 为什么 plt.savefig() 不起作用?保存图形时,纬度不显示,而经度显示正确
- string - 在汇编中,可以通过将堆栈视为字符串来使用 sys_write 从堆栈中打印几个字节吗?
- javascript - 如何在 Java Script 中根据屏幕大小替换图像 src