Amazon Elastic Container Service (Amazon ECS) タスクに、Amazon Elastic Container Registry (Amazon ECR) イメージリポジトリからイメージを取得させる方法を教えてください。
簡単な説明
起動タイプで Amazon ECR イメージリポジトリにアクセスするには、次のいずれかのオプションを選択してください。
- Amazon Elastic Compute Cloud (Amazon EC2) 起動タイプの場合、ecsTaskExecutionRole またはコンテナインスタンスに関連付けられたインスタンスプロファイルへのアクセス許可を付与する必要があります。ただし、**ecsTaskExecutionRole に Amazon ECR のアクセス許可を与えることが常にベストプラクティスです。**アクセス許可がインスタンスとロールの両方に提供されている場合、ecsTaskExecutionRole が優先されます。
- AWS Fargate 起動タイプの場合、Amazon ECR イメージリポジトリにアクセスするための Amazon ECS タスク実行ロールアクセス許可を付与する必要があります。
解決策
EC2 起動タイプの場合
- AWS Identity and Access Management (IAM) コンソールを開きます。
- ナビゲーションペインで [ロール]、[ロールを作成] の順に選択します。
- [AWS サービス] ロールタイプを選択します。
- [ユースケース] セクションで、[EC2] を選択します。次に、[次へ] を選択します。
- デフォルトの AmazonEC2ContainerServiceforEC2Role 管理ポリシーを選択し、[次へ] を選択します。
注:AmazonEC2ContainerServiceforEC2Role ポリシー を使用すると、ECS クラスターにコンテナインスタンスを登録し、Amazon CloudWatch でログストリームを有効にすることもできます。
- 必要に応じてポリシーにタグを追加し、[次へ] を選択します。
- [ロール名] に一意の名前 (ECSRoleforEC2 など) を入力し、[ロールを作成] を選択します。
- 最新の Amazon ECS に最適化された Amazon Linux AMI を使用して、新しいコンテナインスタンスを起動します。
- 作成したロールを新しいコンテナインスタンスにアタッチします。
- タスク定義を作成します。
重要: タスク定義の containerDefinitions セクションで、イメージプロパティとして ECR イメージ aws_account_id.dkr.ecr.region.amazonaws.com/repository:tag を指定します。
- ステップ 10 で作成したタスク定義を使用してタスクまたはサービスを実行します。
- (オプション) インスタンスプロファイルにアクセス許可を与えたくない場合は、ECS Task Execution Role にアクセス許可を付与します。次に、ステップ 10 で作成したタスク定義を使用してタスクやサービスを実行します。
Fargate 起動タイプの場合
Amazon ECS タスク実行ロールは、Amazon ECS コンソールの初回実行時に自動的に作成されます。ロールが見つからないかロールが削除されている場合は、以下のステップを実行してください。
- IAM コンソールを開きます。
- ナビゲーションペインで [ロール]、[ロールを作成] の順に選択します。
- [信頼できるエンティティの種類の選択] セクションで、[Elastic Container Service] を選択します。
- [ユースケースの選択] では、[Elastic Container Service タスク] を選択してから [次へ] を選択します。
- [アクセス許可ポリシーのアタッチ] セクションで AmazonECSTaskExecutionRolePolicy を検索し、そのポリシーを選択してから [次へ] を選択します。
**注:**このポリシーでは、awslogs ログドライバー を使用するための許可も付与されます。
- [ロール名] に ecsTaskExecutionRole と入力し、[ロールを作成] を選択します。
- タスク定義を作成します。
重要: タスク定義の containerDefinitions セクションで、イメージプロパティとして ECR イメージ aws_account_id.dkr.ecr.region.amazonaws.com/repository:tag を指定します。ステップ 6 で作成した IAM ロールを選択します。
- ステップ 7 で作成したタスク定義を使用してタスクやサービスを実行します。
これでタスクやサービスは、Amazon ECR イメージリポジトリからイメージを取得できるようになりました。
関連情報
Amazon ECS の Amazon ECR イメージを使用する