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マシンで実行されています。
使用 --query
CLIのオプションを使用して、シークレットのみを抽出します。
aws secretsmanager get-secret-value --secret-id secrets --query SecretString
aws secretsmanager get-secret-value --secret-id secrets| jq --raw-output '.SecretString' | jq -r .API_KEY
jqを使用して印刷できます。
HelloV回答への小さな追加。出力パラメーターtext
を追加して、引用符を削除できます。
aws secretsmanager get-secret-value --secret-id secrets --query SecretString --output text
複数のシークレットがあり、jsonが返される場合、次のコマンドを使用して、パスワードの正確な値を取得できます。
aws secretsmanager get-secret-value --secret-id <secret_bucket_name> | jq --raw-output '.SecretString' | jq -r .key_for_password
そのため、SecretsManagerに保存した2つの変数の値である、必要なものを抽出するときに少し問題に直面しました。だからここに私のために働いたものがあります。
注:これは、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