Aktualisierung auf die 2022-03-29-Version (Netzschnittstellen, Sicherheitsgruppen)

Wie im Abschnitt Versionierung beschrieben, sind die meisten Änderungen an den VPC-APIs vollständig kompatibel mit früheren Versionen und stehen daher allen Clients zur Verfügung, unabhängig davon, welche API-Version der Client anfordert. Die Veröffentlichung 2022-03-29 der VPC-API machte jedoch inkompatible Änderungen zur Unterstützung der Funktion für reservierte IP-Adressen erforderlich:

  • IP-Adressen werden jetzt als Objekte (Ressourcen) modelliert und nicht als Zeichenfolgen.
  • Sicherheitsgruppen werden jetzt Zielen zugeordnet und nicht Netzschnittstellen.

Wenn Ihre Kunden weiterhin die Version oder 2022-03-28 eine frühere Version der VPC-API angeben, sind keine Änderungen erforderlich, allerdings können diese Kunden weiterhin nicht in vollem Umfang von reservierten IP-Adressen profitieren. Weitere Informationen zu reservierten Adressen finden Sie unter IP-Adressen verwalten.

Auch wenn Sie nicht vorhaben, reservierte IP-Adressen zu verwenden, lesen und befolgen Sie die Handlungsbedarf Abschnitt, bevor Ihr Client eine Version angibt 2022-03-29 oder später.

Die VPC-Metadaten-API unterstützt noch keine reservierten IP-Adressen. Für Clients, die die API für Metadaten verwenden, sind keine Änderungen erforderlich, damit Version 2022-03-29 oder höher verwendet werden kann.

Erforderliche Aktion

Bevor der Client eine Version angibt 2022-03-29 oder später, befolgen Sie diese Schritte, um Einschränkungen der Clientfunktionalität zu vermeiden.

Verwendung von IP-Adressen migrieren

Bevor Sie einen Client auf eine API-Version migrieren 2022-03-29 oder später, überprüfen Sie Ihren Code auf die Verwendung der primary_ipv4_address Eigentum. Wie in der Beispiele, ab Version 2022-03-29, Die primary_ipv4_address Die Zeichenfolgeeigenschaft wird ersetzt durch die primary_ip Objekteigenschaft, die eine address Untereigenschaft. Daher müssen Sie alle Vorkommen von primary_ipv4_address in ersetzen, und zwar in primary_ip.address der für Ihre Programmiersprache geeigneten Weise.

Während primary_ipv4_address nur in den NetworkInterface-, NetworkInterfaceReference-und NetworkInterfacePrototype-Schemas (und ihren eng verwandten BareMetalNetworkInterface-Schemas) angezeigt wird, werden diese Schemas in der VPC-API umfassend verwendet. Obwohl sich die inkompatible Änderung auf die Eigenschaft primary_ipv4_address beschränkte, waren daher viele Operationen davon betroffen. Eine vollständige Liste finden Sie unter Geänderte Operationen.

Verwendung von Sicherheitsgruppenzuordnungen migrieren

Als Bestandteil des Release 2021-02-23 wurden Zielmethoden für Sicherheitsgruppen verfügbar gemacht und die ursprünglichen spezifischen Methoden für Netzschnittstellen, wurden nicht weiter unterstützt. In API-Version 2022-03-29 wird die Unterstützung für diese veralteten Methoden entfernt. Wie unter Beispiele gezeigt, enthalten die Zielmethoden der Sicherheitsgruppe die Funktionalität der veralteten Methoden. Sicherheitsgruppenziele ermöglichen auch die Zuordnung von Sicherheitsgruppen zu anderen VPC-Ressourcen (z. B. Endpunktgateways und Lastausgleichsfunktionen).

Von den veralteten Methoden GET und PUT wurden NetworkInterface-Antwortschemas zurückgegeben. Die neuen Methoden GET und PUT geben jedoch NetworkInterfaceReference-Antwortschemas zurück. Wenn Ihr Client über die Eigenschaften in NetworkInterfaceReference hinaus auf Eigenschaften zugegriffen hat, muss Ihr Client GET /instances/{instance_id}/network_interfaces/{id} aufrufen, um diese Eigenschaften separat abzurufen.

Wenn Ihr Client zuvor auf die Eigenschaft network_interfaces[] zugegriffen hat, die von GET /security_groups zurückgegeben wird, muss er außerdem auf die Eigenschaft targets[] zugreifen. Wenn Ihr Client über die Eigenschaften in NetworkInterfaceReference hinaus auf Eigenschaften in network_interfaces[] zugegriffen hat, müssen Sie GET /instances/{instance_id}/network_interfaces/{id} aufrufen, um diese Eigenschaften separat abzurufen.

Beispiele

In diesen Beispielen werden die Unterschiede vor und nach der versionsgesteuerten Änderung von 2022-03-29 verglichen.

Beispiele für IP-Adressen

In den folgenden Beispielen wird dargestellt, wie ein Aufruf POST /instances zum Bereitstellen einer Instanz mit einer bestimmten IP-Adresse in der zugehörigen primären Netzschnittstelle vor bzw. nach der versionsgesteuerten Änderung von 2022-03-29 ausgeführt wurde bzw. wird, und wie die betreffende IP-Adresse abgerufen wird.

API-Version 2022-03-28 oder niedriger angeben:

curl -X POST \
  "$vpc_api_endpoint/v1/instances?version=2022-03-28&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
        "image": {"id": "'"$image_id"'"},
        "keys": [{"id": "'"$key_id"'"}],
        "primary_network_interface": {
          "primary_ipv4_address": "10.240.0.5",
          "subnet": {"id": "'"$subnet_id"'"}
        },
        "zone": {"name": "'"$zone"'"}
      }'

So wird die Adresse abgerufen:

curl -X GET \
  "$vpc_api_endpoint/v1/instances/$instance_id?version=2022-03-28&generation=2" \
  -H "Authorization: Bearer $iam_token" | jq '.primary_network_interface.primary_ipv4_address'

API-Version 2022-03-29 oder höher angeben:

curl -X POST \
  "$vpc_api_endpoint/v1/instances?version=2022-03-29&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
        "image": {"id": "'"$image_id"'"},
        "keys": [{"id": "'"$key_id"'"}],
        "primary_network_interface": {
          "primary_ip": {
            "address": "10.240.0.5"
          },
          "subnet": {"id": "'"$subnet_id"'"}
        },
        "zone": {"name": "'"$zone"'"}
      }'

So wird die Adresse abgerufen:

curl -X GET \
  "$vpc_api_endpoint/v1/instances/$instance_id?version=2022-03-29&generation=2" \
  -H "Authorization: Bearer $iam_token" | jq '.primary_network_interface.primary_ip.address'

In den folgenden Beispielen wird dargestellt, wie ein Aufruf POST /instances/{id}/network_interface zum Erstellen einer neuen Netzschnittstelle in einer vorhandenen Instanz mit einer bestimmten IP-Adresse vor bzw. nach der versionsgesteuerten Änderung von 2022-03-29 ausgeführt wurde bzw. wird, und wie die Adresse abgerufen wird.

API-Version 2022-03-28 oder niedriger angeben:

curl -X POST \
  "$vpc_api_endpoint/v1/instances/$instance_id/network_interfaces?version=2022-03-28&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
        "primary_ipv4_address": "10.240.0.5",
        "subnet": {"id": "'"$subnet_id"'"}
      }'

So wird die Adresse abgerufen:

curl -X GET \
  "$vpc_api_endpoint/v1/instances/$instance_id/network_interfaces/$network_interface_id?version=2022-03-28&generation=2" \
  -H "Authorization: Bearer $iam_token" | jq '.primary_ipv4_address'

API-Version 2022-03-29 oder höher angeben:

curl -X POST \
  "$vpc_api_endpoint/v1/instances/$instance_id/network_interfaces?version=2022-03-29&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
        "primary_ip":
          {
           "address": "10.240.0.5"
          },
        "subnet": {"id": "'"$subnet_id"'"}
      }'

So wird die Adresse abgerufen:

curl -X GET \
  "$vpc_api_endpoint/v1/instances/$instance_id/network_interfaces/$network_interface_id?version=2022-03-29&generation=2" \
  -H "Authorization: Bearer $iam_token" | jq '.primary_ip.address'

In den Beispielen wird jq als Parser ein Drittanbieter-Tool verwendet, das unter der MIT-Lizenz lizenziert ist. Einige Betriebssysteme enthalten dies standardmäßig jq nicht. Installieren Sie diese vor jq der Verwendung oder verwenden Sie einen anderen JSON-Parser.

Beispiele für Sicherheitsgruppenzuordnungen

In den folgenden Beispielen wird dargestellt, wie eine Netzschnittstelle vor bzw. nach der versionsgesteuerten Änderung von 2022-03-29 in eine Sicherheitsgruppe eingefügt wurde bzw. wird.

API-Version 2022-03-28 oder niedriger angeben:

curl -X PUT \
  "$vpc_api_endpoint/v1/security_groups/$security_group_id/network_interfaces/$id?version=2022-03-28&generation=2" \
  -H "Authorization: Bearer $iam_token"

API-Version 2022-03-29 oder höher angeben:

curl -X PUT \
  "$vpc_api_endpoint/v1/security_groups/$security_group_id/targets/$id?version=2022-03-29&generation=2" \
  -H "Authorization: Bearer $iam_token"

In den folgenden Beispielen wird dargestellt, wie eine Netzschnittstelle vor bzw. nach der versionsgesteuerten Änderung von 2022-03-29 aus einer Sicherheitsgruppe entfernt wurde bzw. wird.

API-Version 2022-03-28 oder niedriger angeben:

curl -X DELETE \
  "$vpc_api_endpoint/v1/security_groups/$security_group_id/network_interfaces/$id?version=2022-03-28&generation=2" \
  -H "Authorization: Bearer $iam_token"

API-Version 2022-03-29 oder höher angeben:

curl -X DELETE \
  "$vpc_api_endpoint/v1/security_groups/$security_group_id/targets/$id?version=2022-03-29&generation=2" \
  -H "Authorization: Bearer $iam_token"

Geänderte Operationen

IP-Adressen

In der folgenden Tabelle sind die Vorgänge aufgeführt, bei denen die primary_ipv4_address gewechselt zu primary_ip in den Anforderungstexten, Antworttexten oder beiden. Ein Punkt (.) gibt an, dass primary_ipv4_address im Antwortschema der höchsten Ebene in primary_ip geändert wurde.

Liste der Vorgänge, deren Eigenschaften sich geändert haben.
Methode Pfad Geänderte Anforderungseigenschaften Geänderte Antworteigenschaften
GET /bare_metal_servers .bare_metal_servers[].network_interfaces[], .bare_metal_servers[].primary_network_interface
POST /bare_metal_servers .network_interfaces[], primary_network_interface .network_interfaces[], .primary_network_interface
GET /bare_metal_servers/{id} .network_interfaces[], .primary_network_interface
PATCH /bare_metal_servers/{id} .network_interfaces[], .primary_network_interface
GET /bare_metal_servers/{id}/network_interfaces .network_interfaces[]
POST /bare_metal_servers/{id}/network_interfaces . .
GET /bare_metal_servers/{bare_metal_server_id}/network_interfaces/{id} .
GET /bare_metal_servers/{bare_metal_server_id}/network_interfaces/{id}/floating_ips .floating_ips[].target
GET /bare_metal_servers/{bare_metal_server_id}/network_interfaces/{network_interface_id}/floating_ips/{id} .target
PUT /bare_metal_servers/{bare_metal_server_id}/network_interfaces/{network_interface_id}/floating_ips/{id} .target
GET /floating_ips .floating_ips[].target
POST /floating_ips .target
GET /floating_ips/{id} .
PATCH /floating_ips/{id} .
GET /instance/templates .templates[].network_interfaces[], .templates[].primary_network_interface
POST /instance/templates .network_interfaces[], primary_network_interface .network_interfaces[], .primary_network_interface
GET /instance/templates/{id} .network_interfaces[], .primary_network_interface
PATCH /instance/templates/{id} .network_interfaces[], .primary_network_interface
GET /instances .instances[].network_interfaces[], .instances[].primary_network_interface
POST /instances .network_interfaces[], primary_network_interface .network_interfaces[], .primary_network_interface
GET /instances/{id} .network_interfaces[], .primary_network_interface
PATCH /instances/{id} .network_interfaces[], .primary_network_interface
GET /instances/{id}/network_interfaces .network_interfaces[]
POST /instances/{id}/network_interfaces . .
GET /instances/{instance_id}/network_interfaces/{id} .
GET /instances/{instance_id}/network_interfaces/{id}/floating_ips .floating_ips[].target
GET /instances/{instance_id}/network_interfaces/{network_interface_id}/floating_ips/{id} .target
PUT /instances/{instance_id}/network_interfaces/{network_interface_id}/floating_ips/{id} .target
GET /vpcs/{id}/default_security_group .network_interfaces[]

Sicherheitsgruppenzuordnungen

In der folgenden Tabelle sind die Methoden oder Eigenschaften aufgeführt, die im Rahmen der vollständigen Umstellung auf Sicherheitsgruppen-Ziele entfernt wurden.

Liste der Methoden oder Eigenschaften, die entfernt wurden.
Methode Pfad Geänderte Anforderungseigenschaften Geänderte Antworteigenschaften
GET /security_groups .security_groups[].network_interfaces
GET /security_groups/{id}/network_interfaces
DELETE /security_groups/{security_group_id}/network_interfaces/{id}
GET /security_groups/{security_group_id}/network_interfaces/{id}
PUT /security_groups/{security_group_id}/network_interfaces/{id}