簡體   English   中英

terraform 如何使用模板文件功能指定 apigateway invoke_url 的值 - locals 或 vars 不起作用

[英]terraform how to specify value of apigateway invoke_url using template file feature - locals or vars dont work

我有 apigateway invoke_url 是唯一的,由 terraform 創建,這個唯一的 url 通常具有以下形式

https://123abc.execute-api.us-east-1.amazonaws.com

對於 s3 object,該值必須在 index.html 內部為index.html ,我正在使用 terraform 的模板功能:

    <!DOCTYPE html>
    <html>
      SOME CODE    
        
          var backend_url = "${backend_api_gateway}/voting"              
    
      some code
          });
    
    </html>

在 tf 中嘗試使用“本地人”無效:

locals {
  backend_api_gateway = "${aws_apigatewayv2_stage.default.invoke_url}"
}
    
resource "aws_s3_object" "index_file_vote" {
  bucket = aws_s3_bucket.frontend_vote.id
  key    = "index.html"
  content = templatefile("./vote/index.html.tpl", {
    backend_api_url = local.backend_api_gateway
  })
      
  depends_on = [aws_s3_bucket.frontend_vote, aws_apigatewayv2_api.main_apigateway] 
}

它給出了錯誤:

    Invalid function argument
    │
    │   on s3_bucket_vote.tf line 93, in resource "aws_s3_object" "index_file_vote":
    │   93:     content = templatefile("./vote/index.html.tpl", {
    │   94:         backend_api_url = local.backend_api_gateway
    │   95:     })
    │     ├────────────────
    │     │ local.backend_api_gateway will be known only after apply│
    │ Invalid value for "vars" parameter: vars map does not contain
    │ key "backend_api_gateway", referenced at
    │ ./vote/index.html.tpl:34,28-47.

嘗試使用 vars,聲明要創建的未來 apigateway 的調用 url 不起作用:

variable "backend_api_gateway" {
  type = string
  default = "${aws_apigatewayv2_stage.default.invoke_url}" // error 'variables not allowed'
}

由於不涉及任何模塊,因此應該很容易修復。 首先,分配給變量的值必須遠離 go,因為不可能以這種方式使用它。 其次,你實際上什至不需要它。 第三,您正在使用顯式依賴項,這也是不需要的。 此外,即使使用局部變量沒有任何問題,也沒有必要。 這是所需的更改:

resource "aws_s3_object" "index_file_vote" {
    bucket = aws_s3_bucket.frontend_vote.id
    key    = "index.html"
    content = templatefile("./vote/index.html.tpl", {
        backend_api_url = aws_apigatewayv2_stage.default.invoke_url
    }) 
}

暫無
暫無

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

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