Verwirrt durch die Rollenanforderung von ECS

13

Ich versuche, ein ECS einzurichten, aber bisher habe ich ein paar Berechtigungsprobleme festgestellt, für die ich in diesem Forum bereits einige Fragen erstellt habe.

Ich glaube, ich stecke bisher fest, weil ich ehrlich gesagt nicht alle diese Rollenanforderungen an einem Ort genau herausfinden kann.

Es scheint, als müsste ich mindestens zwei Rollen definieren:

1) ECS-Container http://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html

2) ECS-Task http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#enable_task_iam_roles

Ist es richtig?

Habe ich etwas verpasst? Gibt es spezielle IAM-Anforderungen?

Anthony Kong
quelle
Es ist unklar, wo das Problem liegt. Können Sie Ihre Frage so bearbeiten, dass sie Einzelheiten enthält?
EEAA

Antworten:

24

Die einzige erforderliche Rolle ist die Containerinstanz-IAM-Rolle . Mit dieser Rolle kann der ECS-Agent (der auf Ihrer EC2-Instanz ausgeführt wird) mit Amazon ECS kommunizieren.

Es gibt fünf weitere Rollen, die Sie für verschiedene Zwecke ebenfalls nützlich finden können:

  • ECS Service-Linked-Rolle (SLR) - Mit dieser Rolle kann Amazon ECS eine Vielzahl von AWS-Ressourcen verwalten, die Ihrer Anwendung in Ihrem Namen zugeordnet sind. Bei Verwendung eines Dienstes ermöglicht diese Rolle Amazon ECS, den Ihrem Dienst zugeordneten Load Balancer (klassische Load Balancer, Application Load Balancer und Network Load Balancer) und die Diensterkennung (mit Route 53 ) zu verwalten. Bei Verwendung des Task-Netzwerks ermöglicht diese Rolle Amazon ECS , Ihren Tasks Elastic Network Interfaces (ENIs) hinzuzufügen und zu trennen . Diese Rolle ist erforderlich, wenn Sie AWS Fargate verwenden .
  • IAM-Rolle "Service Scheduler" - Vor der Einführung der Service-Linked-Rolle (SLR) von ECS wurde diese Rolle in Verbindung mit einem Service verwendet , damit Amazon ECS den Ihrem Service zugeordneten Load Balancer verwalten kann. Wenn Sie einen Elastic Load Balancer (ob klassischer Load Balancer, Application Load Balancer oder Network Load Balancer) mit Ihrem ECS-Dienst verwenden möchten, können Sie diese Rolle verwenden. Jetzt, da die ECS-SLR verfügbar ist, können Sie eine der beiden Rollen verwenden. Möglicherweise möchten Sie diese Rolle jedoch weiterhin verwenden, wenn Sie die Berechtigungen einschränken möchten, die Amazon ECS zur Abdeckung bestimmter Lastenausgleichsressourcen gewährt werden.
  • Auto Scaling IAM-Rolle - Diese Rolle wird in Verbindung mit einem Service verwendet und ermöglicht dem Application Auto Scaling-Service, die gewünschte Anzahl Ihrer Services zu skalieren.
  • Aufgabe IAM Rolle - Diese Rolle kann mit jedem verwendet werden Task (von einem ins Leben gerufen , einschließlich Aufgaben - Service ). Diese Rolle ist einem EC2-Instanzprofil sehr ähnlich , ermöglicht es Ihnen jedoch, Berechtigungen einzelnen Aufgaben zuzuordnen, anstatt der zugrunde liegenden EC2-Instanz, die diese Aufgaben hostet. Wenn Sie mehrere verschiedene Anwendungen in Ihrem ECS-Cluster ausführen, für die unterschiedliche Berechtigungen erforderlich sind, können Sie mithilfe der Task-IAM-Rolle den einzelnen Tasks bestimmte Berechtigungen erteilen, anstatt sicherzustellen, dass jede EC2-Instanz in Ihrem Cluster über die entsprechenden Berechtigungen verfügt Anwendung würde brauchen.
  • Taskausführungsrolle - Diese Rolle ist bei Verwendung von AWS Fargate erforderlich und ersetzt die für den Starttyp nicht verfügbare Containerinstanz-IAM-RolleFARGATE . Mit dieser Rolle kann AWS Fargate Ihre Container-Bilder aus Amazon ECR abrufen und Ihre Protokolle an Amazon CloudWatch Logs weiterleiten . Diese Rolle wird auch verwendet (bei den Starttypen Fargate und EC2), um die Authentifizierung und Geheimnisse der privaten Registrierung für AWS Secrets Manager und AWS Systems Manager Parameter Store zu aktivieren .
Samuel Karp
quelle
1

Zusätzlich zu dieser sehr guten Erklärung von @ samuel-karp stieß ich heute auf ein Problem bei der Migration von der klassischen ELB zur ALB in Kombination mit benutzerdefinierten task_role_arnECS-Diensten.

Obwohl ich die hinter dem Link beschriebenen Anweisungen befolgt habe Task IAM role, war der Fehler

Die angegebene targetGroupArn kann keine Rolle übernehmen und validieren. Stellen Sie sicher, dass die übergebene ECS-Servicerolle die richtigen Berechtigungen hat.

Die Sache ist, dass sich der Dienst anscheinend beim Load Balancer registriert. Es hat nur geklappt, als ich den Auftraggeber von ecs.amazonaws.comnach getauscht habe

"Principal": { "Service": "ecs-tasks.amazonaws.com" }

Mana
quelle