我想使用 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 触发器。
我想知道为什么我使用 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/