Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Tutorial: Eine Pipeline mit einer Amazon ECR-Quelle und ECS-to-CodeDeploy Bereitstellung erstellen
In diesem Tutorial konfigurieren Sie eine Pipeline AWS CodePipeline , in der Containeranwendungen mithilfe einer blue/green deployment that supports Docker images. In a blue/green Bereitstellung bereitgestellt werden. Sie können die neue Version Ihrer Anwendung zusammen mit der alten Version starten und die neue Version testen, bevor Sie den Datenverkehr umleiten. Sie können auch den Bereitstellungsprozess überwachen und bei Problemen schnell ein Rollback durchführen.
Wichtig
Im Rahmen der Erstellung einer Pipeline wird ein vom Kunden bereitgestellter S3-Artefakt-Bucket von CodePipeline for Artifacts verwendet. (Dies unterscheidet sich von dem Bucket, der für eine S3-Quellaktion verwendet wird.) Wenn sich der S3-Artefakt-Bucket in einem anderen Konto befindet als das Konto für Ihre Pipeline, stellen Sie sicher, dass der S3-Artefakt-Bucket denjenigen gehört AWS-Konten , die sicher und zuverlässig sind.
Anmerkung
Dieses Tutorial bezieht sich auf die Aktion Amazon ECS to CodeDeploy Blue/Green Deployment für CodePipeline. Ein Tutorial, das die Amazon ECS-Standardbereitstellungsaktion in verwendet CodePipeline, finden Sie unterTutorial: Amazon ECS-Standardbereitstellung mit CodePipeline.
Die abgeschlossene Pipeline erkennt Änderungen an Ihrem Image, das in einem Image-Repository wie Amazon ECR gespeichert ist und verwendet wird, CodeDeploy um den Datenverkehr an einen Amazon ECS-Cluster und einen Load Balancer weiterzuleiten und bereitzustellen. CodeDeploy verwendet einen Listener, um den Datenverkehr an den Port des aktualisierten Containers umzuleiten, der in der Datei angegeben ist. AppSpec Informationen darüber, wie der Load Balancer, der Produktions-Listener, die Zielgruppen und Ihre Amazon ECS-Anwendung in einer blauen/grünen Bereitstellung verwendet werden, finden Sie unter Tutorial: Bereitstellen eines Amazon ECS-Service.
Die Pipeline ist auch so konfiguriert, dass sie einen Quellspeicherort verwendet CodeCommit, z. B. wo Ihre Amazon ECS-Aufgabendefinition gespeichert ist. In diesem Tutorial konfigurieren Sie jede dieser AWS Ressourcen und erstellen dann Ihre Pipeline mit Phasen, die Aktionen für jede Ressource enthalten.
Ihre Continuous Delivery-Pipeline erstellt und stellt automatisch Container-Images bereit, wenn der Quellcode geändert oder ein neues Basis-Image in Amazon ECR hochgeladen wird.
In diesem Ablauf werden die folgenden Artefakte verwendet:
-
Eine Docker-Image-Datei, die den Container-Namen und die Repository-URI Ihres Amazon ECR-Image-Repositorys angibt.
-
Eine Amazon ECS-Aufgabendefinition, die Ihren Docker-Image-Namen, Container-Namen, Amazon ECS-Servicenamen und Load Balancer-Konfiguration auflistet.
-
Eine CodeDeploy AppSpec Datei, die den Namen der Amazon ECS-Aufgabendefinitionsdatei, den Namen des Containers der aktualisierten Anwendung und den Container-Port angibt, an den der CodeDeploy Produktionsdatenverkehr umgeleitet wird. Sie kann auch optionale Netzwerkkonfigurations- und Lambda-Funktionen angeben, die Sie für Lebenszyklusereignis-Hooks während der Bereitstellung ausführen.
Anmerkung
Wenn Sie eine Änderung an Ihrem Amazon ECR-Image-Repository festschreiben, erstellt die Pipeline-Quellaktion eine imageDetail.json
Datei für diesen Commit. Informationen zur imageDetail.json
-Datei finden Sie unter imageDetail.json-Datei für Amazon ECS Blue/Green-Bereitstellungsaktionen.
Wenn Sie Ihre Pipeline erstellen oder bearbeiten und Quellartefakte für Ihre Bereitstellungsphase aktualisieren oder angeben, müssen Sie auf die Quellartefakte mit dem neuesten Namen und der Version verweisen, die Sie verwenden möchten. Nach dem Einrichten Ihrer Pipeline müssen Sie beim Ändern Ihres Images oder der Aufgabendefinition möglicherweise Ihre Quellartefaktdateien in Ihren Repositorys aktualisieren und dann die Bereitstellungsstufe in Ihrer Pipeline bearbeiten.
Themen
- Voraussetzungen
- Schritt 1: Image erstellen und in ein Amazon ECR-Repository übertragen
- Schritt 2: Erstellen Sie Aufgabendefinitions- und AppSpec Quelldateien und übertragen Sie sie in ein Repository CodeCommit
- Schritt 3: Erstellen Ihres Application Load Balancer und der Zielgruppen
- Schritt 4: Erstellen Sie Ihren Amazon ECS-Cluster und -Service
- Schritt 5: Erstellen Ihrer CodeDeploy-Anwendung und Bereitstellungsgruppe (ECS-Datenverarbeitungsplattform)
- Schritt 6: Erstellen Ihrer Pipeline
- Schritt 7: Vornehmen einer Änderung an Ihrer Pipeline und Überprüfen der Bereitstellung
Voraussetzungen
Sie müssen die folgenden Ressourcen erstellt haben:
-
Ein CodeCommit Repository. Sie können das AWS CodeCommit Repository verwenden, in dem Sie es erstellt habenTutorial: Erstellen einer einfachen Pipeline (CodeCommit-Repository).
-
Starten Sie eine Amazon EC2 Linux-Instance und installieren Sie Docker, um ein Image zu erstellen, wie in diesem Tutorial gezeigt. Wenn Sie bereits ein Image haben, das Sie verwenden möchten, können Sie diesen Schritt überspringen.
Schritt 1: Image erstellen und in ein Amazon ECR-Repository übertragen
In diesem Abschnitt verwenden Sie Docker, um ein Image zu erstellen, und verwenden dann das, AWS CLI um ein Amazon ECR-Repository zu erstellen und das Image in das Repository zu übertragen.
Anmerkung
Wenn Sie bereits ein Image haben, das Sie verwenden möchten, können Sie diesen Schritt überspringen.
So erstellen Sie ein Image
-
Melden Sie sich bei Ihrer Linux-Instance an, in der Sie Docker installiert haben.
Rufen Sie ein Image für
nginx
ab. Dieser Befehl stellt dasnginx:latest
Bild bereit:docker pull nginx
-
Führen Sie docker images. Das Image sollte in der Liste angezeigt werden.
docker images
Um ein Amazon ECR-Repository zu erstellen und Ihr Image zu pushen
-
Erstellen Sie ein Amazon ECR-Repository, um Ihr -Image zu speichern. Notieren Sie sich den
repositoryUri
in der Ausgabe.aws ecr create-repository --repository-name nginx
Ausgabe:
{ "repository": { "registryId": "
aws_account_id
", "repositoryName": "nginx", "repositoryArn": "arn:aws:ecr:us-east-1
:aws_account_id
:repository/nginx", "createdAt": 1505337806.0, "repositoryUri": "aws_account_id
.dkr.ecr.us-east-1
.amazonaws.com/nginx" } } -
Versehen Sie das Image mit dem
repositoryUri
-Wert aus dem vorherigen Schritt als Tag.docker tag nginx:latest
aws_account_id
.dkr.ecr.us-east-1
.amazonaws.com/nginx:latest -
Führen Sie den aws ecr get-login-password Befehl aus, wie in diesem Beispiel für die
us-west-2
Region und die Konto-ID 111122223333 gezeigt.aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com/nginx
-
Pushen Sie das Bild mit dem
repositoryUri
aus dem vorherigen Schritt an Amazon ECR.docker push 111122223333.dkr.ecr.
us-east-1
.amazonaws.com/nginx:latest
Schritt 2: Erstellen Sie Aufgabendefinitions- und AppSpec Quelldateien und übertragen Sie sie in ein Repository CodeCommit
In diesem Abschnitt erstellen Sie eine JSON-Datei mit Aufgabendefinitionen und registrieren sie bei Amazon ECS. Anschließend erstellen Sie eine AppSpec Datei für Ihren Git-Client CodeDeploy und verwenden diesen, um die Dateien in Ihr CodeCommit Repository zu übertragen.
So erstellen Sie eine Aufgabendefinition für Ihr Image
-
Erstellen Sie eine Datei mit dem Namen
taskdef.json
und dem folgenden Inhalt. Geben Sie fürimage
Ihren Image-Namen, z. B. nginx, ein. Dieser Wert wird aktualisiert, wenn Ihre Pipeline ausgeführt wird.Anmerkung
Stellen Sie sicher, dass die in der Aufgabendefinition angegebene Ausführungsrolle den
AmazonECSTaskExecutionRolePolicy
enthält. Weitere Informationen finden Sie unter Amazon ECS Task Execution IAM Role im Amazon ECS Developer Guide.{ "executionRoleArn": "arn:aws:iam::
account_ID
:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-website", "image": "nginx", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "ecs-demo" } -
Registrieren Sie Ihre Aufgabendefinition mit der Datei
taskdef.json
.aws ecs register-task-definition --cli-input-json file://taskdef.json
-
Nachdem die Aufgabendefinition registriert ist, bearbeiten Sie Ihre Datei, um den Image-Namen zu entfernen und den
<IMAGE1_NAME>
-Platzhaltertext in das Image-Feld einzufügen.{ "executionRoleArn": "arn:aws:iam::
account_ID
:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-website", "image": "<IMAGE1_NAME>", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "ecs-demo" }
Um eine Datei zu erstellen AppSpec
-
Die AppSpec Datei wird für CodeDeploy Bereitstellungen verwendet. Die Datei, die optionale Felder enthält, verwendet das folgende Format:
version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: "
task-definition-ARN
" LoadBalancerInfo: ContainerName: "container-name
" ContainerPort:container-port-number
# Optional properties PlatformVersion: "LATEST" NetworkConfiguration: AwsvpcConfiguration: Subnets: ["subnet-name-1
", "subnet-name-2
"] SecurityGroups: ["security-group
"] AssignPublicIp: "ENABLED
" Hooks: - BeforeInstall: "BeforeInstallHookFunctionName
" - AfterInstall: "AfterInstallHookFunctionName
" - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName
" - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName
" - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName
"Weitere Informationen zu der AppSpec Datei, einschließlich Beispielen, finden Sie unter CodeDeploy AppSpec Dateireferenz.
Erstellen Sie eine Datei mit dem Namen
appspec.yaml
und dem folgenden Inhalt. Ändern Sie fürTaskDefinition
den<TASK_DEFINITION>
-Platzhaltertext nicht. Dieser Wert wird aktualisiert, wenn Ihre Pipeline ausgeführt wird.version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: <TASK_DEFINITION> LoadBalancerInfo: ContainerName: "sample-website" ContainerPort: 80
Um Dateien in Ihr CodeCommit Repository zu übertragen
-
Push oder lade die Dateien in dein CodeCommit Repository hoch. Diese Dateien sind das Quellartefakt, das vom Assistenten Create Pipeline (Pipeline erstellen) für Ihre Bereitstellungsaktion in CodePipeline erstellt wurde. Ihre Dateien sollten in Ihrem lokalen Verzeichnis wie folgt aussehen:
/tmp |my-demo-repo |-- appspec.yaml |-- taskdef.json
-
Wählen Sie die Methode aus, mit der Sie Ihre Dateien hochladen möchten:
-
So verwenden Sie Ihre Git-Befehlszeile aus einem geklonten Repository auf Ihrem lokalen Computer:
-
Wechseln Sie zu Ihrem lokalen Repository:
(For Linux, macOS, or Unix)
cd /tmp/my-demo-repo(For Windows)
cd c:\temp\my-demo-repo -
Führen Sie den folgenden Befehl aus, um alle Dateien auf einmal zu übertragen:
git add -A
-
Führen Sie den folgenden Befehl aus, um einen Commit für Dateien mit einer Commit-Nachricht durchzuführen:
git commit -m "Added task definition files"
-
Führen Sie den folgenden Befehl aus, um die Dateien von Ihrem lokalen Repository in Ihr CodeCommit Repository zu übertragen:
git push
-
-
So verwenden Sie die CodeCommit Konsole, um Ihre Dateien hochzuladen:
-
Öffnen Sie die CodeCommit Konsole und wählen Sie Ihr Repository aus der Repository-Liste aus.
-
Wählen Sie Add file (Datei hinzufügen) und dann Upload file (Datei hochladen) aus.
-
Wählen Sie Choose file (Datei auswählen) aus und navigieren Sie anschließend zu Ihrer Datei. Übernehmen Sie die Änderung, indem Sie Ihren Benutzernamen und Ihre E-Mail-Adresse eingeben. Wählen Sie Commit changes (Änderungen übernehmen) aus.
-
Wiederholen Sie diesen Schritt für jede Datei, die Sie hochladen möchten.
-
-
Schritt 3: Erstellen Ihres Application Load Balancer und der Zielgruppen
In diesem Abschnitt erstellen Sie einen Amazon EC2 Application Load Balancer. Sie verwenden die Subnetznamen und Zielgruppenwerte, die Sie mit Ihrem Load Balancer erstellen, später, wenn Sie Ihren Amazon ECS-Service erstellen. Sie können einen Application Load Balancer oder einen Network Load Balancer erstellen. Der Load Balancer muss eine VPC mit zwei öffentlichen Subnetzen in verschiedenen Availability Zones verwenden. In diesen Schritten bestätigen Sie Ihre Standard-VPC, erstellen einen Load Balancer und legen dann zwei Zielgruppen für Ihren Load Balancer fest. Weitere Informationen finden Sie unter Zielgruppen für Ihre Network Load Balancer.
So überprüfen Sie Ihre Standard-VPC und öffentliche Subnetze
Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon VPC-Konsole unter https://console.aws.amazon.com/vpc/
. -
Überprüfen Sie die zu verwendende Standard-VPC. Wählen Sie im Navigationsbereich Ihr VPCs. Beachten Sie, für welche VPC Yes (Ja) in der Spalte Default VPC (Standard-VPC) angezeigt wird. Dies ist die Standard-VPC. Sie enthält Standardsubnetze, die Sie auswählen können.
-
Wählen Sie Subnets (Subnetze) aus. Wählen Sie zwei Subnetze aus, für die Yes (Ja) in der Spalte Default subnet (Standardsubnetz) angezeigt wird.
Anmerkung
Notieren Sie sich Ihr Subnetz IDs. Sie benötigen den Wert später in diesem Tutorial.
-
Wählen Sie die Subnetze und anschließend die Registerkarte Description (Beschreibung) aus. Stellen Sie sicher, dass sich die Subnetze, die Sie verwenden möchten, in verschiedenen Availability Zones befinden.
-
Wählen Sie die Subnetze aus und klicken Sie dann auf die Registerkarte Route Table (Routing-Tabelle). Um sicherzustellen, dass jedes Subnetz, das Sie verwenden möchten, ein öffentliches Subnetz ist, vergewissern Sie sich, dass eine Gateway-Zeile in der Routing-Tabelle enthalten ist.
So erstellen Sie einen Amazon EC2 Application Load Balancer
Melden Sie sich bei der an AWS Management Console und öffnen Sie die EC2 Amazon-Konsole unter https://console.aws.amazon.com/ec2/
. -
Klicken Sie im Navigationsbereich auf Load Balancers.
-
Klicken Sie auf Load Balancer erstellen.
-
Wählen Sie Application Load Balancer aus und klicken Sie anschließend auf Create (Erstellen).
-
Geben Sie unter Name den Namen Ihres Load Balancer ein.
-
Wählen Sie für Scheme (Schema) die Option internet-facing (mit dem Internet verbunden) aus.
-
Wählen Sie für IP address type (IP-Adresstyp) die Option ipv4 aus.
-
Konfigurieren Sie zwei Listener-Ports für Ihren Load Balancer:
-
Wählen Sie unter Load Balancer Protocol die Option HTTP aus. Geben Sie unter Load Balancer Port (Load Balancer-Port) „
80
“ ein. -
Wählen Sie Add listener (Listener hinzufügen) aus.
-
Wählen Sie unter Load Balancer Protocol für den zweiten Listener HTTP aus. Geben Sie unter Load Balancer Port (Load Balancer-Port) „
8080
“ ein.
-
-
Wählen Sie unter Availability Zones in VPC die Standard-VPC aus. Wählen Sie als Nächstes die zwei Standardsubnetze aus, die Sie verwenden möchten.
-
Klicken Sie auf Next: Configure Security Settings (Weiter: Sicherheitseinstellungen konfigurieren).
-
Wählen Sie Next: Configure Security Groups (Weiter: Sicherheitsgruppen konfigurieren) aus.
-
Wählen Sie Select an existing security group (Eine vorhandene Sicherheitsgruppe wählen) aus und notieren Sie sich die Sicherheitsgruppen-ID.
-
Wählen Sie Weiter: Routing konfigurieren aus.
-
Wählen Sie in Target group (Zielgruppe) die Option New target group (Neue Zielgruppe) aus und konfigurieren Sie Ihre erste Zielgruppe:
-
Geben Sie im Feld Name einen Namen für die Zielgruppe ein (z. B.
target-group-1
). -
Wählen Sie für Target type (Zieltyp) die Option IP aus.
-
Wählen Sie für Protocol die Option HTTP aus. Geben Sie im Feld Port den Wert
80
ein. -
Klicken Sie auf Weiter: Ziele registrieren.
-
-
Wählen Sie Next: Review (Weiter: Prüfen) und anschließend Create role (Rolle erstellen) aus.
So erstellen Sie eine zweite Zielgruppe für Ihren Load Balancer.
-
Nachdem Ihr Load Balancer bereitgestellt wurde, öffnen Sie die EC2 Amazon-Konsole. Wählen Sie im Navigationsbereich Target Groups aus.
-
Wählen Sie Zielgruppe erstellen aus.
-
Geben Sie im Feld Name einen Namen für die Zielgruppe ein (z. B.
target-group-2
). -
Wählen Sie für Target type (Zieltyp) die Option IP aus.
-
Wählen Sie für Protocol die Option HTTP aus. Geben Sie im Feld Port den Wert
8080
ein. -
Wählen Sie unter VPC die Standard-VPC aus.
-
Wählen Sie Create (Erstellen) aus.
Anmerkung
Sie müssen zwei Zielgruppen für Ihren Load Balancer erstellt haben, damit die Bereitstellung ausgeführt werden kann. Sie müssen sich nur den ARN Ihrer ersten Zielgruppe notieren. Dieser ARN wird in der
create-service
-JSON-Datei im nächsten Schritt verwendet.
So aktualisieren Sie Ihren Load Balancer, um Ihre zweite Zielgruppe einzubeziehen
-
Öffnen Sie die EC2 Amazon-Konsole. Klicken Sie im Navigationsbereich auf Load Balancers.
-
Wählen Sie Ihren Load Balancer aus und klicken Sie dann auf die Registerkarte Listeners (Listener). Wählen Sie den Listener mit Port 8080 und klicken Sie dann auf Edit (Bearbeiten).
-
Klicken Sie auf das Stiftsymbol neben Forward to (Weiterleiten an). Wählen Sie die zweite Zielgruppe aus und klicken Sie dann auf das Häkchen. Klicken Sie auf Update (Aktualisieren), um die Aktualisierungen zu speichern.
Schritt 4: Erstellen Sie Ihren Amazon ECS-Cluster und -Service
In diesem Abschnitt erstellen Sie einen Amazon ECS-Cluster und -Service, der den Datenverkehr während der Bereitstellung CodeDeploy weiterleitet (zu einem Amazon ECS-Cluster statt zu EC2 Instances). Um Ihren Amazon ECS-Service zu erstellen, müssen Sie die Subnetznamen, Sicherheitsgruppen und Zielgruppenwerte verwenden, die Sie mit Ihrem Load Balancer erstellt haben, um Ihren Service zu erstellen.
Anmerkung
Wenn Sie diese Schritte verwenden, um Ihren Amazon ECS-Cluster zu erstellen, verwenden Sie die Cluster-Vorlage nur für Netzwerke, die AWS Fargate-Container bereitstellt. AWS Fargate ist eine Technologie, die Ihre Container-Instance-Infrastruktur für Sie verwaltet. Sie müssen keine EC2 Amazon-Instances für Ihren Amazon ECS-Cluster auswählen oder manuell erstellen.
Erstellen eines Amazon ECS-Clusters
Öffnen Sie die Amazon ECS Classic-Konsole unter https://console.aws.amazon.com/ecs/
. -
Klicken Sie im Navigationsbereich auf Cluster.
-
Wählen Sie Cluster erstellen.
-
Wählen Sie die Clustervorlage Nur Networking aus, die AWS Fargate verwendet, und klicken Sie dann auf Nächster Schritt.
-
Geben Sie auf der Seite Configure cluster (Cluster konfigurieren) einen Namen für den Cluster ein. Sie können ein optionales Tag für Ihre Ressource hinzufügen. Wählen Sie Create (Erstellen) aus.
So erstellen Sie einen Amazon ECS-Service
Verwenden Sie den AWS CLI , um Ihren Service in Amazon ECS zu erstellen.
-
Erstellen Sie eine JSON-Datei und geben Sie ihr den Namen
create-service.json
. Fügen Sie Folgendes in die JSON-Datei ein.Wenn Sie für dieses
taskDefinition
Feld eine Aufgabendefinition in Amazon ECS registrieren, geben Sie ihr eine Familie. Dies ähnelt einem Namen für mehrere Versionen der Aufgabendefinition und wird mit einer Versionsnummer versehen. Verwenden Sie in diesem Beispiel für Ihre Datei „ecs-demo:1
“ als Familie und Versionsnummer. Verwenden Sie die Subnetz-Namen, die Sicherheitsgruppe und den Zielgruppenwert, die bzw. den Sie mit Ihrem Load Balancer in Schritt 3: Erstellen Ihres Application Load Balancer und der Zielgruppen erstellt haben.Anmerkung
Sie müssen Ihren Zielgruppen-ARN in dieser Datei angeben. Öffnen Sie die EC2 Amazon-Konsole und wählen Sie im Navigationsbereich unter LOAD BALANCING die Option Zielgruppen aus. Wählen Sie Ihre erste Zielgruppe aus. Kopieren Sie Ihren ARN aus der Registerkarte Description (Beschreibung).
{ "taskDefinition": "
family
:revision-number
", "cluster": "my-cluster
", "loadBalancers": [ { "targetGroupArn": "target-group-arn
", "containerName": "sample-website", "containerPort": 80 } ], "desiredCount": 1, "launchType": "FARGATE", "schedulingStrategy": "REPLICA", "deploymentController": { "type": "CODE_DEPLOY" }, "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-1
", "subnet-2
" ], "securityGroups": [ "security-group
" ], "assignPublicIp": "ENABLED" } } } -
Führen Sie den Befehl create-service aus und geben Sie dabei die JSON-Datei an:
Wichtig
Achten Sie darauf, dass
file://
vor dem Dateinamen steht. Dies ist bei diesem Befehl erforderlich.In diesem Beispiel wird ein Service mit dem Namen
my-service
erstellt.Anmerkung
Dieser Beispielbefehl erstellt einen Service mit dem Namen my-Service. Wenn Sie bereits über einen Service mit diesem Namen verfügen, gibt der Befehl einen Fehler zurück.
aws ecs create-service --service-name my-service --cli-input-json file://create-service.json
Die Ausgabe gibt die Beschreibungsfelder für Ihren Service zurück.
-
Führen Sie den Befehl describe-services aus, um zu überprüfen, ob Ihr Service erstellt wurde.
aws ecs describe-services --cluster
cluster-name
--servicesservice-name
Schritt 5: Erstellen Ihrer CodeDeploy-Anwendung und Bereitstellungsgruppe (ECS-Datenverarbeitungsplattform)
Wenn Sie eine CodeDeploy Anwendung und eine Bereitstellungsgruppe für die Amazon ECS-Rechenplattform erstellen, wird die Anwendung während einer Bereitstellung verwendet, um auf die richtige Bereitstellungsgruppe, die richtigen Zielgruppen, Listener und das richtige Verhalten bei der Umleitung des Datenverkehrs zu verweisen.
Um eine Anwendung zu erstellen CodeDeploy
-
Öffnen Sie die CodeDeploy Konsole und wählen Sie Anwendung erstellen.
-
Geben Sie unter Application name (Anwendungsname) den Namen ein, den Sie verwenden möchten.
-
Wählen Sie unter Compute Platform (Datenverarbeitungsplattform) die Option Amazon ECS aus.
-
Wählen Sie Create application aus.
Um eine CodeDeploy Bereitstellungsgruppe zu erstellen
-
Wählen Sie auf Ihrer Anwendungsseite über die Registerkarte Deployment groups (Bereitstellungsgruppen) die Option Create deployment group (Bereitstellungsgruppe erstellen) aus.
-
Geben Sie im Feld Deployment group name (Name der Bereitstellungsgruppe) einen Namen ein, der die Bereitstellungsgruppe beschreibt.
-
Wählen Sie unter Servicerolle eine Servicerolle aus, die CodeDeploy Zugriff auf Amazon ECS gewährt. Gehen Sie folgendermaßen vor, um eine neue Servicerolle zu erstellen:
-
Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/
). -
Wählen Sie im Dashboard der Konsole die Option Rollen aus.
-
Wählen Sie Rolle erstellen.
-
Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen AWS-Servicedie Option aus. Wählen Sie unter Anwendungsfall auswählen die Option aus CodeDeploy. Wählen Sie unter Wählen Sie Ihren Anwendungsfall die Option CodeDeploy - ECS aus. Wählen Sie Weiter: Berechtigungen aus. Die
AWSCodeDeployRoleForECS
-verwaltete Richtlinie ist der Rolle bereits zugewiesen. -
Wählen Sie Next: Tags (Weiter: Tags) und Next: Review (Weiter: Prüfen) aus.
-
Geben Sie einen Namen für die Rolle ein (beispielsweise
CodeDeployECSRole
) und wählen Sie Next (Weiter) aus.
-
-
Wählen Sie in der Umgebungskonfiguration Ihren Amazon ECS-Clusternamen und Servicenamen aus.
-
Wählen Sie unter Load Balancers den Namen des Load Balancers aus, der den Datenverkehr an Ihren Amazon ECS-Service weiterleitet.
-
Wählen Sie unter Production listener port (Produktions-Listener-Port) den Port und das Protokoll für den Listener aus, der den Produktionsdatenverkehr an Ihren Amazon ECS Service weiterleitet. Wählen Sie unter Test listener port (Test-Listener-Port) den Port und das Protokoll für den Test-Listener aus.
-
Wählen Sie unter Target group 1 name (Name der Zielgruppe 1) und Target group 2 name (Name der Zielgruppe 2) die Zielgruppen für die Weiterleitung des Datenverkehrs während der Bereitstellung aus. Stellen Sie sicher, dass es sich hierbei um die Zielgruppen handelt, die Sie für Ihren Load Balancer erstellt haben.
-
Wählen Sie Traffic sofort umleiten, um zu bestimmen, wie lange nach einer erfolgreichen Bereitstellung der Verkehr zu Ihrer aktualisierten Amazon ECS-Aufgabe umgeleitet werden soll.
-
Wählen Si Create deployment group (Bereitstellungsgruppe erstellen).
Schritt 6: Erstellen Ihrer Pipeline
In diesem Abschnitt erstellen Sie eine Pipeline mit den folgenden Aktionen:
-
Eine CodeCommit Aktion, bei der die Quellartefakte die Aufgabendefinition und die AppSpec Datei sind.
-
Eine Quellstufe mit einer Amazon ECR-Quellaktion, bei der das Quellartefakt die Bilddatei ist.
-
Eine Bereitstellungsphase mit einer Amazon ECS-Bereitstellungsaktion, in der die Bereitstellung mit einer CodeDeploy Anwendung und einer Bereitstellungsgruppe ausgeführt wird.
So erstellen Sie eine zweistufige Pipeline mit dem Assistenten
Melden Sie sich bei der an AWS Management Console und öffnen Sie die CodePipeline Konsole unter http://console.aws.amazon. com/codesuite/codepipeline/home
. -
Wählen sie auf der Seite Welcome (Willkommen) die Option Getting started (Erste Schritte) aus, oder auf der Seite Pipelines die Option Create pipeline (Pipeline erstellen).
-
Wählen Sie auf der Seite Schritt 1: Erstellungsoption auswählen unter Erstellungsoptionen die Option Benutzerdefinierte Pipeline erstellen aus. Wählen Sie Weiter.
-
Geben Sie in Schritt 2: Pipeline-Einstellungen auswählen im Feld Pipeline-Name den Wert ein
MyImagePipeline
. -
CodePipeline bietet Pipelines vom Typ V1 und V2, die sich in Eigenschaften und Preis unterscheiden. Der Typ V2 ist der einzige Typ, den Sie in der Konsole auswählen können. Weitere Informationen finden Sie unter Pipeline-Typen. Informationen zur Preisgestaltung für finden Sie CodePipeline unter Preisgestaltung
. -
Wählen Sie unter Servicerolle die Option Neue Servicerolle aus, um CodePipeline die Erstellung einer Servicerolle in IAM zu ermöglichen.
-
Belassen Sie die Einstellungen unter Erweiterte Einstellungen bei den Standardeinstellungen, und wählen Sie dann Next (Weiter) aus.
-
Wählen Sie in Schritt 3: Quellstufe hinzufügen im Feld Quellanbieter die Option aus AWS CodeCommit. Wählen Sie in Repository name (Repository-Name) den Namen des CodeCommit-Repositorys aus, das Sie in Schritt 1: Erstelle ein CodeCommit Repository erstellt haben. Wählen Sie in Branch name den Namen des Branch aus, der das neueste Code-Update enthält.
Wählen Sie Weiter.
-
Wählen Sie in Schritt 4: Buildphase hinzufügen die Option Buildphase überspringen aus und akzeptieren Sie dann die Warnmeldung, indem Sie erneut auf Überspringen klicken. Wählen Sie Weiter.
-
Wählen Sie in Schritt 5: Testphase hinzufügen die Option Testphase überspringen aus und akzeptieren Sie dann die Warnmeldung, indem Sie erneut Überspringen wählen.
Wählen Sie Weiter.
-
Gehen Sie in Schritt 6: Bereitstellungsphase hinzufügen wie folgt vor:
-
Wählen Sie unter Deploy provider (Bereitstellungsanbieter) die Option Amazon ECS (Blue/Green) (Amazon ECS (Blau/Grün)) aus. Geben Sie unter Application name (Anwendungsname) den Anwendungsnamen ein oder wählen Sie ihn aus der Liste aus, z. B.
codedeployapp
. Geben Sie unter Deployment group (Bereitstellungsgruppe) den Namen einer Bereitstellungsgruppe ein oder wählen Sie ihn in der Liste aus, z. B.codedeploydeplgroup
Anmerkung
Der Name "Deploy" (Bereitstellen) ist der Name, der der Stufe in Step 4: Deploy (Schritt 4: bereitstellen) standardmäßig gegeben wird, so wie der ersten Stufe der Pipeline der Namen "Source" (Quelle) gegeben wird.
-
Wählen Sie unter Amazon ECS-Aufgabendefinition die Option SourceArtifact. Geben Sie im Feld
taskdef.json
ein. -
Wählen Sie unter AWS CodeDeploy AppSpec Datei die Option aus SourceArtifact. Geben Sie im Feld
appspec.yaml
ein.Anmerkung
Geben Sie an diesem Punkt keine Informationen unter Dynamically update task definition image (Aufgabendefinitions-Image dynamisch aktualisieren) ein.
-
Wählen Sie Weiter.
-
-
Überprüfen Sie in Schritt 7: Überprüfen die Informationen und wählen Sie dann Pipeline erstellen aus.
So fügen Sie Ihrer Pipeline eine Amazon ECR-Quellaktion hinzu
Sehen Sie sich Ihre Pipeline an und fügen Sie Ihrer Pipeline eine Amazon ECR-Quellaktion hinzu.
-
Wählen Sie Ihre Pipeline aus. Wählen Sie links oben Edit (Bearbeiten) aus.
-
Wählen Sie in der Quellstufe die Option Edit stage (Stufe bearbeiten) aus.
-
Fügen Sie eine parallel Aktion hinzu, indem Sie + Aktion hinzufügen neben Ihrer CodeCommit Quellaktion auswählen.
-
Geben Sie im Feld Action name (Name der Aktion) einen Namen ein (zum Beispiel
Image
). -
Wählen Sie unter Action provider (Aktionsanbieter) die Option Amazon ECR aus.
-
Wählen Sie unter Repository-Name den Namen Ihres Amazon ECR-Repositorys aus.
-
Geben Sie im Feld Image tag (Image-Tag) den Image-Namen und die Version an, falls sie nicht LATEST lautet.
-
Wählen Sie im Feld Output artifacts (Ausgabeartefakte) den Standardwert für die Ausgabeartefakte aus (z. B.
MyImage
), der den Image-Namen und Repository-URI-Informationen enthält, die in der nächsten Stufe verwendet werden sollen. -
Wählen Sie im Aktionsbildschirm Save (Speichern) aus. Wählen Sie im Phasenbilschirm Done (Fertig) aus. Wählen Sie in der Pipeline Save (Speichern) aus. In einer Meldung wird die Amazon CloudWatch Events-Regel angezeigt, die für die Amazon ECR-Quellaktion erstellt werden soll.
So senden Sie Ihre Quellartefakte an die Bereitstellungsaktion
-
Wählen Sie in Ihrer Bereitstellungsphase Bearbeiten und wählen Sie das Symbol, um die Amazon ECS-Aktion (Blau/Grün) zu bearbeiten.
-
Scrollen Sie nach unten bis zum Ende des Bereichs. Wählen Sie unter Input artifacts (Eingabeartefakte) die Option Add (Hinzufügen) aus. Fügen Sie das Quellartefakt aus Ihrem neuen Amazon ECR-Repository hinzu (z. B.
MyImage
). -
Wählen Sie unter Aufgabendefinition die Option aus SourceArtifact, und geben Sie dann verifizieren
taskdef.json
ein. -
Wählen Sie unter AWS CodeDeploy AppSpec Datei die Option aus SourceArtifact, und bestätigen Sie,
appspec.yaml
dass verifizieren eingegeben wurde. -
Wählen Sie unter Aufgabendefinitionsbild dynamisch aktualisieren unter Eingabeartefakt mit Bild-URI den Platzhaltertext aus MyImage, der in der Datei verwendet wird, und geben Sie dann den Platzhaltertext ein, der in der
taskdef.json
Datei verwendet wird:.IMAGE1_NAME
Wählen Sie Save (Speichern) aus. -
Wählen Sie in dem AWS CodePipeline Bereich die Option Pipeline-Änderung speichern und dann Änderung speichern aus. Sehen Sie sich Ihre aktualisierte Pipeline an.
Nachdem diese Beispiel-Pipeline erstellt wurde, wird die Aktionskonfiguration für die Konsoleneinträge wie folgt in der Pipeline-Struktur angezeigt:
"configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact", "TaskDefinitionTemplatePath": "taskdef.json", "ApplicationName": "codedeployapp", "DeploymentGroupName": "codedeploydeplgroup", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME" },
-
Um Ihre Änderungen zu übertragen und einen Pipeline-Build zu starten, wählen Sie Release change (Änderung freigeben) und dann Release (Freigeben).
-
Wählen Sie die Bereitstellungsaktion aus, um sie anzuzeigen CodeDeploy und den Fortschritt der Verkehrsverlagerung zu verfolgen.
Anmerkung
Möglicherweise wird ein Bereitstellungsschritt mit einer optionalen Wartezeit angezeigt. Standardmäßig wird nach einer erfolgreichen Bereitstellung eine Stunde CodeDeploy gewartet, bevor der ursprüngliche Tasksatz beendet wird. Sie können diese Zeit nutzen, um die Aufgabe zurückzusetzen oder zu beenden. Ihre Bereitstellung wird andernfalls abgeschlossen, wenn der Aufgabensatz beendet wird.
Schritt 7: Vornehmen einer Änderung an Ihrer Pipeline und Überprüfen der Bereitstellung
Nehmen Sie eine Änderung an Ihrem Image vor und übertragen Sie die Änderung dann in Ihr Amazon ECR-Repository. Damit wird die Ausführung Ihrer Pipeline ausgelöst. Überprüfen Sie, ob die Änderung Ihrer Image-Quelle bereitgestellt wird.