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 ECR Amazon-Quelle und ECS -to-Deployment erstellen CodeDeploy
In diesem Tutorial konfigurieren Sie eine Pipeline AWS CodePipeline , in der Containeranwendungen mithilfe einer blauen/grünen Bereitstellung bereitgestellt werden, die Docker-Images unterstützt. In einer Blau/Grün-Bereitstellung können Sie die neue Version Ihrer Anwendung zusammen mit der alten Version starten und die neue Version testen, bevor Sie 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 ECS Amazon-Standardbereitstellungsaktion in verwendet CodePipeline, finden Sie unterTutorial: Amazon ECS Standard Deployment mit CodePipeline.
Die abgeschlossene Pipeline erkennt Änderungen an Ihrem Image, das in einem Image-Repository wie Amazon gespeichert ist und verwendet wirdECR, CodeDeploy um den Datenverkehr an einen ECS Amazon-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 ECS Amazon-Anwendung in einer blauen/grünen Bereitstellung verwendet werden, finden Sie unter Tutorial: Bereitstellen eines Amazon-Service. ECS
Die Pipeline ist auch so konfiguriert, dass sie einen Quellspeicherort verwendet CodeCommit, z. B. wo Ihre ECS Amazon-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 auf Amazon hochgeladen wirdECR.
In diesem Ablauf werden die folgenden Artefakte verwendet:
-
Eine Docker-Image-Datei, die den Container-Namen und das Repository URI Ihres ECR Amazon-Image-Repositorys angibt.
-
Eine ECS Amazon-Aufgabendefinition, die Ihren Docker-Image-Namen, Container-Namen, ECS Amazon-Servicenamen und Load Balancer-Konfiguration auflistet.
-
Eine CodeDeploy AppSpec Datei, die den Namen der ECS Amazon-Aufgabendefinitionsdatei, den Namen des Containers der aktualisierten Anwendung und den Container-Port angibt, an den der CodeDeploy Produktionsverkehr 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 ECR Amazon-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 ECR Amazon-Repository übertragen
- Schritt 2: Erstellen Sie Aufgabendefinitions- und AppSpec Quelldateien und übertragen Sie sie in ein CodeCommit Repository
- Schritt 3: Erstellen Ihres Application Load Balancer und der Zielgruppen
- Schritt 4: Erstellen Sie Ihren ECS Amazon-Cluster und -Service
- Schritt 5: Erstellen Sie Ihre CodeDeploy Anwendung und Bereitstellungsgruppe (ECSRechenplattform)
- 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 Sie eine einfache Pipeline (CodeCommitRepository).
-
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 ECR Amazon-Repository übertragen
In diesem Abschnitt verwenden Sie Docker, um ein Image zu erstellen, und verwenden dann das, AWS CLI um ein ECR Amazon-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 ECR Amazon-Repository zu erstellen und Ihr Image zu pushen
-
Erstellen Sie ein ECR Amazon-Repository, um Ihr Bild 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
-
Senden Sie das Bild ECR mit dem
repositoryUri
aus dem vorherigen Schritt an Amazon.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 CodeCommit Repository
In diesem Abschnitt erstellen Sie eine JSON Aufgabendefinitionsdatei und registrieren sie bei AmazonECS. 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 AppSpec Datei zu erstellen
-
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 zum Erstellen einer Pipeline 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 ECS Amazon-Service erstellen. Sie können einen Application Load Balancer oder einen Network Load Balancer erstellen. Der Load Balancer muss a VPC mit zwei öffentlichen Subnetzen in unterschiedlichen Availability Zones verwenden. In diesen Schritten bestätigen Sie Ihre StandardeinstellungVPC, erstellen einen Load Balancer und erstellen dann zwei Zielgruppen für Ihren Load Balancer. Weitere Informationen finden Sie unter Zielgruppen für Ihre Network Load Balancer.
Um Ihre Standard VPC - und öffentlichen Subnetze zu verifizieren
Melden Sie sich bei der an AWS Management Console und öffnen Sie die VPC Amazon-Konsole unter https://console.aws.amazon.com/vpc/
. -
Überprüfen Sie, welche Standardeinstellung verwendet werden VPC soll. Wählen Sie im Navigationsbereich Ihr ausVPCs. Beachten Sie, VPC dass in der VPC Spalte Standard Ja angezeigt wird. Dies ist die StandardeinstellungVPC. 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 SubnetzIDs. 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. 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 die Option. HTTP Geben Sie unter Load Balancer Port (Load Balancer-Port) „
8080
“ ein.
-
-
Wählen Sie unter Availability Zones, in VPC, die Standardeinstellung aus. VPC 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 unter Protokoll die Option HTTP. 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 unter Protokoll. HTTP Geben Sie im Feld Port den Wert
8080
ein. -
Wählen Sie VPCunter die Standardeinstellung ausVPC.
-
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 die ARN Ihrer ersten Zielgruppe notieren. Dies ARN wird im nächsten Schritt in der
create-service
JSON Datei 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 ECS Amazon-Cluster und -Service
In diesem Abschnitt erstellen Sie einen ECS Amazon-Cluster und -Service, der den Datenverkehr während der Bereitstellung CodeDeploy weiterleitet (an einen ECS Amazon-Cluster statt an EC2 Instances). Um Ihren ECS Amazon-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 ECS Amazon-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 ECS Amazon-Cluster auswählen oder manuell erstellen.
Um einen ECS Amazon-Cluster zu erstellen
Ö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.
Um einen ECS Amazon-Service zu erstellen
Verwenden Sie die AWS CLI , um Ihren Service bei Amazon zu erstellenECS.
-
Erstellen Sie eine JSON Datei und benennen Sie sie
create-service.json
. Fügen Sie Folgendes in die JSON Datei ein.Wenn Sie eine Aufgabendefinition in Amazon registrierenECS, geben Sie
taskDefinition
diesem Feld 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 Ihre Zielgruppe ARN in diese Datei aufnehmen. Öffnen Sie die EC2 Amazon-Konsole und wählen Sie im Navigationsbereich unter LOADBALANCINGZielgruppen aus. Wählen Sie Ihre erste Zielgruppe aus. Kopieren Sie Ihre ARN aus dem Tab 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 create-service Befehl aus und geben Sie 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 Sie Ihre CodeDeploy Anwendung und Bereitstellungsgruppe (ECSRechenplattform)
Wenn Sie eine CodeDeploy Anwendung und eine Bereitstellungsgruppe für die ECS Amazon-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 Amazon ausECS.
-
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 gewährtECS. 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 die Option aus AWS-Service. Wählen Sie unter Anwendungsfall auswählen die Option aus CodeDeploy. Wählen Sie unter Wählen Sie Ihren Anwendungsfall aus die Option CodeDeploy - ausECS. 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 ECS Amazon-Clusternamen und Servicenamen aus.
-
Wählen Sie unter Load Balancers den Namen des Load Balancers aus, der den Datenverkehr an Ihren ECS Amazon-Service weiterleitet.
-
Wählen Sie unter Production Listener Port den Port und das Protokoll für den Listener aus, der Produktionstransport für Ihren Amazon-Service bereitstellt. ECS 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 auf Ihre aktualisierte ECS Amazon-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 ECR Amazon-Quellaktion, bei der das Quellartefakt die Bilddatei ist.
-
Eine Bereitstellungsphase mit einer ECS Amazon-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).
-
Geben Sie unter Step 1: Choose pipeline settings (Schritt 1: Auswahl der Pipeline-Einstellungen) unter Pipeline name (Pipeline-Name)
MyImagePipeline
ein. -
Wählen Sie unter Pipeline-Typ die Option V2 aus. Weitere Informationen finden Sie unter Arten von Pipelines. Wählen Sie Weiter.
-
Wählen Sie unter Servicerolle die Option Neue Servicerolle aus, CodePipeline um das Erstellen einer Servicerolle in zu ermöglichenIAM.
-
Belassen Sie die Einstellungen unter Erweiterte Einstellungen bei den Standardeinstellungen, und wählen Sie dann Next (Weiter) aus.
-
Wählen Sie unter Step 2: Add source stage (Schritt 2: Quell-Phase hinzufügen) unter Source provider (Quell-Anbieter) die Option AWS CodeCommit. Wählen Sie unter Repository-Name den Namen des CodeCommit Repositorys aus, in dem Sie es erstellt habenSchritt 1: Erstellen Sie ein CodeCommit Repository. 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 unter Step 3: Add build stage (Schritt 3: Build-Stufe hinzufügen) die Option Skip build stage (Build-Stufe überspringen) und akzeptieren Sie die Warnmeldung, indem Sie erneut auf Skip (Überspringen) klicken. Wählen Sie Weiter.
-
Unter Step 4: Add deploy stage (Schritt 4: Bereitstellungsstufe hinzufügen):
-
Wählen Sie unter Bereitstellungsanbieter 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 ECSAmazon-Aufgabendefinition die Option SourceArtifact. Geben Sie im Feld
taskdef.json
ein. -
Wählen Sie unter AWS CodeDeploy AppSpec Datei die Option 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.
-
-
Prüfen Sie in Step 5: Review die Informationen und wählen Sie dann Create pipeline aus.
So fügen Sie Ihrer Pipeline eine ECR Amazon-Quellaktion hinzu
Sehen Sie sich Ihre Pipeline an und fügen Sie Ihrer Pipeline eine ECR Amazon-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 Aktionsanbieter die Option Amazon ausECR.
-
Wählen Sie unter Repository-Name den Namen Ihres ECR Amazon-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 unter Ausgabeartefakte die Standardeinstellung für Ausgabeartefakte (z. B.
MyImage
) aus, die den Image-Namen und die URI Repository-Informationen enthält, die Sie in der nächsten Phase verwenden möchten. -
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 ECR Amazon-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-Aktion ECS (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 ECR Amazon-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 den Platzhaltertext ausURI, der in der Datei verwendet wird MyImage, 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 im AWS CodePipeline Bereich Pipeline-Änderung speichern und anschließend Ä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 Bild vor und übertragen Sie die Änderung dann in Ihr ECR Amazon-Repository. Damit wird die Ausführung Ihrer Pipeline ausgelöst. Überprüfen Sie, ob die Änderung Ihrer Image-Quelle bereitgestellt wird.