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

跨区域调用Lambda如何让其操作发起调用区域的AWS资源

解决方案

完全可以实现单区域部署Lambda,跨区域操作其他区域的资源,无需在每个区域单独部署函数副本,仅需做三处调整即可:

  • 调用侧传递目标区域参数
    你在发起跨区域Lambda调用时,需要将待操作资源的所属区域(即你示例中的区域2,也就是发起调用请求的Lambda所在区域)作为参数写入调用payload传递。修改后的调用代码如下:
import json
import os
import boto3

client = boto3.client('lambda', region_name='region 1')
 
def lambda_handler(event, context):
    # 追加目标区域参数,直接取当前运行环境的区域即可,无需硬编码
    event['target_region'] = os.environ['AWS_REGION']
    response = client.invoke(
        FunctionName = 'Lambda_function_name',
        InvocationType = 'RequestResponse',
        Payload = json.dumps(event)
    )
    # 后续处理逻辑
  • 被调用侧初始化资源客户端时指定区域
    部署在区域1的待调用Lambda,在初始化AWS资源客户端时不要使用默认区域,而是从传入的payload中读取之前传入的target_region参数,用该参数初始化对应区域的客户端即可,示例代码如下:
import json
import boto3

def lambda_handler(event, context):
    # 读取传入的目标区域
    target_region = event.get('target_region', '默认区域可自行设置')
    # 用目标区域初始化EC2客户端
    ec2_client = boto3.client('ec2', region_name=target_region)
    # 后续对ec2_client的所有操作都会作用于目标区域的EC2资源
    # 你的原有EC2检测、修改逻辑不需要做其他调整
  • 调整Lambda执行角色的IAM权限
    部署在区域1的Lambda对应的IAM执行角色,需要开放所有你需要操作的区域的EC2相关操作权限,IAM权限为全局生效,只要权限策略没有限制资源区域,即可正常跨区域调用对应服务接口。

补充说明

如果你的Lambda部署在VPC内,默认跨区域调用AWS服务会走公网链路,如果你需要走私有链路,可以为对应区域的AWS服务配置VPC端点即可。跨区域调用会有少量网络延迟,对延迟不敏感的运维类场景完全适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:18:05