[英]Unable to trigger AWS Lambda from SNS
我正在嘗試從 SNS codestar-notifications 為 AWS lambda 創建觸發器 .
使用控制台創建觸發器時,它會自動添加對 SNS 主題的訂閱。 . 此外,這在另一個方向上起作用,即如果我通過顯式添加其 arn 創建 SNS 訂閱 Lambda function,它會自動將觸發器鏈接到 Lambda function。
但是當使用 terraform 創建訂閱時,如下所示:
resource "aws_sns_topic_subscription" "subscribe_lambda_to_first_topic" {
topic_arn = module.first_topic.sns-topic-detail.arn
protocol = "lambda"
endpoint = module.lambda_function.lambda_function.arn
}
它不會在 AWS Lambda 中創建觸發器。
我嘗試使用 Terraform 中的事件源映射創建觸發器,如下所示
resource "aws_lambda_event_source_mapping" "lambda_source" {
event_source_arn = module.first_topic.sns-topic-detail.arn
function_name = module.lambda_function.lambda_function.arn
starting_position = "LATEST"
}
它拋出一個錯誤,說它只能用於
錯誤:創建 Lambda 事件源映射時出錯 (arn:aws:sns:us-west-2:619867110810:codestar-notifications-emc-sns-to-lambda): InvalidParameterValueException: Unrecognized event source, must be kinesis, dynamodb stream or sqs . 不支持的源 arn:arn:aws:sns:us-west-2:619867110810:codestar-notifications-emc-sns-to-lambda { RespMetadata: { StatusCode: 400, RequestID: "83bf57cb-b50d-49a8-9547-72fac69778d1" }, Message_: "無法識別的事件源,必須是 kinesis、dynamodb stream 或 sqs。不支持的源 arn: arn:aws:sns:us-west-2:619867110810:codestar-notifications-emc-sns-to-lambda", Type :“用戶”}
使用 aws_lambda_event_source_mapping.lambda_source,在 main.tf 第 43 行,在資源“aws_lambda_event_source_mapping”“lambda_source”中:43:資源“aws_lambda_event_source_mapping”“lambda_source”{
aws_lambda_event_source_mapping
不適用於 SNS,就像錯誤消息所說的那樣。 相反,您可以像以前一樣使用aws_sns_topic_subscription
。
但是,您忘記了aws_lambda_permission應該是(文檔中的通用形式 - 您需要根據自己的設置進行調整):
resource "aws_lambda_permission" "with_sns" {
statement_id = "AllowExecutionFromSNS"
action = "lambda:InvokeFunction"
function_name = aws_lambda_function.func.function_name
principal = "sns.amazonaws.com"
source_arn = aws_sns_topic.default.arn
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.