簡體   English   中英

如何從 Terraform 創建 AWS SSM 參數

[英]How to create AWS SSM Parameter from Terraform

我正在嘗試將 AWS SSM 參數(用於 cloudwatch)從一個區域復制到另一個區域。 我有一個在一個區域中作為字符串創建的 json。

我正在嘗試編寫一個 terraform 腳本來在另一個區域創建這個 ssm 參數。
根據 terraform 文檔,我需要這樣做

resource "aws_ssm_parameter" "foo" {
  name  = "foo"
  type  = "String"
  value = "bar"
}

在我的情況下,值是一個 json。 有沒有辦法將 json 存儲在文件中並將此文件作為值傳遞給上述資源? 我嘗試使用 jsonencode,

resource "aws_ssm_parameter" "my-cloudwatch" {
  name  = "my-cloudwatch"
  type  = "String"
  value = jsonencode({my-json})

那也沒有用。 我收到此錯誤插值表達式后的額外字符我相信這是因為 json 包含引號和冒號等字符。

任何的想法?

我測試了以下內容,這對我有用:

resource "aws_ssm_parameter" "my-cloudwatch" {
  name  = "my-cloudwatch"
  type  = "String"
  #value = file("${path.module}/ssm-param.json")
  value = jsonencode(file("${path.module}/files/ssm-param.json"))

./files/ssm-param.json 內容:

{
    "Value": "Something"
}

參數存儲值如下所示:

"{\n    \"Value\": \"Something\"\n}"

我剛剛遇到了這個問題,CW 配置中的 $ 導致了這個問題。 使用 $$

“注意:如果您將模板指定為文字字符串而不是加載文件,則內聯模板必須使用雙美元符號(如 $${hello})以防止 Terraform 將配置中的值插入到字符串中。”

https://www.terraform.io/docs/configuration-0-11/interpolation.html

    "metrics": {
    "append_dimensions": {
        "AutoScalingGroupName": "$${aws:AutoScalingGroupName}",
        "ImageId": "$${aws:ImageId}",
        "InstanceId": "$${aws:InstanceId}",
        "InstanceType": "$${aws:InstanceType}"
    },

不過我更喜歡保羅的方法。

您需要插入帶有轉義配額的 json,這是 AWS 中的一個小技巧,您需要在檢索時解析它:

const value = JSON.parse(Value)

插入示例:

 "Value": "\"{\"flag\":\"market_store\",\"app\":\"ios\",\"enabled\":\"false\"}\"",

暫無
暫無

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

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