簡體   English   中英

相互依賴時如何在 Terraform 中創建 S3 存儲桶和 Lambda?

[英]How to create S3 bucket and Lambda in Terraform when they are codependent on each other?

我正在創建一個 Lambda function ,它的處理程序代碼存儲在 S3 存儲桶中。 我需要創建這些資源,我正在使用 Terraform。

S3 存儲桶似乎依賴於 Lambda 的 ARN output,因此我可以為存儲桶設置正確的 Principal 配置。

Lambda 也依賴於現有的 S3 存儲桶,因此我可以配置存儲處理程序代碼的存儲桶。

我有 2 個模塊創建所需的資源

# S3 Bucket module
resource "aws_s3_bucket" "s3-lambda" {
  bucket = var.bucket_name
  acl = "private"
  policy = data.aws_iam_policy_document.s3_lambda_permissions.json

  tags = {
    Name        = var.tag_name
    Environment = var.env_name
  }
}

# Lambda module
resource "aws_lambda_function" "redirect_lambda" {
  s3_bucket     = var.bucket_name
  s3_key        = var.key
  handler       = var.handler
  runtime       = var.runtime
  role          = aws_iam_role.redirect_lambda.arn
  function_name = "redirect_lambda-${var.env_name}"
  publish       = true
}

然后我在我的main.tf中調用這些模塊

module "qr_redirect_lambda" {
  source = "./modules/qr-redirect"

  env_name    = var.env_name
  bucket_name = var.qr_redirect_lambda_bucket_name
  key         = var.lambda_key
  runtime     = var.lambda_runtime_16
  handler     = var.lambda_handler
  tag_name = "tag name
}

如何創建這兩個相互依賴的資源?

錯誤 output:

 Error: error creating Lambda Function (1): InvalidParameterValueException: Error occurred while GetObject. S3 Error Code: NoSuchBucket. S3 Error Message: The specified bucket does not exist
│ {
│   RespMetadata: {
│     StatusCode: 400,
│     RequestID: "xxx-xxx"
│   },
│   Message_: "Error occurred while GetObject. S3 Error Code: NoSuchBucket. S3 Error Message: The specified bucket does not exist",
│   Type: "User"
│ }
│ 
│   with module.qr_redirect_lambda.aws_lambda_function.qr_redirect_lambda,
│   on modules/qr-lambda/main.tf line 1, in resource "aws_lambda_function" "qr_redirect_lambda":
│    1: resource "aws_lambda_function" "qr_redirect_lambda" {

我認為您可以分三個階段完成此操作,而不是兩個:

  1. 創建沒有存儲桶策略的存儲桶
  2. 創建 lambda。 只能在bucket之后使用depends_on創建lambda。
  3. 使用aws_s3_bucket_policy創建存儲桶策略。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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