【问题标题】:Error when creating S3 bucket notification in Terraform在 Terraform 中创建 S3 存储桶通知时出错
【发布时间】:2021-04-24 13:19:27
【问题描述】:

我在创建存储桶通知以触发 Lambda 函数时遇到问题。错误:

Error putting S3 notification configuration: InvalidArgument: Unable to validate the following destination configurations
    status code: 400

我了解到类似的问题可能是由创建资源的顺序或缺少 Lambda 权限引起的。但是,我尝试在我的代码中包含depends_on,并多次应用模板并在其间等待。我正在使用限制最少的 Lambda 策略。我还尝试使用来自Terraform documentation 的确切示例代码,但这给了我一个完全不同的错误。

如果在控制台中创建完全相同的设置,则可以正常工作。

这是我的代码有问题的部分:

resource "aws_lambda_function" "writeUsersToDB" {
  filename      = "writeUsersToDB.zip"
  function_name = "writeUsersToDB"
  role          = "arn:aws:iam::0000000:role/AWSLambdaFullAccess"
  handler       = "main.lambda_handler"
  memory_size = 256
  timeout = 900
  source_code_hash = filebase64sha256("writeUsersToDB.zip")
  runtime = "python3.8"
  environment {variables = local.parameters}
  layers = [ "arn:aws:lambda:eu-west-2:0000000:layer:pandas-pandas-schema-numpy:1" ]
}



resource "aws_s3_bucket_notification" "event" {
  bucket = aws_s3_bucket.user_data.id

  lambda_function {
    lambda_function_arn = aws_lambda_function.writeUsersToDB.arn
    events              = ["s3:ObjectCreated:*"]
    filter_suffix       = ".csv"
  }
  depends_on = [aws_lambda_function.writeUsersToDB]
}


resource "aws_s3_bucket" "user_data" {
  bucket = "nameofthebucket"
}

【问题讨论】:

    标签: amazon-web-services amazon-s3 terraform amazon-cloudformation terraform-provider-aws


    【解决方案1】:

    你不见了aws_lambda_permission:

    resource "aws_lambda_permission" "example" {
      statement_id  = "AllowExecutionFromS3Bucket"
      action        = "lambda:InvokeFunction"
      function_name = aws_lambda_function.writeUsersToDB.function_name
      principal     = "s3.amazonaws.com"
      source_arn    = aws_s3_bucket.user_data.arn
    }
    
    
    

    【讨论】:

    • 非常感谢,成功了!我已经坐了3天了。但是我现在很困惑,为什么 Lambda 角色还不够?
    • @madej lambda 函数有两种权限:执行角色和基于资源的权限。你写的是第一种类型。但是这里我们需要指定第二种类型,即什么可以调用该函数。在这种情况下,我们允许 S3 调用它。
    猜你喜欢
    • 2022-01-12
    • 2023-03-07
    • 2016-12-09
    • 2021-08-14
    • 2018-05-20
    • 2020-11-05
    • 2018-05-29
    • 2017-12-12
    • 1970-01-01
    相关资源
    最近更新 更多