You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将一个AWS账户的所有AMI共享至另一个AWS账户(含自动共享新AMI)

AWS原生实现跨账户自动共享AMI方案

一、批量共享现有AMI

可通过AWS CLI批量处理当前账户下的所有私有AMI,无需逐个手动操作:

# 替换为你的目标账户ID
TARGET_ACCOUNT_ID="123456789012"

# 获取当前账户所有私有AMI的ID(仅包含自身创建的AMI)
AMI_IDS=$(aws ec2 describe-images --owners self --query 'Images[*].ImageId' --output text)

# 遍历并共享每个AMI到目标账户
for AMI_ID in $AMI_IDS; do
  aws ec2 modify-image-attribute --image-id $AMI_ID --launch-permission "Add=[{UserId=$TARGET_ACCOUNT_ID}]"
done

二、自动共享新建AMI

利用AWS EventBridge + Lambda的原生组合,实现AMI创建完成后自动共享:

1. 创建Lambda函数

编写Python代码(也可使用Node.js等语言),监听AMI创建事件并执行共享操作:

import boto3

ec2_client = boto3.client('ec2')
# 替换为目标账户ID
TARGET_ACCOUNT = "123456789012"

def lambda_handler(event, context):
    # 从EventBridge事件中提取已创建完成的AMI ID
    ami_id = event['detail']['image-id']
    
    # 执行共享操作
    ec2_client.modify_image_attribute(
        ImageId=ami_id,
        LaunchPermission={
            'Add': [{'UserId': TARGET_ACCOUNT}]
        }
    )
    
    return f"AMI {ami_id} has been shared to account {TARGET_ACCOUNT}"

2. 配置Lambda权限

确保Lambda执行角色拥有ec2:ModifyImageAttribute权限,可通过IAM策略添加:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:ModifyImageAttribute",
            "Resource": "arn:aws:ec2:*:*:image/*"
        }
    ]
}

3. 创建EventBridge规则

  • 规则类型选择事件模式
  • 事件源选择EC2,事件类型选择EC2 Image State-change Notification
  • 设置状态匹配为available(AMI创建完成后的稳定状态)
  • 目标选择之前创建的Lambda函数

完成配置后,所有新创建的AMI在状态变为available时,会自动触发Lambda函数完成共享。

内容的提问来源于stack exchange,提问作者gagan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:22:57