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

Lambda间调用场景下如何获取调用方身份(ARN、IAM角色等)

识别调用方Lambda身份的方案

由于Invoke API的事件内容由调用方完全控制,无法依赖事件数据,以下是几种从Lambda内部获取调用方身份的可靠方式:

1. 调用STS GetCallerIdentity API

这是最直接的方法:目标Lambda可以通过AWS Security Token Service (STS)的GetCallerIdentity接口,获取发起调用的实体身份ARN。调用方Lambda在执行Invoke API时,会使用自身的执行角色进行身份验证,因此GetCallerIdentity返回的ARN就是该执行角色的ARN。

你可以预先维护一份调用方Lambda与其执行角色ARN的映射表,通过匹配返回的ARN来识别具体调用方。需要确保目标Lambda的执行角色拥有sts:GetCallerIdentity的权限(可通过IAM策略配置)。

示例Python代码:

import boto3

def lambda_handler(event, context):
    sts = boto3.client('sts')
    caller_info = sts.get_caller_identity()
    caller_role_arn = caller_info['Arn']
    
    # 预先配置的调用方角色与Lambda名称映射
    caller_mapping = {
        "arn:aws:iam::123456789012:role/CallerLambda1-ExecutionRole": "Lambda调用方1",
        "arn:aws:iam::123456789012:role/CallerLambda2-ExecutionRole": "Lambda调用方2"
    }
    
    caller_name = caller_mapping.get(caller_role_arn, "未知调用方")
    return {"识别到的调用方": caller_name}

2. 利用AWS X-Ray追踪数据

如果你的Lambda开启了X-Ray追踪,目标Lambda可以通过X-Ray的上下文数据获取调用方的信息。X-Ray会记录调用链中的各个服务实体,包括发起调用的Lambda的ARN。不过这种方式需要额外配置X-Ray权限,且实现复杂度高于STS方法,适合已经启用X-Ray的场景。

注意事项

  • Lambda的context对象本身不直接提供调用方Lambda的身份信息,必须通过外部API或服务获取。
  • 确保目标Lambda的执行角色拥有对应操作的权限(如sts:GetCallerIdentity、xray:GetTraceSummaries等)。

内容的提问来源于stack exchange,提问作者Sébastien

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 11:27:17