簡體   English   中英

無法從 SNS 觸發 AWS Lambda

[英]Unable to trigger AWS Lambda from SNS

我正在嘗試從 SNS codestar-notifications 為 AWS lambda 創建觸發器以 SNS 作為觸發器的 Lambda .

使用控制台創建觸發器時,它會自動添加對 SNS 主題的訂閱。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM