微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Terraform:因遵守限制而出错

如何解决Terraform:因遵守限制而出错

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"
  acl    = "private"

  tags = {
    Name        = "source-bucktet-testing"
    Environment = "Dev"
  }
}


# 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"
}

错误消息:

enter image description here

解决方法

传递给aws_lambda_function的{​​{1}}资源的值无效。 AWS Lambda函数名称只能包含字母,数字,连字符或带下划线的空格。您需要更改function_name的值以符合这些限制。

,

您的var.function_name必须无效。

here和ARN一起说明了允许的函数名称格式:

The length constraint applies only to the full ARN. If you specify only the function name,it is limited to 64 characters in length.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 140.

Pattern: (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\$LATEST|[a-zA-Z0-9-_]+))? 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?