###前提・実現したいこと
ECSでコンテナを複数立ち上げ、各コンテナのWebサービスにhttp://<コンテナ名>.example.com/ でアクセス出来る環境を作りたいと考えております。 jwilder/nginx-proxyを使うことを考えています。
###発生している問題・エラーメッセージ
taskRoleArnを記入しないと:
nginx-proxyが殺される
taskRoleArnを記入すると:
aws ecs task-runするした時に以下のメッセージが出て起動できない
An error occurred (ClientException) when calling the RunTask operation: ECS was unable to assume the role that was provided for this task. Please verify that the role being passed has the proper trust relationship and permissions and that your IAM user has permissions to pass this role.
###該当のソースコード
task-definition.json
json
1{ 2 "containerDefinitions": [ 3 { 4 "name": "proxy-container", 5 "image": "jwilder/nginx-proxy:alpine", 6 "cpu": 1, 7 "memory": 1, 8 "portMappings": [ 9 { 10 "containerPort": 80, 11 "hostPort": 80, 12 "protocol": "tcp" 13 } 14 ], 15 "essential": true, 16 "environment": [ 17 { 18 "name": "ECS_ENABLE_TASK_IAM_ROLE", 19 "value": "true" 20 } 21 ], 22 "mountPoints": [ 23 { 24 "sourceVolume": "docker_sock", 25 "containerPath": "/tmp/docker.sock", 26 "readOnly": true 27 } 28 ] 29 } 30 ], 31 "volumes" : [ 32 { 33 "name": "docker_sock", 34 "host": { 35 "sourcePath": "/var/run/docker.sock" 36 } 37 } 38 ], 39 "taskRoleArn":"arn:aws:iam::000000:role/nginx-proxy", 40 "family": "test-app-proxy" 41}
上記taskRoleArnは以下のポリシーをアタッチしました
- AmazonEC2ContainerRegistryFullAccess
- AmazonEC2ContainerServiceFullAccess
- AmazonEC2ContainerServiceforEC2Role
- AmazonEC2ContainerServiceRole
aws ecs task-run
しているユーザーは
- AdministratorAccess
- policygen-20170511111111 (iam:PassRoleを許可するポリシー)
- EC2インスタンスの再起動
###試したこと
- sshで直接dockerを叩いた
- →起動し続け、目的の動作を果たした
- AWSサンプル実行時に自動作成された
ecsInstanceRole
に上記のポリシーをアタッチした- →コンテナは死んだ
ecsInstanceRole
のARNをtaskRoleArnに指定- →同様のエラーメッセージが出た
###補足情報(言語/FW/ツール等のバージョンなど)
$ aws --version
aws-cli/1.11.77 Python/3.6.0 Windows/7 botocore/1.5.40
amzn-ami-2016.09.g-amazon-ecs-optimized (ami-62745007)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。