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

跨账号跨区域SNS触发Lambda无效问题排查求助

问题排查与缺失配置分析

你的Lambda函数未触发,核心是存在以下几个配置错误或缺失:

1. 代码笔误导致权限配置无效

代码最后一行的thirdBridgeTriggerHandler应为triggerHandler,这个错误会让你把SNS服务的调用权限给了错误的函数,而实际需要触发的triggerHandler并没有获得正确的SNS调用权限。

2. 跨账号跨区域SNS订阅未完成确认

仅在Lambda账号配置SnsEventSource不足以完成跨账号跨区域触发:

  • 跨账号订阅需要对方账号(eu-west-1区域的SNS所属账号)给主题添加权限,允许你的Lambda账号创建订阅;或者直接由对方账号在SNS侧创建到你方Lambda的订阅
  • 跨账号自动创建的订阅通常会处于PendingConfirmation状态,必须完成确认后才能生效,要么手动在控制台确认,要么通过API完成

3. 跨区域调用的权限逻辑验证

跨区域SNS触发Lambda时,请求从eu-west-1的SNS服务发起,除了Lambda侧的权限,还要确保:

  • 双方账号的IAM策略没有拦截跨区域的Lambda调用请求
  • Lambda资源策略里的sourceArn确实是对方SNS主题的正确ARN(你代码里这部分配置是对的,但要再次核对ARN是否有误)

修正后的关键代码片段

// 修正笔误,给目标函数添加正确权限
triggerHandler.addPermission("trigger-sns-service-permission", {
    action: "lambda:InvokeFunction",
    principal: new iam.ServicePrincipal("sns.amazonaws.com"),
    sourceArn: snsTopicArn,
});

同时,需要联系对方账号管理员,在eu-west-1区域的SNS主题上添加如下权限(或直接由对方创建订阅):

{
  "Version": "2008-10-17",
  "Id": "AllowCrossAccountSubscription",
  "Statement": [
    {
      "Sid": "AllowYourAccountToSubscribe",
      "Effect": "Allow",
      "Principal": {
        "AWS": "你的Lambda账号ARN"
      },
      "Action": "sns:Subscribe",
      "Resource": "对方SNS主题的ARN",
      "Condition": {
        "StringEquals": {
          "sns:Protocol": "lambda"
        }
      }
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:15:07