Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SE APLICA A: Developer | Básico | Estándar | Premium
En este artículo se presentan características de Azure API Management que le ayudan a reducir la huella de carbono del tráfico de API. Use las características para ajustar el tráfico de API en función de las emisiones de carbono en diferentes regiones de Azure.
Nota:
- Las características de sostenibilidad ambiental se encuentran actualmente en versión preliminar limitada. Para registrarse, complete el formulario.
- Estas características están disponibles actualmente en regiones seleccionadas en los niveles clásicos de Azure API Management (Desarrollador, Básico, Estándar, Premium).
Acerca de las API sostenibles
Las organizaciones se centran cada vez más en reducir su impacto ambiental a través de su infraestructura digital.
API Management le permite lograr estos objetivos con características que ayudan a:
- Desplazar y equilibrar la carga del tráfico de API hacia regiones de back-end en función de su intensidad de carbono
- Dar forma al tráfico de API en función de las emisiones de carbono en la región del servicio API Management
Mediante la optimización del modo en que las API controlan el tráfico en función de los factores del entorno, puede hacer lo siguiente:
- Reducción de las emisiones de carbono del tráfico de API
- Apoyo a iniciativas de sostenibilidad corporativa y compromisos medioambientales
- Demostrar la responsabilidad ambiental a las partes interesadas
Cambio de tráfico
El cambio de tráfico requiere configurar un recurso de back-end en una región de Azure compatible que proporcione información de intensidad de carbono. A continuación, en un grupo de back-end de carga equilibrada, especifique el nivel máximo aceptable de emisión de carbono para el back-end regionalizado, utilizando una de las categorías de intensidad de carbono.
Esta funcionalidad, combinada con las estrategias de equilibrio de carga y enrutamiento existentes, le ayuda a excluir el tráfico a los back-end en regiones con emisiones de carbono relativamente mayores.
En tiempo de ejecución:
- API Management realiza un mejor esfuerzo para enrutar el tráfico a back-end "verde" (en regiones con emisiones por debajo de los umbrales especificados) y excluye los back-end "sucios" (en regiones con emisiones por encima de los umbrales especificados).
- API Management enruta el tráfico a back-end "sucios" en determinadas condiciones para garantizar la continuidad del servicio; por ejemplo, cuando todos los back-end regionalizados son "sucios" y otros back-end no están disponibles.
Ejemplo de configuración
En primer lugar, configure un back-end en una región de Azure compatible estableciendo la propiedad opcional azureRegion :
{
"type": "Microsoft.ApiManagement/service/backends",
"apiVersion": "2024-10-01-preview",
"name": "sustainable-backend",
"properties": {
"url": "https://mybackend.example.com",
"protocol": "http",
"azureRegion": "westeurope",
[...]
}
}
A continuación, utilice el backend regionalizado dentro de un pool con balanceo de carga y defina mediante una preferredCarbonEmission propiedad el umbral de emisión.
En este ejemplo, si la intensidad del carbono en la región westeurope supera Medium, se excluye el tráfico a sustainable-backend en comparación con los demás back-ends del grupo.
{
[...]
"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
}
]
}
}
}
Modelado del tráfico
El modelado del tráfico le permite ajustar el comportamiento de la API en función de los niveles relativos de emisión de carbono en la región del servicio API Management (o regiones). API Management expone la context.Deployment.SustainabilityInfo.CurrentCarbonIntensityvariable de contexto, que indica la categoría de intensidad de carbono actual para la instancia de API Management.
En los despliegues multirregionales, el gateway proporciona la intensidad de carbono de la región correspondiente donde se ejecuta.
Use esta variable de contexto en sus políticas para permitir el procesamiento de tráfico más intensivo durante períodos de emisiones de carbono bajas o reducir el procesamiento durante las emisiones de carbono elevadas.
Ejemplo: Ajuste del comportamiento en períodos de emisiones de carbono elevadas
En el ejemplo siguiente, API Management amplía las duraciones de caché, implementa una limitación de velocidad más estricta y reduce los detalles del registro durante períodos de emisión de carbono elevados.
<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>
Ejemplo: Propagación de la información sobre la intensidad de carbono al backend o en los registros
En el ejemplo siguiente se muestra cómo acceder a la intensidad de carbono actual y propagarla al back-end o en los registros.
<policies>
[...]
<outbound>
<base />
<set-header name="X-Sustainability-CarbonEmission" exists-action="override">
<value>@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity.ToString())</value>
</set-header>
</outbound>
[...]
</policies>
Ejemplo: Ajustar el nivel de detalle del seguimiento en función de la intensidad del carbono
En el ejemplo siguiente se muestra cómo usar la información de intensidad de carbono actual para ajustar la cantidad de información propagada en un seguimiento personalizado.
<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>
Disponibilidad de regiones
En la tabla siguiente se indica lo siguiente:
- Regiones en las que las instancias de los niveles clásicos de API Management (Desarrollador, Básico, Estándar y Premium) admiten características de sostenibilidad (después de registrarse para obtener una versión preliminar)
- Regiones en las que está disponible información sobre la intensidad de las emisiones de carbono, por ejemplo, para crear infraestructuras regionalizadas para redirigir el tráfico de datos.
| Región | Compatibilidad con API Management | Información de intensidad de carbono |
|---|---|---|
| Centro de Australia | ✅ | |
| Centro de Australia 2 | ✅ | |
| Australia East | ✅ | ✅ |
| Australia Southeast | ✅ | ✅ |
| Sur de Brasil | ✅ | ✅ |
| Sudeste de Brasil | ✅ | |
| Canada Central | ✅ | |
| Este de Canadá | ✅ | ✅ |
| Centro de la India | ✅ | ✅ |
| Central US | ✅ | ✅ |
| Centro de Chile | ✅ | |
| Este de Asia | ✅ | |
| East US | ✅ | ✅ |
| Este de EE. UU. 2 | ✅ | ✅ |
| Centro de Francia | ✅ | |
| Sur de Francia | ✅ | ✅ |
| Norte de Alemania | ✅ | |
| Centro-oeste de Alemania | ✅ | ✅ |
| Centro de Indonesia | ✅ | |
| Israel Central | ✅ | ✅ |
| Norte de Italia | ✅ | ✅ |
| Japón Oriental | ✅ | ✅ |
| Oeste de Japón | ✅ | ✅ |
| JIO de India central | ✅ | |
| Jio India Occidental | ✅ | ✅ |
| Centro de Corea del Sur | ✅ | |
| Corea del Sur | ✅ | |
| Sur de Malasia | ✅ | |
| Centro de México | ✅ | ✅ |
| Norte de Nueva Zelanda | ✅ | ✅ |
| Centro-norte de EE. UU. | ✅ | |
| Norte de Europa | ✅ | ✅ |
| Norway East | ✅ | ✅ |
| Oeste de Noruega | ✅ | |
| Centro de Polonia | ✅ | ✅ |
| Qatar Central | ✅ | ✅ |
| Norte de Sudáfrica | ✅ | ✅ |
| Oeste de Sudáfrica | ✅ | |
| Centro-sur de EE. UU. | ✅ | |
| South India | ✅ | ✅ |
| Sudeste Asiático | ✅ | |
| Centro de España | ✅ | ✅ |
| Centro de Suecia | ✅ | ✅ |
| Sur de Suecia | ✅ | |
| Norte de Suiza | ✅ | ✅ |
| Switzerland West | ✅ | ✅ |
| Norte de Taiwán | ✅ | ✅ |
| Noroeste de Taiwán | ✅ | |
| Oeste de Taiwán | ✅ | |
| Centro de Emiratos Árabes Unidos | ✅ | |
| Norte de Emiratos Árabes Unidos | ✅ | ✅ |
| UK South | ✅ | ✅ |
| UK West | ✅ | ✅ |
| Centro-oeste de EE. UU. | ✅ | ✅ |
| West Europe | ✅ | ✅ |
| West India | ✅ | |
| West US | ✅ | ✅ |
| Oeste de EE. UU. 2 | ✅ | ✅ |
| Oeste de EE. UU. 3 | ✅ | ✅ |
Categorías de intensidad de carbono
En la tabla siguiente se explican las categorías de intensidad de carbono usadas en las características de cambio de tráfico y modelado del tráfico. Los valores se encuentran en gramos de CO₂e por KWh para las emisiones de alcance 2.
| Categoría | g CO₂e |
|---|---|
| No disponible | N/A |
| Muy bajo | ≤ 150 |
| Low | 151-300 |
| Media | 301-500 |
| High | 501-700 |
| MuyAlto | > 700 |