Difference between AWS Elastic Container Service's (ECS) ExecutionRole and TaskRole

25,774

Solution 1

Referring to the documentation you can see that the execution role is the IAM role that executes ECS actions such as pulling the image and storing the application logs in cloudwatch.

The TaskRole then, is the IAM role used by the task itself. For example, if your container wants to call other AWS services like S3, SQS, etc then those permissions would need to be covered by the TaskRole.

Using a TaskRole is functionally the same as using access keys in a config file on the container instance. Using access keys in this way is not secure and is considered very bad practice. I include this in the answer because many people reading this already understand access keys.

Solution 2

ECS task execution role is capabilities of ECS agent (and container instance), e.g:

  • Pulling a container image from Amazon ECR
  • Using the awslogs log driver

ECS task role is specific capabilities within the task itself, e.g:

  • When your actual code runs
Share:
25,774

Related videos on Youtube

johnklawlor
Author by

johnklawlor

Updated on December 05, 2020

Comments

  • johnklawlor
    johnklawlor over 3 years

    I'm using AWS's CloudFormation, and I recently spent quite a bit of time trying to figure out why the role I had created and attached policies to was not enabling my ECS task to send a message to a Simple Queue Service (SQS) queue.

    I realized that I was incorrectly attaching the SQS permissions policy to the Execution Role when I should have been attaching the policy to the Task Role. I cannot find good documentation that explains the difference between the two roles. CloudFormation documentation for the two of them are here: ExecutionRole and TaskRole

    • Alex Nauda
      Alex Nauda about 4 years
      "I recently spent quite a bit of time" hits too close to home! :-)
  • Chamin Wickramarathna
    Chamin Wickramarathna almost 5 years
    Anyway best practice is using attached IAM role rather locally stored access keys.
  • Marcin
    Marcin over 4 years
    There are also Container Instance Roles. The important thing to note is that your containers will automatically be able to use these roles as well. So best practice is to have the Container instance Roles at minimum, and extend it (if needed) by task roles.
  • thnee
    thnee about 3 years
    What is the best practice, should task role and task execution role be the same role or two different roles?
  • lony
    lony almost 3 years
    This is a good primer on the described differences youtube.com/watch?v=nKhtSmYRfxs