【问题标题】:trigger lambda function from DynamoDB从 DynamoDB 触发 lambda 函数
【发布时间】:2021-12-28 15:38:47
【问题描述】:

每当一个新项目到达我的发电机表时,我想运行一个 lambda 函数trigger_lambda_function。这就是我定义表和触发器的方式。但是,触发器无法按预期工作。

resource "aws_dynamodb_table" "filenames" {
  name           = local.dynamodb_table_filenames
  billing_mode   = "PROVISIONED"
  read_capacity  = 1000
  write_capacity = 1000
  hash_key       = "filename"

  #range_key      = ""

  attribute {
    name = "filename"
    type = "S"
  }

  tags = var.tags
}


resource "aws_lambda_event_source_mapping" "allow_dynamodb_table_to_trigger_lambda" {
  event_source_arn  = aws_dynamodb_table.filenames.stream_arn
  function_name     = aws_lambda_function.trigger_stepfunction_lambda.arn
  starting_position = "LATEST"
}

terraform apply 上,我收到一个错误:

│ Error: error creating Lambda Event Source Mapping (): InvalidParameterValueException: Unrecognized event source.
│ {
│   RespMetadata: {
│     StatusCode: 400,
│     RequestID: "5ae68da6-3f6d-4adb-b104-72ae584dbca7"
│   },
│   Message_: "Unrecognized event source.",
│   Type: "User"
│ }
│ 
│   with module.ingest_system["alpegatm"].aws_lambda_event_source_mapping.allow_dynamodb_table_to_trigger_lambda,
│   on ../../modules/ingest_system/dynamo.tf line 39, in resource "aws_lambda_event_source_mapping" "allow_dynamodb_table_to_trigger_lambda":
│   39: resource "aws_lambda_event_source_mapping" "allow_dynamodb_table_to_trigger_lambda" {

我也尝试了.arn 而不是stream_arn,但这也引发了错误。我还能尝试什么?

我遵循了触发器的文档: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_event_source_mapping

【问题讨论】:

  • 随机猜测 - 尽管有错误消息文本,但您的 Lambda 调用 dynamodb:* 是否缺少 IAM 权限?
  • 分配的角色有"dynamodb:GetItem","dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:Query"但我怀疑这是问题@GrzegorzOledzki

标签: amazon-web-services aws-lambda amazon-dynamodb terraform terraform-provider-aws


【解决方案1】:

aws_dynamodb_table 文档中,stream_arn 仅在 stream_enabled 设置为 true 时可用。您可能希望将 stream_enabled = true 添加到您的 DynamoDB 表定义中。

默认情况下,stream_enabled 设置为 false。您可以看到here 的所有默认值aws_dynamodb_table

【讨论】:

猜你喜欢
  • 2018-08-29
  • 2020-02-27
  • 2023-01-02
  • 1970-01-01
  • 2021-01-24
  • 2019-04-26
  • 1970-01-01
  • 2019-08-02
  • 2019-01-07
相关资源
最近更新 更多