Mod*_*man 8 linux amazon-web-services aws-cli aws-secrets-manager
我正在检索我使用AWS cli存储在AWS秘密管理器中的秘密,如下所示:
aws secretsmanager get-secret-value --secret-id secrets
Run Code Online (Sandbox Code Playgroud)
哪个回报
arn:aws:secretsmanager<ID>:secret:my_secrets <number> my_secrets {"API_KEY":"ABCDEFGHI"} <UUID string>
VERSIONSTAGES AWSCURRENT
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何得到秘密("API_KEY":"ABCDEFGHI")?我需要将这些秘密移到我的register-task-definition环境变量中.最好的方法是将它们存储在文件中并在我们之后删除它或将它们存储在变量中.它在linux机器上运行.
谢谢
kad*_*dir 20
helloV 答案的小补充。您可以添加输出参数text以删除引号。
aws secretsmanager get-secret-value \
--secret-id secrets \
--query SecretString \
--output text
Run Code Online (Sandbox Code Playgroud)
Jon*_*Jon 13
如果您的秘密只有一个密钥/对值,并且您只想打印该值,并且您不想依赖先安装了 jq 的系统,您可以执行以下操作:
aws secretsmanager get-secret-value --secret-id secrets --query SecretString --output text | cut -d: -f2 | tr -d \"}
Run Code Online (Sandbox Code Playgroud)
hel*_*loV 12
使用--queryCLI选项仅提取密码.
aws secretsmanager get-secret-value --secret-id secrets --query SecretString
Run Code Online (Sandbox Code Playgroud)
小智 11
因此,我在提取所需内容(存储在 SecretsManager 中的两个变量的值)时遇到了一些麻烦。所以这对我有用。
注意:这是 AWS SecretsManager 文档中的示例。
aws secretsmanager get-secret-value --secret-id MyTestDatabaseSecret --version-stage AWSPREVIOUS
Run Code Online (Sandbox Code Playgroud)
{
"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
}
Run Code Online (Sandbox Code Playgroud)
aws secretsmanager get-secret-value --secret-id MyTestDatabaseSecret --version-stage AWSPREVIOUS | jq --raw-output .SecretString | jq -r ."password"
Run Code Online (Sandbox Code Playgroud)
BnQw&XDWgaEeT9XGTT29
Run Code Online (Sandbox Code Playgroud)
小智 9
aws secretsmanager get-secret-value --secret-id secrets| jq --raw-output '.SecretString' | jq -r .API_KEY
使用jq可以打印。
当您有多个秘密并获得 json 返回时,您可以使用获取密码的确切值
aws secretsmanager get-secret-value --secret-id <secret_bucket_name> | jq --raw-output '.SecretString' | jq -r .key_for_password
Run Code Online (Sandbox Code Playgroud)
所有答案都有效,但需要第三方集成(主要jq)。以下 bash 命令无需任何其他第三方解决方案即可获取相关值 -
SECRET_ARN=arn:aws:secretsmanager:eu-west-1:123456:secret:/test
SECRET_KEY=DB_PASSWORD
aws secretsmanager get-secret-value \
--secret-id $SECRET_ARN \
--query SecretString \
--output text | grep -o '"$SECRET_KEY":"[^"]*' | grep -o '[^"]*$'
Run Code Online (Sandbox Code Playgroud)
这里的很多答案都取决于jq. 如果您不想安装任何其他依赖项,可以使用python3单行:
aws secretsmanager get-secret-value \
--output text \
--query SecretString \
--secret-id my-secret-name \
| python3 -c 'import json, sys; print(json.load(sys.stdin)["my-secret-key"])'
Run Code Online (Sandbox Code Playgroud)
基于helloV 的回答。