如何将AWS Parameter Store返回的JSON转换为.env环境变量文件格式?
解决方案
直接通过AWS CLI搭配jq工具即可一步生成符合要求的.env文件,无需生成中间JSON文件,完美适配你给出的嵌套数组返回结构:
aws ssm get-parameters-by-path --with-decryption --region eu-central-1 \ --path "${PARAMETER_STORE_PREFIX}" | jq -r '.Parameters[] | (.Name | split("/")[-1]) + "=\"" + .Value + "\""' > /home/ubuntu/.env
逻辑说明
- 前面AWS CLI调用逻辑和你原命令完全一致,不再额外生成临时JSON文件,直接将响应通过管道传给
jq处理 jq处理逻辑:.Parameters[]遍历返回结果中的Parameters数组.Name | split("/")[-1]将参数的完整路径按/拆分,取最后一段作为.env的变量名(例如/EXAMPLE/CORS_ORIGIN拆分后取到CORS_ORIGIN)- 拼接变量名、双引号包裹的变量值,生成
变量名="值"的标准env格式 -r参数指定jq输出原始字符串,不会给最终结果额外加转义引号
兼容特殊字符的优化版本
如果参数值中可能包含双引号,可以用以下命令自动转义特殊字符,避免env文件解析出错:
aws ssm get-parameters-by-path --with-decryption --region eu-central-1 \ --path "${PARAMETER_STORE_PREFIX}" | jq -r '.Parameters[] | (.Name | split("/")[-1]) + "=\"" + (.Value | gsub("\""; "\\\"")) + "\""' > /home/ubuntu/.env
内容的提问来源于stack exchange,提问作者Larsen
相关产品推荐
相关产品推荐

