ecs-cli registry-creds up - Amazon Elastic Container Service

ecs-cli registry-creds up

Amazon ECS タスク定義で使用する AWS Secrets Manager のシークレットと IAM タスク実行ロールを生成します。

重要

説明されている機能の中には、最新バージョンの Amazon ECS CLI でのみ使用できるものがあります。最新バージョンの詳細については、「Amazon ECS CLI のインストール」を参照してください。

Syntax

ecs-cli registry-creds up ./creds_input_file.yml --role-name value [--update-existing-secrets] [--no-role] [--no-output-value] [--output-dir value] [--tags key1=value1,key2=value2] [--help]

Options

名前

説明

./creds_input_file.yml

プライベートレジストリ認証に関連する値を指定します。詳細については、「プライベートレジストリの認証の使用」を参照してください。

必須: はい

--role-name value

新しいタスク実行ロールに使用する名前。ロールがすでに存在する場合は、新しいポリシーは既存のロールにアタッチされます。詳細については、「Amazon ECS タスク実行IAM ロール」を参照してください。

注記

必要としていないアプリケーションにシークレットへのアクセス権限を付与しないように、各アプリケーションに固有の新しいタスク実行ロールの作成をお勧めします。

必須: はい

--update-existing-secrets

既存のシークレットを新しい認証情報値で更新する必要があるかどうかを指定します。

必須: いいえ

--no-role

指定した場合、タスク実行ロールが作成されません。

必須: いいえ

--no-output-file

指定した場合、compose で使用するための出力ファイルが作成されません。

必須: いいえ

--output-dir value

出力ファイルが作成されるディレクトリです。何も指定しない場合、ファイルは現在の作業ディレクトリに作成されます。

必須: いいえ

--tags key1=value1,key2=value2

AWS リソースに適用されるメタデータを指定します。各タグはキーとオプションの値で構成されます。タグは次の形式を使用します: key1=value1,key2=value2,key3=value3。詳細については、「リソースのタグ付け」を参照してください。

タイプ: キー値ペア

必須: いいえ

--help, -h

指定したコマンドのヘルプテキストを表示します。

必須: いいえ

プライベートレジストリの認証の使用

プライベートレジストリ認証情報を管理する ecs-cli registry-creds up コマンドを使用する場合、入力ファイルを使用して指定される特定のフィールドがあります。このコマンドを使用する場合は、入力ファイルへのパスまたはファイル名を指定する必要があります。

現在、このファイルは以下のスキーマをサポートしています。

version: 1 registry_credentials: registry_name: secrets_manager_arn: string username: string password: string kms_key_id: string container_names: - string

各フィールドの説明は、以下のとおりです。

registry_name

新しいシークレットを作成する、または既存のシークレットを更新するとき、シークレット名として使用します。シークレット名に使用できるのは、ASCII 文字、数字、または次の記号のみです: /_+=.@- Amazon ECS CLI は CLI で作成されたことがわかるように、シークレット名にプレフィックスを追加します。詳細については、「CreateSecret」を参照してください。

必須: いいえ

secrets_manager_arn

既存のシークレットの完全な ARN です。既存のシークレットを指定または更新するために使用されます。次のような形式になります。

arn:aws:secretsmanager:region:aws_account_id:secret:secret_name

必須: いいえ

username

プライベートレジストリのユーザー名を指定します。機密性の高い情報を入力ファイルに格納することを確実に避けるために、ユーザー名に環境変数を使用することをお勧めします。環境変数を使用する場合は、${VAR_NAME} 形式を使用します。

必須: いいえ

password

プライベートレジストリのパスワードを指定します。機密性の高い情報を入力ファイルに格納することを確実に避けるために、パスワードに環境変数を使用することをお勧めします。環境変数を使用する場合は、${VAR_NAME} 形式を使用します。

必須: いいえ

kms_key_id

シークレットを暗号化するために使用される、ARN、キー ID、または AWS KMS key (KMS key) のエイリアスを指定します。詳細については、「CreateSecret」を参照してください。

必須: いいえ

container_names

Docker Compose ファイルで、サービス名に対応します。詳細については、「ecs-cli compose」または「ecs-cli compose service」を参照してください。

必須: いいえ

リソースのタグ付け

Amazon ECS CLI では AWS リソースにリソースタグの形式でメタデータを追加できます。各タグはキーとオプションの値で構成されます。リソースタグはコスト配分、オートメーション、アクセスコントロールに使用できます。詳細については、「Amazon ECS リソースのタグ付け」を参照してください。

ecs-cli registry-creds up コマンドを使用する場合、--tags フラグを使用して、Secrets Manager シークレットにメタデータタグを追加し、その後 IAM ロールに追加できます。

注記

アカウント内の既存の Secrets Manager シークレットにはタグ付けされますが、IAM ロールは作成中にのみタグ付けできます。既存の IAM ロールを使用している場合、新しいタグを追加することはできません。

Examples

プライベートレジストリ認証情報によるシークレットの作成

この例では、creds_input.yml 入力ファイルで指定されているプライベートレジストリ認証情報でシークレットを作成します。

creds_input.yml というプライベートレジストリ認証情報ファイルを作成します。これにはプライベートレジストリのユーザー名とパスワード、さらにプライベートレジストリ認証情報を使用するコンテナの名前が含まれます。機密性の高い情報を入力ファイルに格納することを確実に避けるために、認証情報に環境変数を使用することをお勧めします。このファイルのコンテナ名は、Docker Compose ファイルのサービス名 database に対応しています。

version: '1' registry_credentials: dockerhub: username: ${MY_REPO_USERNAME} password: ${MY_REPO_PASSWORD} container_names: - database
重要

機密性の高い情報を入力ファイルに格納することを確実に避けるために、パスワードに環境変数を使用することをお勧めします。入力ファイルに機密性の高い情報が含まれている場合は、使用後に必ず削除します。

シークレットを作成します。このコマンドにより、入力ファイルから名前 (この例では dockerhub) を使用してシークレットを作成します。Amazon ECS CLI は CLI で作成されたことがわかるように、シークレット名にプレフィックスを追加します。タスク実行ロールの名前も指定します。

ecs-cli registry-creds up ./creds_input.yml --role-name secretsTaskExecutionRole

出力:

INFO[0000] Processing credentials for registry dockerhub...
INFO[0000] New credential secret created: arn:aws:secretsmanager:region:aws_account_id:secret:amazon-ecs-cli-setup-dockerhub-VeDqXm
INFO[0000] Creating resources for task execution role ecsTaskExecutionRole...
INFO[0000] Created new task execution role arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole
INFO[0000] Created new task execution role policy arn:aws:iam::aws_account_id:policy/amazon-ecs-cli-setup-bugBashRole-policy-20181023T210805Z
INFO[0000] Attached AWS managed policy arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy to role ecsTaskExecutionRole
INFO[0001] Attached new policy arn:aws:iam::aws_account_id:policy/amazon-ecs-cli-setup-bugBashRole-policy-20181023T210805Z to role ecsTaskExecutionRole
INFO[0001] Writing registry credential output to new file C:\Users\brandejo\regcreds\regCredTest\ecs-registry-creds_20181023T210805Z.yml

タスク実行ロール名、作成されたシークレットの ARN、コンテナ名が含まれるこのコマンドで出力ファイルは作成されます。このファイルは、--registry-creds または ecs-cli compose コマンドのいずれかを使用したとき ecs-cli compose service オプションを使用して指定されます。詳細については、「ecs-cli compose」または「ecs-cli compose service」を参照してください。

次は、出力ファイルの例です。

version: "1"
registry_credential_outputs:
  task_execution_role: secretsTaskExecutionRole
  container_credentials:
    dockerhub:
      credentials_parameter: arn:aws:secretsmanager:region:aws_account_id:secret:amazon-ecs-cli-setup-dockerhub-bbHiEk
      container_names:
      - database

KMS キーを使用するプライベートレジストリ認証情報によるシークレットの作成

この例では、creds_input.yml 入力ファイルで指定されている KMS キーを使用して暗号化されているプライベートレジストリ認証情報でシークレットを作成します。

creds_input.yml というプライベートレジストリ認証情報ファイルを作成します。これにはプライベートレジストリのユーザー名とパスワード、さらにプライベートレジストリ認証情報を使用するコンテナの名前が含まれます。機密性の高い情報を入力ファイルに格納することを確実に避けるために、認証情報に環境変数を使用することをお勧めします。指定された KMS キーの ARN は、シークレットを格納する際に値を暗号化します。このファイルのコンテナ名は、Docker Compose ファイルのサービス名 database に対応しています。

version: '1' registry_credentials: dockerhub: username: ${MY_REPO_USERNAME} password: ${MY_REPO_PASSWORD} kms_key_id: kmsKeyARN container_names: - database
重要

機密性の高い情報を入力ファイルに格納することを確実に避けるために、パスワードに環境変数を使用することをお勧めします。入力ファイルに機密性の高い情報が含まれている場合は、使用後に必ず削除します。

複数のプライベートレジストリに対する複数のシークレットの作成

この例では、複数のレジストリに対してプライベートレジストリ認証情報で複数のシークレットを作成します。

2 つの異なるプライベートレジストリからの認証情報が含まれる creds_input.yml という名前のプライベートレジストリ認証情報ファイルを作成します。認証情報の各セットは、独自のシークレットを作成するために使用されます。この例では、シークレットの 1 つを使用して 2 つの異なるコンテナも表示されます。

version: '1' registry_credentials: dockerhub: username: ${MY_REPO_USERNAME} password: ${MY_REPO_PASSWORD} container_names: - prod - dev quay.io: username: ${MY_REPO_USERNAME} password: ${MY_REPO_PASSWORD} container_names: - database
重要

機密性の高い情報を入力ファイルに格納することを確実に避けるために、パスワードに環境変数を使用することをお勧めします。入力ファイルに機密性の高い情報が含まれている場合は、使用後に必ず削除します。