2

AWS Secrets Manager を使用してシークレットを保存しました。ECS タスク定義でシークレットを環境変数として取得しようとしています。

docsに従って、次のセクションを含む ECS タスク定義を作成しました。

"secrets": [
  {
    "name": "MY_PASSWORD",
    "valueFrom": "/aws/reference/secretsmanager/my_password"
  }
],

私が理解しているように、私のタスクが開始されると、これは次のようになります。

  1. my_passwordSecrets Manager からシークレットの最新バージョンを取得します
  2. タスク内で復号化します
  3. 環境変数に割り当てますMY_PASSWORD

シークレットの特定のバージョンをタスク定義にロードしたいので、シークレットを変更すると、新しいタスク定義を作成することになります。

それをしてもいいですか?


私はGoogleで検索しましたが、これをやろうとしている人を見つけることができませんでした.

valueFromパラメータにバージョン ID を追加してみました。

"secrets": [
  {
    "name": "MY_PASSWORD",
    "valueFrom": "/aws/reference/secretsmanager/my_password:39231735-0279-4093-b8d1-7acd5a467295"
  }
],

しかし、それはエラーになりました:

シークレット es_username に指定された Systems Manager パラメータ名が無効です。パラメータ名は最大 2048 文字で、次の文字と記号を含めることができます: a-zA-Z0-9_.-,

4

1 に答える 1

0

AWS Docsに従って、これを機能させるには Secrets ARN を渡す必要があります。

構文:

{
    "containerDefinitions": [{
        "secrets": [{
            "name": "environment_variable_name",
            "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
        }]
    }]
}

シークレットの特定のバージョンを取得するために、ステージング ラベルまたは特定のバージョン ID を渡すことができます。

ステージング ラベルの使用例:

{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name::AWSPREVIOUS:"
    }]
  }]
}

バージョン ID を使用した例:

{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name:::VersionID"
    }]
  }]
}
于 2021-09-10T07:15:23.870 に答える