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

如何编写Python Lambda实现跨AWS账户统计指定名称运行EC2实例数量

跨AWS账户统计指定名称运行EC2实例的代码调整方案

前置依赖配置

你需要先完成IAM权限配置,才可以跨账户调用AWS资源接口:

  • 在目标AWS账户中创建跨账户访问角色(示例命名为CrossAccountEC2ReadOnlyRole),为其附加AmazonEC2ReadOnlyAccess系统权限策略
  • 为该角色配置信任策略,允许你的Lambda函数所属的AWS账户的执行角色代入该角色
  • 为Lambda的执行角色添加sts:AssumeRole权限,允许其代入目标账户的上述跨账户角色

完整实现代码

import boto3

def lambda_handler(event, context):
    # 自定义配置项,按需修改
    TARGET_ACCOUNT_ID = "123456789012"  # 替换为目标AWS账户12位ID
    TARGET_ROLE_NAME = "CrossAccountEC2ReadOnlyRole"  # 替换为目标账户的跨账户角色名
    TARGET_INSTANCE_NAME = "your-specific-instance-name"  # 替换为要统计的实例特定名称
    REGIONS_TO_SCAN = ["us-east-1", "cn-north-1"]  # 替换为需要扫描的区域列表

    # 1. 调用STS服务获取目标账户临时凭证
    sts_client = boto3.client('sts')
    assumed_role = sts_client.assume_role(
        # AWS中国区ARN前缀为arn:aws-cn,海外区为arn:aws,按需修改
        RoleArn=f"arn:aws-cn:iam::{TARGET_ACCOUNT_ID}:role/{TARGET_ROLE_NAME}",
        RoleSessionName="cross-account-ec2-scan"
    )
    credentials = assumed_role['Credentials']

    total_count = 0

    # 2. 遍历指定区域统计符合条件的实例
    for region in REGIONS_TO_SCAN:
        # 用临时凭证初始化对应区域的EC2资源对象
        ec2_resource = boto3.resource(
            'ec2',
            region_name=region,
            aws_access_key_id=credentials['AccessKeyId'],
            aws_secret_access_key=credentials['SecretAccessKey'],
            aws_session_token=credentials['SessionToken']
        )
        # 过滤运行中、名称匹配的实例
        filtered_instances = ec2_resource.instances.filter(
            Filters = [
                {'Name': 'instance-state-name', 'Values': ['running']},
                {'Name': 'tag:Name', 'Values': [TARGET_INSTANCE_NAME]}
            ]
        )
        total_count += len(list(filtered_instances))
    
    print(f"符合条件的EC2实例总数:{total_count}")
    return total_count

扩展说明

  • 如果需要统计多个目标账户,新增账户ID列表做循环,重复执行角色代入+实例统计逻辑即可
  • Lambda执行超时时间可根据扫描的账户、区域数量适当调大,避免执行中断
  • 如果不需要限制实例名称,删除tag:Name对应的过滤规则即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:48:01