授权其他 AWS 账户访问 EC2 AMI

授权其他 AWS 账户访问 EC2 AMI

我有许多需要保密的 Amazon 系统映像 (AMI),但要与越来越多的合作伙伴和客户共享,每个合作伙伴和客户都使用不同的 AWS 账户。每个账户都应该能够使用我的 AMI 启动实例。

AWS 可让您将 Amazon 帐号添加到 AMI 的 ACL 中,从而轻松支持这一点,但这种方法似乎仅限于 10 个帐户。如果我有 50 个客户,我无法通过这种方式与他们共享 AMI。

合乎逻辑的考虑是使用策略来授予此访问权限,但我在制定这样的策略时遇到了麻烦。有一个用于授予外部主体访问权限的策略属性:

"Principal": {"AWS": "accountnumber"}

但是当我尝试编写允许访问特定 AMI 的 ARN 的策略时,验证器拒绝了此操作。我在其他地方找不到任何此类示例。有人有线索或建议吗?这种方法有效吗?

答案1

事实证明,我们误解了一些数据,并没有将账户数量限制为 10 个。我们尚未找到任何文档来说明限制是多少,但至少有 5700 个。我从 us-west 的公共映像列表中提取了 5700 个账户 ID 列表,并将它们应用到我为测试目的而创建的虚拟 AMI 中,从而找到了这一点。如果有人感兴趣,请提供代码:

aws --profile dgc@domain --region us-west-2 ec2 describe-images >images.json

jq -r .Images[].OwnerId <images.json | sort | uniq <images.json >ids.txt

wc -l ids.txt
5705

(
    echo '{"Add":['
    for id in $(cat ids.txt); do
        echo '{"UserId":"'$id'"},'
    done
    echo '{"UserId":"##one-last-id-to-end-the-json-array-with##"}'
    echo ']}'
) >perms.json

aws --profile dgc@domain --region us-west-2 ec2 modify-image-attribute --image-id example-ami-id --launch-permission "$(cat perms.json)"

aws --profile dgc@domain --region us-west-2 ec2 describe-image-attribute --image-id example-ami-id --attribute launchPermission | jq -r '.LaunchPermissions[].UserId' | wc -l
    5706

5706 进,5706 出。

相关内容