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

CloudFormation配置Lambda InvokePermission时SourceArn如何填写(boto3调用场景)

问题解答

你当前的配置存在基础错误:你设置的Principal: events.amazonaws.com是用于允许Amazon EventBridge服务触发Lambda的场景,完全不适用于boto3调用的场景,需要先修改Principal配置,再根据你运行boto3代码的身份决定SourceArn的取值:

场景1:boto3代码运行在非AWS环境(如本地服务器、个人电脑),使用IAM用户/角色的访问密钥调用

这种场景不需要填写SourceArn字段,直接将Principal设置为你用于调用的IAM实体的ARN即可,示例配置如下:

MyFunctionInvokePermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName:
      Fn::GetAtt: [MyFunctionLambda, Arn]
    Action: lambda:InvokeFunction
    Principal: arn:aws:iam::[你的AWS账号ID]:user/[你的IAM用户名] # 替换为你实际使用的IAM用户/角色ARN

你也可以选择不用配置Lambda Permission,直接在调用方IAM身份的权限策略中添加如下配置,即可获得调用权限:

{
    "Effect": "Allow",
    "Action": "lambda:InvokeFunction",
    "Resource": "arn:aws:lambda:[区域]:[你的AWS账号ID]:function:MyLambdaFunction"
}

场景2:boto3代码运行在其他AWS服务上(如EC2实例、另一个Lambda函数、ECS任务)

这种场景需要先将Principal设置为对应服务的服务主体,再将SourceArn设置为运行boto3代码的AWS资源的ARN:

  • 示例:调用方为另一个Lambda函数
MyFunctionInvokePermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName:
      Fn::GetAtt: [MyFunctionLambda, Arn]
    Action: lambda:InvokeFunction
    Principal: lambda.amazonaws.com
    SourceArn: arn:aws:lambda:[区域]:[你的AWS账号ID]:function:[调用方Lambda函数名] # 此处填写运行boto3代码的Lambda的ARN
  • 示例:调用方为EC2实例
MyFunctionInvokePermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName:
      Fn::GetAtt: [MyFunctionLambda, Arn]
    Action: lambda:InvokeFunction
    Principal: ec2.amazonaws.com
    SourceArn: arn:aws:ec2:[区域]:[你的AWS账号ID]:instance:[EC2实例ID] # 此处填写运行boto3代码的EC2实例的ARN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 06:06:03