Amazon ECS CodeDeploy IAM-Rolle - Amazon ECS

Amazon ECS CodeDeploy IAM-Rolle

Bevor Sie den CodeDeploy Blau/Grün-Bereitstellungstyp mit Amazon ECS verwenden können, benötigt der CodeDeploy-Service die Berechtigungen, um Ihren Amazon-ECS-Service in Ihrem Namen zu aktualisieren. Diese Berechtigungen werden von der CodeDeploy-IAM-Rolle bereitgestellt (ecsCodeDeployRole).

Anmerkung

IAM-Benutzer benötigen auch Berechtigungen, um CodeDeploy zu verwenden. Diese Berechtigungen werden in Erforderliche IAM-Berechtigungen für die Blau/Grün-Bereitstellung beschrieben.

Es werden zwei verwaltete Richtlinien bereitgestellt. Die unten gezeigte Richtlinie AWSCodeDeployRoleForECS berechtigt CodeDeploy, jede Ressource mit der zugehörigen Aktion zu aktualisieren.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:DescribeServices", "ecs:CreateTaskSet", "ecs:UpdateServicePrimaryTaskSet", "ecs:DeleteTaskSet", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:ModifyRule", "lambda:InvokeFunction", "cloudwatch:DescribeAlarms", "sns:Publish", "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": [ "ecs-tasks.amazonaws.com" ] } } } ] }

Die unten dargestellte Richtlinie AWSCodeDeployRoleForECSLimited erteilt CodeDeploy Berechtigungen mit stärkeren Einschränkungen.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:DescribeServices", "ecs:CreateTaskSet", "ecs:UpdateServicePrimaryTaskSet", "ecs:DeleteTaskSet", "cloudwatch:DescribeAlarms" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "sns:Publish" ], "Resource": "arn:aws:sns:*:*:CodeDeployTopic_*", "Effect": "Allow" }, { "Action": [ "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:ModifyRule" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:*:*:function:CodeDeployHook_*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } }, "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/ecsTaskExecutionRole", "arn:aws:iam::*:role/ECSTaskExecution*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "ecs-tasks.amazonaws.com" ] } } } ] }

So erstellen Sie eine IAM-Rolle für CodeDeploy

  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.

  3. Wählen Sie im Abschnitt Select type of trusted entity (Typ der vertrauenswürdigen Entity auswählen) die Option AWS-Service.

  4. Wählen Sie für Choose the service that will use this role (Wählen Sie den Service, der diese Rolle verwenden soll) die Option CodeDeploy.

  5. Wählen Sie unter Select your use case (Wählen Sie Ihren Anwendungsfall) CodeDeploy – ECS und dann Next (Weiter).

  6. Führen Sie im Abschnitt Attach permissions policy (Berechtigungs-Richtlinie anfügen) die folgenden Schritte aus:

    1. Suchen Sie nach AWSCodeDeployRoleForECS und wählen Sie dann die Richtlinie aus.

    2. Wählen Sie unter Set permissions boundary (optional) (Berechtigungsgrenze festlegen (optional)) Create role withough a permission boundary (Rolle ohne Berechtigungsgrenze erstellen) aus.

    3. Wählen Sie Next (Weiter).

  7. Führen Sie unter Role details (Rollendetails) die folgenden Schritte aus:

    1. Geben Sie für Role name (Rollenname) ecsCodeDeployRole und eine optionale Beschreibung ein.

    2. Geben Sie für Add tags (optional) Tags hinzufügen (optional) alle benutzerdefinierten Tags an, die der Richtlinie zugeordnet werden sollen.

  8. Wählen Sie Create role (Rolle erstellen) aus.

So fügen Sie die erforderlichen Berechtigungen zur Amazon ECS CodeDeploy IAM-Rolle hinzu

  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Suchen Sie in der Liste der Rollen nach ecsCodeDeployRole. Wenn die Rolle nicht vorhanden ist, verwenden Sie die obige Vorgehensweise, um die Rolle zu erstellen. Wenn die Rolle vorhanden ist, wählen Sie die Rolle aus, um die zugeordneten Richtlinien zu sehen.

  3. Überprüfen Sie im Abschnitt Permissions policies (Berechtigungsrichtlinien), dass entweder die verwaltete Richtlinie AWSCodeDeployRoleForECS oder AWSCodeDeployRoleForECSLimited an die Rolle angefügt ist. Wenn die Richtlinie zugewiesen ist, ist Ihre Amazon ECS-CodeDeploy-Servicerolle korrekt konfiguriert. Andernfalls führen Sie die folgenden Teilschritte aus, um die Richtlinie zuzuweisen.

    1. Wählen Sie Add Permissions (Berechtigungen hinzufügen), Attach policies (Richtlinien anfügen).

    2. Um die Liste der verfügbaren Richtlinien für das Anfügen zu reduzieren, geben Sie im Feld Filter entweder AWSCodeDeployRoleForECS oder AWSCodeDeployRoleForECSLimited ein.

    3. Aktivieren Sie das Kontrollkästchen links neben der verwalteten AWS-Richtlinie und wählen Sie Attach policy (Richtlinie hinzufügen).

  4. Wählen Sie Trust Relationships (Vertrauensbeziehungen) aus.

  5. Überprüfen Sie, dass die Vertrauensstellung die folgende Richtlinie enthält. Wenn die Vertrauensstellung mit der unten angegebenen Richtlinie übereinstimmt, wählen Sie Cancel. Wenn die Vertrauensstellung nicht übereinstimmt, wählen Sie Edit trust policy (Vertrauensrichtlinie bearbeiten), kopieren Sie die Richtlinie in das Fenster Policy Document (Richtliniendokument) und wählen Sie Update policy (Richtlinie aktualisieren).

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  6. Wenn die Aufgaben in Ihrem Amazon-ECS-Service mit dem Blau/Grün-Bereitstellungstyp die Verwendung der Aufgabenausführungsrolle oder eines Aufgabenrollen-Override erfordern, müssen Sie die Berechtigung iam:PassRole für jede Aufgabenausführungsrolle oder jeden Aufgabenrollen-Override als Inline-Richtlinie zur CodeDeploy-IAM-Rolle hinzufügen. Weitere Informationen finden Sie unter IAM-Rolle für die Amazon ECS-Aufgabenausführung und IAM-Rollen für Aufgaben.

    Befolgen Sie die folgenden Teilschritte, um eine Inline-Richtlinie zu erstellen.

    1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

    2. Suchen Sie in der Liste der Rollen nach ecsCodeDeployRole. Wenn die Rolle nicht vorhanden ist, verwenden Sie die obige Vorgehensweise, um die Rolle zu erstellen. Wenn die Rolle vorhanden ist, wählen Sie die Rolle aus, um die zugeordneten Richtlinien zu sehen.

    3. Wählen Sie im Abschnitt Permissions policies (Berechtigungsrichtlinien) Add inline policy (Inline-Richtlinie hinzufügen).

    4. Wählen Sie die Registerkarte JSON und fügen Sie den folgenden Richtlinientext hinzu.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::<aws_account_id>:role/<ecsTaskExecutionRole_or_TaskRole_name>" ] } ] }
      Anmerkung

      Geben Sie den vollständigen ARN Ihrer Aufgabenausführungsrolle oder Ihres Aufgabenrollen-Overrides an.

    5. Wählen Sie Review policy (Richtlinie überprüfen) aus.

    6. Geben Sie unter Name einen Namen für die hinzugefügte Richtlinie ein und wählen Sie dann Create policy (Richtlinie erstellen).