Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dockerrun.aws.json structure for ECR Repo

We are switching from Docker Hub to ECR and I'm curious how to structure the Dockerrun.aws.json file to use this image. I attempted to modify the name as <my_ECR_URL>/<repo_name>:<image_tag> but this is not successful. I also saw the details of private registries using an authentication file on S3 but this doesn't seem like the correct route when aws ecr get-login is the recommended way to authenticate with ECR.

Can anyone point me to how I can use an ECR image in a Beanstalk Dockerrun.aws.json file?

If I look at the ECS Task Definition,there's a required attribute called com.amazonaws.ecs.capability.ecr-auth, but I'm not setting that anywhere in my Dockerrun.aws.json file and I'm not sure what needs to be there. Perhaps it is an S3 bucket? Something is needed as every time I try to run the Elastic Beanstalk created tasks from ECS, I get:

Run tasks failed
Reasons : ATTRIBUTE

Any insights are greatly appreciated.

Update I see from some other threads that this used to occur with earlier versions of the ECS agent but I am currently running Agent version 1.6.0 and Docker version 1.7.1, which I believe are the recommended versions. Is this possibly an issue with the Docker version?

like image 246
smugcloud Avatar asked Dec 29 '15 23:12

smugcloud


2 Answers

So it turns out, the ECS agent was only able to pull images with version 1.7, and that's where mine was falling. Updating the agent resolves my issue, and hopefully it helps someone else.

like image 61
smugcloud Avatar answered Sep 25 '22 10:09

smugcloud


This is most likely an issue with IAM roles if you are using a role that was previously created for Elastic Beanstalk. Ensure that the role that Elastic Beanstalk is running with has the AmazonEC2ContainerRegistryReadOnly managed policy attached

Source: http://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_IAM_policies.html

like image 37
bmajz Avatar answered Sep 23 '22 10:09

bmajz