0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ECRのイメージをECSがpullするためには、S3の権限は要らないけど経路は要る件

0
Posted at

まず結論

権限は要らないけど経路は要る

前提

  • privatesunetに配置したECSサービスのタスク定義で、ECRのイメージを指定した
  • タスク実行ロールはAmazonECSTaskExecutionRolePolicyを使用(下記)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        }
    ]
}
  • ECRへの経路として、com.amazonaws.ap-northeast-1.ecr.api, com.amazonaws.ap-northeast-1.ecr.dkrのインターフェース型のVPCEを設置

起こったこと

ecsサービスが起動しない!

サポートに問い合わせた結果

  1. ecrのdockerイメージをpullするためには、S3への経路が必要。
  2. AWS側でS3の経由してdocker pullするらしい。
  3. それに際してpresignedURLを内部的に使用している
  4. 従って、AmazonECSTaskExecutionRolePolicyにS3への権限がなくてもpullできるし、当然経路も必要
ECS タスクが ECR プライベートリポジトリからコンテナイメージをプルするための権限につきましては、ドキュメント[1]をご参照いただければと存じます。

[1] Amazon ECR のアクセス許可| Amazon ECS タスク実行IAM ロール - Amazon Elastic Container Service 
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_execution_IAM_role.html#task-execution-ecr-permissions 

ECS タスクは ECR プライベートリポジトリにアクセスするために、内部的に GetDownloadUrlForLayer API を使用します[2]。
GetDownloadUrlForLayer は、S3 にアクセスするための署名付き URL を取得します[3]。
ECS タスクは上記 API のアクセス権限により、実質的に S3 へのアクセス権限が確認されます。
タスク実行ロールに必要な権限につきましては、ドキュメント[4]をあわせてご確認いただけますと幸いです。

まとめ

S3への経路も作ってあげよう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?