Freigeben über


Umweltschonende APIs in Azure API Management (Vorschau)

GILT FÜR: Entwickler | Basis | Standard | Premium

In diesem Artikel werden Features in Azure API Management vorgestellt, mit denen Sie den Co2-Fußabdruck Ihres API-Datenverkehrs reduzieren können. Nutzen Sie Funktionen, um den API-Datenverkehr basierend auf CO2-Emissionen in verschiedenen Azure-Regionen anzupassen.

Hinweis

  • Merkmale für nachhaltige Entwicklung befinden sich derzeit in einer limitierten Vorschau. Um sich anzumelden, füllen Sie das Formular aus.
  • Diese Features sind derzeit in ausgewählten Regionen in den klassischen Azure-API-Verwaltungsebenen (Entwickler, Basic, Standard, Premium) verfügbar.

Informationen zu nachhaltigen APIs

Organisationen konzentrieren sich zunehmend darauf, ihre Auswirkungen auf die Umwelt durch ihre digitale Infrastruktur zu reduzieren.

Mit der API-Verwaltung können Sie diese Ziele mit Features erreichen, die Ihnen helfen:

Indem Sie optimieren, wie Ihre APIs Datenverkehr basierend auf Umgebungsfaktoren verarbeiten, können Sie:

  • Reduzieren der Co2-Emissionen Ihres API-Datenverkehrs
  • Unterstützung von Initiativen zur Nachhaltigkeit von Unternehmen und Umweltverpflichtungen
  • Veranschaulichen der Umweltverantwortung für die Beteiligten

Verkehrsumleitung

Die Datenverkehrsverschiebung erfordert das Konfigurieren einer Back-End-Ressource in einer unterstützten Azure-Region, die Informationen zur Kohlenstoffintensität bereitstellt. Geben Sie dann in einem Lastenausgleichs-Back-End-Pool den maximal zulässigen Co2-Emissionswert für das regionalisierte Back-End unter Verwendung einer der Co2-Intensitätskategorien an.

Diese Funktion, kombiniert mit Ihren vorhandenen Lastenausgleichs- und Routingstrategien, hilft Ihnen, den Datenverkehr von Backend-Systemen in Regionen mit relativ höheren CO₂-Emissionen zu umgehen.

Zur Laufzeit:

  • Die API-Verwaltung bemüht sich am besten, Datenverkehr an "grüne" Back-Ends (in Regionen mit Emissionen unter den angegebenen Schwellenwerten) weiterzuleiten und "schmutzige" Back-Ends (in Regionen mit Emissionen über den angegebenen Schwellenwerten) auszuschließen.
  • Die API-Verwaltung leitet Datenverkehr unter bestimmten Bedingungen an "dirty"-Back-Ends weiter, um die Dienstkontinuität sicherzustellen – beispielsweise, wenn alle regionalisierten Back-Ends "dirty" sind und andere Back-Ends nicht verfügbar sind.

Diagramm zur Verlagerung des Datenverkehrs auf ein Back-End mit geringeren Emissionen in einem Pool mit Lastenausgleich.

Konfigurationsbeispiel

Konfigurieren Sie zunächst ein Back-End in einer unterstützten Azure-Region , indem Sie die optionale azureRegion Eigenschaft festlegen:

{
    "type": "Microsoft.ApiManagement/service/backends", 
    "apiVersion": "2024-10-01-preview", 
    "name": "sustainable-backend", 
    "properties": {
        "url": "https://mybackend.example.com",
        "protocol": "http",
        "azureRegion": "westeurope",
        [...]
  }
}

Verwenden Sie dann das regionalisierte Back-End in einem Lastenausgleichspool, und definieren Sie den Emissionsschwellenwert mithilfe einer preferredCarbonEmission Eigenschaft.

In diesem Beispiel wird der Datenverkehr zu westeurope ausgeschlossen, wenn die CO2-Intensität in der Region Mediumsustainable-backend überschreitet, im Vergleich zu den anderen Back-Ends im Pool.

{
    [...]
    "properties": {
        "description": "Load balancer for multiple backends",
        "type": "Pool",
        "pool": {
            "services": [
                {
                    "id": "<sustainable-backend-id>",
                    "weight": 1,
                    "priority": 1,
                    "preferredCarbonEmission": "Medium"
                }
                {
                    
                    "id": "<regular-backend-id>",
                    "weight": 1,
                    "priority": 1
                }
                {
                    "id": "<fallback-backend-id>",
                    "weight": 1,
                    "priority": 2
                }
            ]
        }
    }
} 

Verkehrsgestaltung

Mit der Traffic-Steuerung können Sie das Verhalten Ihrer APIs basierend auf den relativen CO₂-Emissionswerten in der (den) Region(en) Ihres API-Verwaltungsdienstes anpassen. Die API-Verwaltung macht die context.Deployment.SustainabilityInfo.CurrentCarbonIntensityKontextvariable verfügbar, die die aktuelle Co2-Intensitätskategorie für Ihre API-Verwaltungsinstanz angibt.

Bei Bereitstellungen mit mehreren Regionen stellt das Gateway die Co2-Intensität der jeweiligen Region bereit, in der es ausgeführt wird.

Verwenden Sie diese Kontextvariable in Ihren Richtlinien, um eine intensivere Datenverkehrsverarbeitung in Zeiträumen mit geringen Co2-Emissionen zu ermöglichen oder die Verarbeitung bei hohen Co2-Emissionen zu reduzieren.

Beispiel: Anpassen des Verhaltens bei hohen Co2-Emissionsperioden

Im folgenden Beispiel erweitert API-Verwaltung Cachedauern, implementiert eine strengere Begrenzung der Rate und reduziert die Protokollierungsdetails während hoher Co2-Emissionsperioden.

<policies>
    <inbound>
        <base />
        <choose>
          <when condition="@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity == CarbonIntensityCategory.High)">
            <!-- Policies for high carbon emission periods -->
            <cache-store duration="3600" />
            <rate-limit-by-key calls="100" renewal-period="60" counter-key="@(context.Request.IpAddress)" />
            <set-variable name="enableDetailedLogging" value="false" />
          </when>
          <when condition="@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity == CarbonIntensityCategory.Medium)">
            <!-- Policies for medium carbon emission periods -->
            <cache-store duration="1800" />
            <rate-limit-by-key calls="200" renewal-period="60" counter-key="@(context.Request.IpAddress)" />
            <set-variable name="enableDetailedLogging" value="true" />
          </when>
          <otherwise>
            <!-- Policies for low carbon emission periods -->
            <cache-store duration="900" />
            <rate-limit-by-key calls="300" renewal-period="60" counter-key="@(context.Request.IpAddress)" />
            <set-variable name="enableDetailedLogging" value="true" />
          </otherwise>
        </choose>
    
        <!-- Use the logging variable elsewhere -->
        <choose>
          <when condition="@(context.Variables.GetValueOrDefault<bool>("enableDetailedLogging"))">
            <log-to-eventhub logger-id="detailed-logger">
              @{
                  return JObject.FromObject(context).ToString();
              }
            </log-to-eventhub>
          </when>
          <otherwise>
            <log-to-eventhub logger-id="basic-logger">
              @{
                  var log = new JObject();
                  log["requestId"] = context.RequestId;
                  log["method"] = context.Request.Method;
                  log["url"] = context.Request.Url.ToString();
                  log["statusCode"] = context.Response.StatusCode;
                  return log.ToString();
              }
            </log-to-eventhub>
          </otherwise>
        </choose>
    </inbound>
    [...]    
</policies>

Beispiel: Weiterleiten von Informationen zur CO2-Intensität an das Backend oder in Protokollen

Das folgende Beispiel zeigt, wie Sie auf die aktuelle Co2-Intensität zugreifen und sie in das Back-End oder in Protokollen weitergeben.

<policies>
    [...]
    <outbound>
        <base />
        <set-header name="X-Sustainability-CarbonEmission" exists-action="override">
            <value>@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity.ToString())</value>
        </set-header>
    </outbound>
    [...]
</policies>

Beispiel: Anpassung der Ausführlichkeit der Nachverfolgung basierend auf der CO2-Intensität

Das folgende Beispiel zeigt, wie Sie die aktuellen Informationen zur CO2-Intensität verwenden, um die Menge der Informationen anzupassen, die in einer benutzerdefinierten Ablaufverfolgung weitergegeben werden.

<policies>
    [...]
    <inbound>
        <base />
        <choose>
            <when condition="@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity >= CarbonIntensityCategory.High)">
                <trace source="Orders API" severity="verbose">
                    <message>Lead Created</message>
                </trace>
            </when>
            <otherwise>
                <trace source="Orders API" severity="information">
                    <message>Lead Created</message>
                </trace>
            </otherwise>
        </choose>
    </inbound>
    [...]    
</policies>

Regionale Verfügbarkeit

Die folgende Tabelle gibt folgendes an:

  • Regionen, in denen Instanzen der klassischen API-Verwaltungsebenen (Developer, Basic, Standard, Premium) Nachhaltigkeitsfeatures unterstützen (nach der Registrierung für die Vorschau)
  • Regionen, in denen Informationen zur Intensität der Co2-Emissionen verfügbar sind, z. B. zum Erstellen regionalisierter Back-Ends für die Verkehrsverschiebung
Region API-Verwaltungsunterstützung Informationen zur Kohlenstoffintensität
Australia Central
Australien Central 2
Australia East
Australia Southeast
Brasilien Süd
Brasilien, Südosten
Canada Central
Canada East
Zentralindien
Central US
Chile Zentral
Ostasien
East US
Ost-USA 2
Frankreich, Mitte
France South
Germany North
Deutschland West Central
Indonesien Zentral
Israel Central
Italy North
Japan, Osten
Japan West
Jio Indien Mitte
Jio India West
Korea Central
Korea South
Malaysia Süd
Mexiko Zentral
Neuseeland, Norden
Nord-Mittel-USA
Nordeuropa
Norway East
Westnorwegen
Poland Central
Qatar Central
Südafrika Nord
Südafrika, Westen
Süd-Mittel-USA
South India
Südostasien
Spain Central
Schweden, Mitte
Schweden Süd
Switzerland North
Switzerland West
Taiwan North
Taiwan Nordwest
Taiwan, Westen
UAE Central
Vereinigte Arabische Emirate, Norden
UK South
UK West
Zentraler Westen der USA
West Europe
West India
West US
Westliches USA 2
Westliches USA 3

Co2-Intensitätskategorien

In der folgenden Tabelle werden die Co2-Intensitätskategorien erläutert, die in den Merkmalen der Verkehrsverlagerung und der Verkehrsgestaltung verwendet werden. Die Werte liegen in Gramm CO² pro KWh für die Bereichsemissionen 2.

Kategorie g CO²e
Nicht verfügbar. N/A
SehrNiedrig ≤ 150
Low 151-300
Mittelstufe 301-500
High 501-700
Sehr hoch > 700