amazon-web-services - 通过 SDK 创建订阅时,AWS SNS 未附加 Lambda 触发器

标签 amazon-web-services aws-lambda amazon-sns

我想使用 SNS 订阅来触发 Lambda 函数。 首先,我通过 AWS SDK 创建了一个主题和订阅:

    import {SubscribeCommand } from "@aws-sdk/client-sns";
    import {snsClient } from "./libs/snsClient.js";

    // Set the parameters
    const params = {
      Protocol: "lambda" /* required */,
      TopicArn: "TOPIC_ARN", //TOPIC_ARN
      Endpoint: "LAMBDA_FUNCTION_ARN", //LAMBDA_FUNCTION_ARN
    };

    const run = async () => {
      try {
        const data = await snsClient.send(new SubscribeCommand(params));
        console.log("Success.",  data);
        return data; // For unit tests.
      } catch (err) {
        console.log("Error", err.stack);
      }
    };
    run();

它正在创建订阅,但当我检查 Lambda 时,该子并未显示为 Lambda 触发器。 empty trigger

当我手动创建订阅而不使用 SDK 时,它可以正常工作。 enter image description here

我想知道为什么我使用 SDK 创建的订阅没有显示在 Lambda 的触发器中。

最佳答案

您似乎缺少 IAM 权限。 SNS 需要明确的权限才能调用您的 Lambda。

参见How do I subscribe a Lambda function to an Amazon SNS topic in the same account?在文档中。示例中的 lambda add-permission CLI 步骤与 AddPermissionCommand 相同。在 SDK Lambda 客户端中。提供您的 SNS 主题的 ARN。

关于amazon-web-services - 通过 SDK 创建订阅时,AWS SNS 未附加 Lambda 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74609192/

相关文章:

amazon-web-services - FFMPEG 在 AWS Lambda 中失败

python - 使用 boto 在 amazon mechanical turk 中将 HIT 分组?

amazon-web-services - 使用 Lambda 集成保护 AWS API 网关

java - 如何在 java 中启用 AWS-SNS 原始消息传递

ios - AWS Mobile HUD AWS SNS pushManagerDidRegister 但未创建端点

ios - AWS SNS ios sdk 1.6.1 中的 setEndpointAttributes 中出现格式错误的输入错误

amazon-ec2 - VPC 中的 Amazon ELB

java - 如何使用 aws-java-sdk 从 S3 中逐 block 读取文件

javascript - AWS Lambda SNS 目标在失败或成功时不起作用