【问题标题】:Terraform : S3 trigger code is failing with status-code : 400Terraform:S3 触发代码失败,状态码:400
【发布时间】:2021-02-03 22:03:49
【问题描述】:

在 terraform 中,尝试将 S3 存储桶作为我的 lambda 的触发器并授予权限。对于这个用例,创建 S3 资源并尝试在触发逻辑中引用该 lambda 函数。但是当我引用代码失败并出现以下错误时。请帮我解决这个问题。

#########################################
# Creating Lambda resource
###########################################

resource "aws_lambda_function" "test_lambda" {
  filename      = "output/welcome.zip"
  function_name = var.function_name
  role          = var.role_name
  handler       = var.handler_name
  runtime       = var.run_time
}


######################################################
# Creating s3 resource for invoking to lambda function
######################################################

resource "aws_s3_bucket" "bucket" {
  bucket = "source-bucktet-testing"

}

#####################################################################
# Adding S3 bucket as trigger to my lambda and giving the permissions
#####################################################################

resource "aws_s3_bucket_notification" "aws-lambda-trigger" {
  bucket = aws_s3_bucket.bucket.id
  lambda_function {
    lambda_function_arn = aws_lambda_function.test_lambda.arn
    events              = ["s3:ObjectCreated:*"]
    filter_prefix       = "file-prefix"
    filter_suffix       = "file-extension"
}
}




resource "aws_lambda_permission" "test" {
  statement_id  = "AllowS3Invoke"
  action        = "lambda:InvokeFunction"
  function_name = aws_lambda_function.test_lambda.function_name
  principal = "s3.amazonaws.com"
  source_arn = "arn:aws:s3:::aws_s3_bucket.bucket.id"
}

错误信息:

Error: Error putting S3 notification configuration: InvalidArgument: Unable to validate the following destination configurations
        status code: 400, request id: 8D16EE1EF8FC0E63, host id: PlzqurwmHo3hDJdr0nUhOGuJKnghOBCtMImZ+8fEFX3JPjKV2M47UZuJ5Z26FalKxmoF1Xl8lag=

【问题讨论】:

    标签: amazon-web-services amazon-s3 terraform http-status-code-400


    【解决方案1】:

    aws_lambda_permission 中的 source_arn 不正确。应该是:

    source_arn = aws_s3_bucket.bucket.arn
    

    目前您的source_arn 字面意思是字符串“arn:aws:s3:::aws_s3_bucket.bucket.id”,这是不正确的。

    【讨论】:

      猜你喜欢
      • 2017-06-02
      • 1970-01-01
      • 2021-11-09
      • 2019-09-29
      • 1970-01-01
      • 2020-08-30
      • 2021-04-07
      • 2021-10-11
      • 1970-01-01
      相关资源
      最近更新 更多