Schritt 4: Erstellen eines IAM-Instance-Profils für Ihre Amazon EC2-Instances - AWS CodeDeploy

Schritt 4: Erstellen eines IAM-Instance-Profils für Ihre Amazon EC2-Instances

Anmerkung

Wenn Sie die Amazon ECS- oder AWS Lambda-Plattform für die Datenverarbeitung verwenden, überspringen Sie diesen Schritt. Amazon ECS-Bereitstellungen stellen einen Amazon ECS-Service bereit und AWS Lambda-Bereitstellungen stellen eine serverlose Lambda-Funktionsversion bereit, deshalb ist kein Instance-Profil für Amazon EC2-Instances erforderlich.

Ihre Amazon EC2-Instances müssen auf die Amazon S3-Buckets oder GitHub-Repositorys zugreifen dürfen, in denen die Anwendungen gespeichert sind. Damit Sie Amazon EC2-Instances starten können, die mit CodeDeploy kompatibel sind, müssen Sie eine zusätzliche IAM-Rolle erstellen, ein sogenanntes Instance-Profil. Mithilfe der Anleitungen auf dieser Seite können Sie ein IAM-Instance-Profil erstellen, das sich Ihren Amazon EC2-Instances anfügen lässt. Diese Rolle erteilt CodeDeploy die Berechtigung, auf die Amazon S3-Buckets oder GitHub-Repositorys zuzugreifen, in denen Ihre Anwendungen gespeichert sind.

Zur Erstellung eines IAM-Instance-Profils können Sie die AWS CLI, die IAM-Konsole oder die IAM-APIs verwenden.

Anmerkung

IAM-Instance-Profile lassen sich sowohl während des Instance-Starts als auch nach dem Instance-Start an Amazon EC2-Instances anfügen. Weitere Informationen hierzu erhalten Sie unter Instance-Profile.

Erstellen eines IAM-Instance-Profils für Ihre Amazon EC2-Instances (CLI)

Diese Anleitung setzt voraus, dass Sie bereits die Anweisungen in den ersten drei Schritten unter Erste Schritte mit CodeDeploy befolgt haben.

  1. Erstellen Sie auf Ihrem Entwicklungscomputer eine Textdatei mit dem Namen CodeDeployDemo-EC2-Trust.json. Kopieren Sie den folgenden Code in die Datei. Er erlaubt es Amazon EC2, in Ihrem Namen zu agieren:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Erstellen Sie im selben Verzeichnis eine Textdatei mit dem Namen CodeDeployDemo-EC2-Permissions.json. Fügen Sie den folgenden Inhalt ein:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
    Anmerkung

    Sie sollten diese Richtlinie auf die Amazon S3-Buckets einschränken, auf die Ihre Amazon EC2-Instances zugreifen müssen. Stellen Sie sicher, dass Sie den Zugriff auf die Amazon S3-Buckets gewähren, die den CodeDeploy-Agenten enthalten. Andernfalls kann ein Fehler auftreten, wenn der CodeDeploy-Agent auf den Instances installiert oder aktualisiert wird. Verwenden Sie die folgende Richtlinie, um dem IAM-Instance-Profil Zugriff nur auf bestimmte CodeDeploy-Ressourcenkit-Buckets in Amazon S3 zu gewähren. Entfernen Sie jedoch die Zeilen für Buckets, auf die kein Zugriff möglich sein soll:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }
  3. Rufen Sie aus dem gleichen Verzeichnis den Befehl create-role auf, um eine IAM-Rolle namens CodeDeployDemo-EC2-Instance-Profile unter Verwendung der Informationen in der ersten Datei zu erstellen:

    Wichtig

    Achten Sie darauf, dass file:// vor dem Dateinamen steht. Dies ist bei diesem Befehl erforderlich.

    aws iam create-role --role-name CodeDeployDemo-EC2-Instance-Profile --assume-role-policy-document file://CodeDeployDemo-EC2-Trust.json
  4. Rufen Sie aus dem gleichen Verzeichnis den Befehl put-role-policy auf, um der Rolle namens CodeDeployDemo-EC2-Instance-Profile unter Verwendung der Informationen in der zweiten Datei die Berechtigungen zuzuweisen:

    Wichtig

    Achten Sie darauf, dass file:// vor dem Dateinamen steht. Dies ist bei diesem Befehl erforderlich.

    aws iam put-role-policy --role-name CodeDeployDemo-EC2-Instance-Profile --policy-name CodeDeployDemo-EC2-Permissions --policy-document file://CodeDeployDemo-EC2-Permissions.json
  5. Rufen Sie attach-role-policy auf, um der Rolle Amazon EC2 Systems Manager-Berechtigungen zu erteilen, damit der CodeDeploy-Agent von SSM installiert werden kann. Diese Richtlinie ist nicht erforderlich, wenn Sie planen, den Agent über den öffentlichen Amazon S3-Bucket mit der Befehlszeile zu installieren. Erfahren Sie mehr über die Installation des CodeDeploy-Agenten.

    aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore --role-name CodeDeployDemo-EC2-Instance-Profile
  6. Rufen Sie den Befehl create-instance-profile gefolgt vom Befehl add-role-to-instance-profile auf, um ein IAM-Instance-Profil namens CodeDeployDemo-EC2-Instance-Profile zu erstellen. Das Instance-Profil erlaubt es Amazon EC2, die IAM-Rolle namens CodeDeployDemo-EC2-Instance-Profile beim ersten Start einer Amazon EC2-Instance an diese Instance zu übergeben:

    aws iam create-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile aws iam add-role-to-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile --role-name CodeDeployDemo-EC2-Instance-Profile

    Falls Sie den Namen des IAM-Instance-Profils abrufen müssen, finden Sie Informationen zu dem entsprechenden Befehl list-instance-profiles-for-role im IAM-Abschnitt der AWS CLI-Referenz.

Damit haben Sie ein IAM-Instance-Profil erstellt, das Sie Ihren Amazon EC2-Instances anfügen können. Weitere Informationen erhalten Sie unter IAM-Rollen für Amazon EC2 im Amazon EC2-Benutzerhandbuch.

Erstellen eines IAM-Instance-Profils für Ihre Amazon EC2-Instances (Konsole)

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der IAM-Konsole im Navigationsbereich die Option Policies (Richtlinien) und dann Create policy (Richtlinie erstellen) aus. (Wenn die Schaltfläche Get Started angezeigt wird, klicken Sie darauf und wählen Sie anschließend Create Policy.)

  3. Kopieren Sie auf der Seite Create Policy (Richtlinie erstellen) Folgendes in die Registerkarte JSON:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
    Anmerkung

    Sie sollten diese Richtlinie auf die Amazon S3-Buckets einschränken, auf die Ihre Amazon EC2-Instances zugreifen müssen. Stellen Sie sicher, dass Sie den Zugriff auf die Amazon S3-Buckets gewähren, die den CodeDeploy-Agenten enthalten. Andernfalls kann ein Fehler auftreten, wenn der CodeDeploy-Agent auf den Instances installiert oder aktualisiert wird. Verwenden Sie die folgende Richtlinie, um dem IAM-Instance-Profil Zugriff nur auf bestimmte CodeDeploy-Ressourcenkit-Buckets in Amazon S3 zu gewähren. Entfernen Sie jedoch die Zeilen für Buckets, auf die kein Zugriff möglich sein soll:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }
  4. Wählen Sie Review policy aus.

  5. Geben Sie auf der Seite Create Policy (Richtlinie erstellen) CodeDeployDemo-EC2-Permissions in das Feld Policy Name (Richtlinienname) ein.

  6. (Optional) Geben Sie im Feld Description (Beschreibung) eine Beschreibung für die Richtlinie ein.

  7. Klicken Sie auf Create Policy.

  8. Wählen Sie im Navigationsbereich Roles (Rollen) und dann Create role (Rolle erstellen).

  9. Wählen Sie auf der Seite Create role (Rolle erstellen) die Option AWS service (AWS-Service) und in der Liste Choose the service that will use this role (Service auswählen, der diese Rolle verwenden wird) den Eintrag EC2.

  10. Wählen Sie Ihren Anwendungsfall aus der Liste aus und wählen Sie EC2.

  11. Wählen Sie Next: Permissions aus.

  12. Aktivieren Sie in der Liste der Richtlinien das Kontrollkästchen neben der Richtlinie, die Sie gerade erstellt haben (CodeDeployDemo-EC2-Permissions). Verwenden Sie ggf. das Suchfeld, um die Richtlinie zu finden.

  13. Um den CodeDeploy-Agent mit Systems Manager zu installieren oder zu konfigurieren, aktivieren Sie das Kontrollkästchen neben AmazonSSMManagedInstanceCore. Diese AWS verwaltete Richtlinie ermöglicht einer Instance, Systems Manager-Service-Kernfunktionalität zu verwenden. Verwenden Sie ggf. das Suchfeld, um die Richtlinie zu finden. Diese Richtlinie ist nicht erforderlich, wenn Sie planen, den Agent über den öffentlichen Amazon S3-Bucket mit der Befehlszeile zu installieren. Erfahren Sie mehr über die Installation des CodeDeploy-Agenten.

  14. Wählen Sie Next: Tags (Weiter: Tags) aus

  15. Wählen Sie auf der Seite Add Tags (optional) (Tags hinzufügen (optional)) die Option Next: Review (Weiter: Prüfen) aus.

  16. Geben Sie auf der Seite Review (Prüfen) im Feld Role name (Rollenname) einen Namen für die Servicerolle ein (z. B. CodeDeployDemo-EC2-Instance-Profile), and then choose Create role.

    Sie können auch im Feld Role description (Rollenbeschreibung) eine Beschreibung für diese Servicerolle eingeben.

Damit haben Sie ein IAM-Instance-Profil erstellt, das Sie Ihren Amazon EC2-Instances anfügen können. Weitere Informationen erhalten Sie unter IAM-Rollen für Amazon EC2 im Amazon EC2-Benutzerhandbuch.