使用AWS cli从AWS秘密管理器解析秘密

时间:2018-06-18 14:18:22

标签: linux amazon-web-services aws-cli aws-secrets-manager

我正在检索我使用AWS cli存储在AWS秘密管理器中的秘密:

aws secretsmanager get-secret-value --secret-id secrets

返回

arn:aws:secretsmanager<ID>:secret:my_secrets <number> my_secrets {"API_KEY":"ABCDEFGHI"}       <UUID string>
VERSIONSTAGES   AWSCURRENT

有谁知道我如何得到秘密(“API_KEY”:“ABCDEFGHI”)? 我需要将这些秘密移到我的register-task-definition环境变量中。最好的方法是将它们存储在一个文件中并在我们之后删除它或将它们存储在变量中。它在linux机器上运行。

感谢

8 个答案:

答案 0 :(得分:10)

使用CLI的--query选项仅提取密码。

aws secretsmanager get-secret-value --secret-id secrets --query SecretString

答案 1 :(得分:5)

aws secretsmanager get-secret-value --secret-id secrets| jq --raw-output '.SecretString' | jq -r .API_KEY

使用jq可以打印。

答案 2 :(得分:2)

如果您的秘密只有一个密钥/对值,并且您只想打印出该值,并且您不想依赖于您的系统先安装了 jq,那么您可以这样做:

aws secretsmanager get-secret-value --secret-id secrets --query SecretString --output text | cut -d: -f2 | tr -d \"}

答案 3 :(得分:1)

helloV回答的小补充。您可以添加输出参数text来删除引号。

aws secretsmanager get-secret-value --secret-id secrets --query SecretString --output text

答案 4 :(得分:1)

当您有多个秘密并获得json返回值时,可以使用

来获取密码的确切值
aws secretsmanager get-secret-value --secret-id <secret_bucket_name> | jq --raw-output '.SecretString' | jq -r .key_for_password

答案 5 :(得分:0)

因此,在提取所需的东西时,我遇到了一些麻烦,这是我存储在SecretsManager中的两个变量的值。所以这对我有用。

注意:这是AWS SecretsManager文档中的一个示例。

我跑了

aws secretsmanager get-secret-value --secret-id MyTestDatabaseSecret --version-stage AWSPREVIOUS

此查询的响应为:

{
  "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-a1b2c3",
  "Name": "MyTestDatabaseSecret",
  "VersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE",
  "SecretString": "{\n  \"username\":\"david\",\n  \"password\":\"BnQw&XDWgaEeT9XGTT29\"\n}\n",
  "VersionStages": [
    "AWSPREVIOUS"
  ],
  "CreatedDate": 1523477145.713
}

现在我想获取用户名或密码的值

aws secretsmanager get-secret-value --secret-id MyTestDatabaseSecret --version-stage AWSPREVIOUS | jq --raw-output .SecretString | jq -r ."password"

输出

BnQw&XDWgaEeT9XGTT29

答案 6 :(得分:0)

<块引用>

没有 Jq 的 PowerShell 解决方案

$a = aws secretsmanager get-secret-value --region <region> --secret-id <secret-name>  | ConvertFrom-Json 

$a 所有 json 转换为对象类型

输出

ARN           : xxxxxx
Name          : postgxxx
VersionId     : fxxxx-xx-x-xx
SecretString  : {"key":"value","key2":"value"}
VersionStages : {xxxxx}
CreatedDate   : xxxxx.xx

$b = $a.SecretString | ConvertFrom-Json

输出

key : value
key2 : value

$b.key

**Output** 
value

答案 7 :(得分:-1)

使用它仅获取密钥的值。确保填写您的安全ID和密钥:

aws secretsmanager get-secret-value --secret-id <yourSecretID> | jq '.SecretString' | tail -c +2 | head -c -2 | tr -d '\' | jq .<YourSecretKey>