【发布时间】:2021-12-02 20:45:10
【问题描述】:
问题:
我正在尝试从终端中的 AWS Secrets Manager 获取凭证,但是我想要的键和值需要采用 JSON 格式,但是由于引号,它们带有很多转义字符。
情景:
在我触发aws secretsmanager get-secret-value --secret-id snowflake-access-uat 命令后,我得到如下凭据:
{
"ARN": "arn:aws:secretsmanager:ap-regionnm-1:111111111111:secret:my-secret",
"Name": "snowflake-access-uat",
"VersionId": "dont-care",
"SecretString": "{\"sf-user\":\"USER_123_ADMIN\",\"sf-password\":\"FooBaarPassword\",\"sf-db\":\"MY_SPL_DB\",\"wh_name\":\"JOB_EXECUTOR\",\"sf-role\":\"JOB_EXECUTOR_ROLE\",\"sf-account\":\"icy-party\"}",
"VersionStages": [
"AWSCURRENT"
],
"CreatedDate": 1627104812.142
}
但是,我只对 Secret String 感兴趣,为此我触发了 aws secretsmanager get-secret-value --secret-id snowflake-programmatic-access-uat | jq '.SecretString' 命令并收到了这个:
"{\"sf-user\":\"USER_123_ADMIN\",\"sf-password\":\"FooBaarPassword\",\"sf-db\":\"MY_SPL_DB\",\"wh_name\":\"JOB_EXECUTOR\",\"sf-role\":\"JOB_EXECUTOR_ROLE\",\"sf-account\":\"icy-party\"}"
但由于它有多个转义字符,我无法将它与jq 树一起使用。我试图从this link 获取参考,但我无法使其工作。此外,我需要将键和值作为 bash 会话中的变量。
注意:我不能使用任何第三方工具,因为我需要在 CodeBuild 上自动执行此操作(将选择运行时新实例)
【问题讨论】:
-
您已经向我们展示并告诉我们
jq已启用,因此我们处于一个很好的位置:“第三方工具”。 -
虽然链接副本的标题仅询问双引号,但请求原始输出(如接受的答案指示)也会删除其他不需要的转义。
-
@CharlesDuffy 是的,查尔斯,CodeBuild 最近添加了 Ubuntu 系列,所以它确实有 jq,但我不太了解如何使用 Python 编写 buildspec.yml。
-
所以,关于 YAML 要记住的是,所有 JSON 都是有效的 YAML
-
...这样您就可以使用相同的数据编写一个 JSON 文件,将其命名为
buildspec.yml,然后您就设置好了。