Erstellen einer Canary-Release-Bereitstellung - Amazon API 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 eine Canary-Release-Bereitstellung bei der Bereitstellung der API mit Canary-Einstellungen als zusätzliche Eingabe für die Bereitstellungserstellung.

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. API Gateway erstellt eine Stufe, wenn die angegebene Stufe nicht existiert. Sie können jedoch beim Anlegen einer Canary-Release-Bereitstellung keinen nicht existierenden Stufennamen angeben. Sie erhalten eine Fehlermeldung und API Gateway erstellt keine Canary-Release-Bereitstellung.

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

Erstellen einer Canary-Bereitstellung mithilfe der API Gateway-Konsole

Gehen Sie nach den Anweisungen unten vor, um eine Canary-Release-Bereitstellung mit der API Gateway-Konsole zu erstellen:

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

  2. Wählen Sie eine vorhandene REST API aus oder erstellen Sie eine neue REST API.

  3. Klicken Sie im Hauptnavigationsbereich von auf Resources (Ressourcen) und auf Deploy API (API bereitstellen). Befolgen Sie die Anweisungen auf der Seite in Deploy API, um die API in einer neuen Stufe bereitzustellen.

    Bislang haben Sie die API in einer Produktions-Release-Stufe bereitgestellt. Als Nächstes konfigurieren Sie Canary-Einstellungen für die Stufe und, falls erforderlich, auch das Caching. Sie legen Stufenvariablen fest oder konfigurieren die API-Ausführung oder die Zugriffsprotokolle.

  4. Um das API-Caching zu aktivieren oder der Stufe eine AWS WAF Web-ACL zuzuordnen, wählen Sie im Abschnitt Stage details (Stufendetails) die Option Edit (Bearbeiten) aus. Weitere Informationen finden Sie unter Aktivieren von API-Caching für verbesserte Reaktionsfähigkeit oder So verknüpfen Sie eine regionale AWS WAF-Web-ACL mit einer API-Gateway-API-Stufe über die API-Gateway-Konsole:.

  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 Einrichten der CloudWatch-Protokollierung für eine REST-API in API Gateway.

  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 Einrichten von Stufenvariablen für eine REST-API-Bereitstellung.

  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 steht für das Canary-Release erst dann zur Verfügung, 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 das Canary-Release in der Bereitstellungsstufe initialisiert wurde, ändern Sie die API und testen die Änderungen. Sie können die API in derselben Stufe erneut bereitstellen, sodass sowohl die aktualisierte Version als auch die Basisversion über dieselbe Stufe zugreifbar sind. In den folgenden Schritten wird beschrieben, wie Sie dies tun.

So stellen Sie die neueste API-Version für ein Canary bereit
  1. Wählen Sie bei jeder Aktualisierung der API Deploy API (API bereitstellen) aus.

  2. Wählen Sie in Deploy API (API bereitstellen) in der Dropdown-Liste Deployment stage (Bereitstellungsstufe) die Stufe aus, die einen Canary enthält.

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

  4. Wählen Sie Deploy, um die neueste API-Version auf das Canary-Release 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.

Dadurch verweist das Canary-Release auf die neueste Version, während das Produktionsrelease noch auf die erste Version der API verweist. canarySettings hat jetzt einen neuen deploymentId-Wert, während die Stufe noch den ursprünglichen deploymentId-Wert aufweist. Hinter den Kulissen ruft die Konsole stage:update auf.

Erstellen einer Canary-Release-Bereitstellung mit der 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 Bereitstellungs-id identifiziert einen Snapshot (oder eine Version) der API.

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 Bereitstellungs-id identifiziert die Testversion der API für das Canary-Release. 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 der API die Stufenvariablen {"sv0":val0", "sv1":val1"}, während die Testversion die Stufenvariablen {"sv1":val2", "sv2":val3"} verwendet. 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 ein Canary für eine existierende Version der API aktiviert haben, zeigen sowohl das Produktions-Release (Stage) als auch das Canary-Release (canarySettings) auf die gleiche Bereitstellung – d. h. die gleiche Version (deploymentId) der API. Nachdem Sie die API geändert und für diese Stufe wieder bereitgestellt haben, ist die neue Version im Canary-Release. Die Basisversion verbleibt im Produktions-Release. 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.