[英]how to export / post terraform output of variables to AWS SSM parameter store
[英]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.