Erstellen einer Canary-Release-Bereitstellung - APIAmazon-Gateway

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.

Erstellen einer Canary-Release-Bereitstellung

Sie erstellen ein Canary-Release-Deployment, wenn Sie das API mit den Canary-Einstellungen als zusätzliche Eingabe für die Erstellung der Bereitstellung bereitstellen.

Sie können auch aus einer bestehenden Nicht-Canary-Bereitstellung eine Canary-Release-Bereitstellung erstellen, indem Sie eine stage:update-Anforderung erstellen, um die Canary-Einstellungen für die Stufe hinzuzufügen.

Beim Erstellen einer nicht-Canary-Release-Bereitstellung können Sie einen nicht existierenden Stufennamen angeben. APIGateway erstellt eine, wenn die angegebene Phase nicht existiert. Sie können jedoch beim Anlegen einer Canary-Release-Bereitstellung keinen nicht existierenden Stufennamen angeben. Es wird eine Fehlermeldung angezeigt und API Gateway erstellt keine Canary-Release-Bereitstellung.

Sie können eine Canary-Release-Bereitstellung in API Gateway mit der API Gateway-Konsole AWS CLI, dem oder einem erstellen AWS SDK.

Erstellen Sie mit der API Gateway-Konsole eine Canary-Bereitstellung

Gehen Sie wie folgt vor, um mit der API Gateway-Konsole eine Canary-Release-Bereitstellung zu erstellen:

So erstellen Sie eine erste Canary-Release-Bereitstellung
  1. Melden Sie sich bei der API Gateway-Konsole an.

  2. Wählen Sie ein vorhandenes REST API oder erstellen Sie ein neues RESTAPI.

  3. Wählen Sie im Hauptnavigationsbereich Ressourcen und dann Bereitstellen ausAPI. Folgen Sie den Anweisungen auf dem Bildschirm in Deploy API, API um das in einer neuen Phase bereitzustellen.

    Bisher haben Sie das in einer produktiven API Release-Phase bereitgestellt. Als Nächstes konfigurieren Sie die Canary-Einstellungen auf der Bühne und aktivieren bei Bedarf auch das Caching, legen Variablen für die Phase fest oder konfigurieren API Ausführungs- oder Zugriffsprotokolle.

  4. Um das API Caching zu aktivieren oder der Phase ein AWS WAF Web ACL zuzuordnen, wählen Sie im Abschnitt Stage-Details die Option Bearbeiten aus. Weitere Informationen finden Sie unter Cache-Einstellungen für REST APIs in API Gateway oder So verknüpfen Sie mithilfe der API Gateway Gateway-Konsole eine AWS WAF Web-ACL mit einer API-Gateway-API-Stufe.

  5. Um die Ausführung zu konfigurieren oder auf die Protokollierung zuzugreifen, wählen Sie im Abschnitt Logs and tracing (Protokolle und Nachverfolgung) die Option Edit (Bearbeiten) und folgen Sie den Anweisungen am Bildschirm. Weitere Informationen finden Sie unter CloudWatch Logging für REST APIs in API Gateway einrichten.

  6. Um Stufenvariablen festzulegen, wählen Sie die Registerkarte Stage variables (Stufenvariablen) und folgen Sie den Anweisungen am Bildschirm, um Stufenvariablen hinzuzufügen oder zu ändern. Weitere Informationen finden Sie unter Verwenden Sie Stufenvariablen für ein REST API API In-Gateway.

  7. Wählen Sie die Registerkarte Canary und dann Create canary (Canary erstellen) aus. Möglicherweise müssen Sie die rechte Pfeiltaste wählen, um die Registerkarte Canary anzuzeigen.

  8. Geben Sie unter Canary settings (Canary-Einstellungen) für Canary den Prozentsatz der Anfragen ein, die an den Canary weitergeleitet werden sollen.

  9. Wählen Sie bei Bedarf Stage Cache (Stufen-Cache) aus, um das Caching für die Canary-Version zu aktivieren. Der Cache ist für die Canary-Version erst verfügbar, wenn das API Caching aktiviert ist.

  10. Um bestehende Stufenvariablen zu überschreiben, geben Sie für Canary Override (Überschreibung des Canary) einen neuen Wert für die Stufenvariable ein.

Nachdem die Canary-Version in der Bereitstellungsphase initialisiert wurde, ändern Sie die Änderungen API und möchten die Änderungen testen. Sie können das API in derselben Phase erneut bereitstellen, sodass sowohl auf die aktualisierte Version als auch auf die Basisversion in derselben Phase zugegriffen werden kann. In den folgenden Schritten wird beschrieben, wie Sie dies tun.

Um die neueste API Version auf einem Canary bereitzustellen
  1. Wählen Sie bei jedem Update von Deploy API. API

  2. Wählen Sie in Deploy API aus der Dropdownliste Bereitstellungsphase die Phase aus, die einen Canary enthält.

  3. (Optional) Geben Sie unter Deployment description (Beschreibung der Bereitstellen) eine Beschreibung ein.

  4. Wähle Deploy, um die neueste API Version auf die Canary-Version zu übertragen.

  5. Falls erwünscht, rekonfigurieren Sie die Stufeneinstellungen, Protokolle oder Canary-Einstellungen, wie in beschriebe So erstellen Sie eine erste Canary-Release-Bereitstellung.

Daher verweist die Canary-Version auf die neueste Version, während die Produktionsversion immer noch auf die ursprüngliche Version von verweistAPI. Das hat canarySettingsjetzt einen neuen deploymentIdWert, wohingegen die Phase immer noch den deploymentIdAnfangswert hat. Hinter den Kulissen ruft die Konsole stage:update auf.

Erstellen Sie ein Canary-Deployment mit dem AWS CLI

Erstellen Sie zunächst eine Basisbereitstellung mit zwei Stufenvariablen, jedoch ohne Canary:

aws apigateway create-deployment \ --variables sv0=val0,sv1=val1 \ --rest-api-id abcd1234 \ --stage-name 'prod' \

Der Befehl gibt eine Darstellung der resultierenden Deployment zurück, ähnlich der folgenden:

{ "id": "du4ot1", "createdDate": 1511379050 }

Die resultierende Bereitstellung id identifiziert einen Snapshot (oder eine Version) vonAPI.

Erstellen Sie jetzt eine Canary-Bereitstellung in der prod-Stufe:

aws apigateway create-deployment --rest-api-id abcd1234 \ --canary-settings \ '{ "percentTraffic":10.5, "useStageCache":false, "stageVariableOverrides":{ "sv1":"val2", "sv2":"val3" } }' \ --stage-name 'prod'

Wenn die angegebene Stufe (prod) nicht existiert, gibt der vorhergehende Befehl einen Fehler zurück. Andernfalls wird die neu erstellte deployment-Ressourcenrepräsentation ähnlich der folgenden zurückgegeben:

{ "id": "a6rox0", "createdDate": 1511379433 }

Die resultierende Bereitstellung id identifiziert die Testversion von API für die Canary-Version. Dadurch ist die zugehörige Stufe für Canary aktiviert. Sie können sich diese Stufenrepräsentation ansehen, indem Sie den Befehl get-stage aufrufen, ähnlich wie im Folgenden beschrieben:

aws apigateway get-stage --rest-api-id acbd1234 --stage-name prod

Nachfolgend ist eine Repräsentation der Stage als Ausgabe des Befehls zu sehen:

{ "stageName": "prod", "variables": { "sv0": "val0", "sv1": "val1" }, "cacheClusterEnabled": false, "cacheClusterStatus": "NOT_AVAILABLE", "deploymentId": "du4ot1", "lastUpdatedDate": 1511379433, "createdDate": 1511379050, "canarySettings": { "percentTraffic": 10.5, "deploymentId": "a6rox0", "useStageCache": false, "stageVariableOverrides": { "sv2": "val3", "sv1": "val2" } }, "methodSettings": {} }

In diesem Beispiel verwendet die Basisversion von API die Stufenvariablen von{"sv0":val0", "sv1":val1"}, während die Testversion die Stufenvariablen von verwendet{"sv1":val2", "sv2":val3"}. Sowohl das Produktionsrelease als auch das Canary-Release verwenden die gleiche Stufenvariable sv1, jedoch mit unterschiedlichen Werten (val1 und val2). Die Stufenvariable sv0 wird ausschließlich im Produktionsrelease verwendet und die Stufenvariable sv2 wird nur im Canary-Release verwendet.

Sie können aus einer bestehenden, regulären Bereitstellung eine Canary-Release-Bereitstellung erstellen, indem Sie die Stufe aktualisieren, um Canary zu aktivieren. Um dies zu demonstrieren, erstellen Sie zunächst eine reguläre Bereitstellung:

aws apigateway create-deployment \ --variables sv0=val0,sv1=val1 \ --rest-api-id abcd1234 \ --stage-name 'beta'

Der Befehl gibt eine Repräsentation der Basisversionsbereitstellung zurück:

{ "id": "cifeiw", "createdDate": 1511380879 }

Die dazugehörige Beta-Stufe hat keine Canary-Einstellungen:

{ "stageName": "beta", "variables": { "sv0": "val0", "sv1": "val1" }, "cacheClusterEnabled": false, "cacheClusterStatus": "NOT_AVAILABLE", "deploymentId": "cifeiw", "lastUpdatedDate": 1511380879, "createdDate": 1511380879, "methodSettings": {} }

Erstellen Sie jetzt eine neue Canary-Release-Bereitstellung, indem Sie ein Canary zur Stufe hinzufügen:

aws apigateway update-stage \ --rest-api-id abcd1234 \ --stage-name 'beta' \ --patch-operations '[{ "op": "replace", "value": "0.0", "path": "/canarySettings/percentTraffic" }, { "op": "copy", "from": "/canarySettings/stageVariableOverrides", "path": "/variables" }, { "op": "copy", "from": "/canarySettings/deploymentId", "path": "/deploymentId" }]'

Eine Repräsentation der aktualisierten Stufe sieht so aus:

{ "stageName": "beta", "variables": { "sv0": "val0", "sv1": "val1" }, "cacheClusterEnabled": false, "cacheClusterStatus": "NOT_AVAILABLE", "deploymentId": "cifeiw", "lastUpdatedDate": 1511381930, "createdDate": 1511380879, "canarySettings": { "percentTraffic": 10.5, "deploymentId": "cifeiw", "useStageCache": false, "stageVariableOverrides": { "sv2": "val3", "sv1": "val2" } }, "methodSettings": {} }

Da wir gerade einen Canary auf einer vorhandenen Version von aktiviert habenAPI, verweisen sowohl die Produktionsversion (Stage) als auch die Canary-Version (canarySettings) auf dieselbe Bereitstellung, d. h. auf dieselbe Version (deploymentId) vonAPI. Nachdem Sie das geändert API und es wieder in dieser Phase bereitgestellt haben, wird die neue Version in der Canary-Version enthalten sein, während die Basisversion in der Produktionsversion verbleibt. Dies wirkt sich auf die Stufenentwicklung aus, wenn die deploymentId im Canary-Release auf die neue Bereitstellungs-id aktualisiert wird und die deploymentId im Produktions-Release unverändert bleibt.