web-dev-qa-db-ja.com

AWS CLIを使用してAWSシークレットマネージャーからシークレットを解析する

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マシンで実行されています。

11
Moddaman

使用 --query CLIのオプションを使用して、シークレットのみを抽出します。

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

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

jqを使用して印刷できます。

9
Vijay Kumar

HelloV回答への小さな追加。出力パラメーターtextを追加して、引用符を削除できます。

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

複数のシークレットがあり、jsonが返される場合、次のコマンドを使用して、パスワードの正確な値を取得できます。

aws secretsmanager get-secret-value --secret-id <secret_bucket_name> | jq --raw-output '.SecretString' | jq -r .key_for_password
1
Aseem Jain

そのため、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
0
Yash Pal Singh