

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo dell'endpoint di metadati Lambda
<a name="configuration-metadata-endpoint"></a>

L'endpoint di metadati Lambda consente alle tue funzioni di scoprire in quale zona di disponibilità (AZ) sono in esecuzione, consentendoti di ottimizzare la latenza indirizzando verso risorse Same-AZ come gli endpoint Amazon ElastiCache e Amazon RDS e di implementare modelli di resilienza compatibili con AZ.

L'endpoint restituisce i metadati in un semplice formato JSON tramite un'API HTTP localhost all'interno dell'ambiente di esecuzione ed è accessibile sia ai runtime che alle estensioni.

**Topics**
+ [

## Nozioni di base
](#metadata-endpoint-getting-started)
+ [

## Comprendere la zona di disponibilità IDs
](#metadata-endpoint-az-ids)
+ [

## Guida di riferimento alle API
](#metadata-endpoint-api-reference)

## Nozioni di base
<a name="metadata-endpoint-getting-started"></a>

[Powertools for AWS Lambda](https://docs.aws.amazon.com/powertools/) fornisce un'utilità per accedere all'endpoint dei metadati Lambda in Python, Java e.NET. TypeScript L'utilità memorizza nella cache la risposta dopo la prima chiamata e gestisce automaticamente l'invalidazione della cache. SnapStart 

Utilizza l'utilità per i metadati Powertools for AWS Lambda o chiama direttamente l'endpoint dei metadati

------
#### [ Python ]

Installa il pacchetto Powertools:

```
pip install "aws-lambda-powertools"
```

Usa l'utilità per i metadati nel tuo gestore:

**Example Recupero dell'ID AZ con Powertools (Python)**  

```
from aws_lambda_powertools.utilities.lambda_metadata import get_lambda_metadata

def handler(event, context):
    metadata = get_lambda_metadata()
    az_id = metadata.availability_zone_id  # e.g., "use1-az1"

    return {"az_id": az_id}
```

------
#### [ TypeScript ]

Installa il pacchetto Powertools:

```
npm install @aws-lambda-powertools/commons
```

Usa l'utilità per i metadati nel tuo gestore:

**Example Recupero dell'ID AZ con Powertools () TypeScript**  

```
import { getMetadata } from '@aws-lambda-powertools/commons/utils/metadata';

const metadata = await getMetadata();

export const handler = async () => {
  const { AvailabilityZoneID: azId } = metadata;
  return azId;
};
```

------
#### [ Java ]

Aggiungi la dipendenza Powertools al tuo: `pom.xml`

```
<dependencies>
    <dependency>
        <groupId>software.amazon.lambda</groupId>
        <artifactId>powertools-lambda-metadata</artifactId>
        <version>2.10.0</version>
    </dependency>
</dependencies>
```

Usa il client di metadati nel tuo gestore:

**Example Recupero dell'ID AZ con Powertools (Java)**  

```
import software.amazon.lambda.powertools.metadata.LambdaMetadata;
import software.amazon.lambda.powertools.metadata.LambdaMetadataClient;

public class App implements RequestHandler<Object, String> {

    @Override
    public String handleRequest(Object input, Context context) {
        LambdaMetadata metadata = LambdaMetadataClient.get();
        String azId = metadata.getAvailabilityZoneId(); // e.g., "use1-az1"

        return "{\"azId\": \"" + azId + "\"}";
    }
}
```

------
#### [ .NET ]

Installa il pacchetto Powertools:

```
dotnet add package AWS.Lambda.Powertools.Metadata
```

Usa la classe di metadati nel tuo gestore:

**Example Recupero dell'ID AZ con Powertools (.NET)**  

```
using AWS.Lambda.Powertools.Metadata;

public class Function
{
    public string Handler(object input, ILambdaContext context)
    {
        var azId = LambdaMetadata.AvailabilityZoneId;
        return $"Running in AZ: {azId}";
    }
}
```

------
#### [ All Runtimes ]

Tutti i runtime Lambda supportano l'endpoint dei metadati, inclusi i runtime personalizzati e le immagini dei contenitori. Usa l'esempio seguente per accedere all'API dei metadati direttamente dalla tua funzione utilizzando le variabili di ambiente che Lambda imposta automaticamente nell'ambiente di esecuzione.

**Example Accesso diretto all'endpoint dei metadati**  

```
# Variables are automatically set by Lambda
METADATA_ENDPOINT="http://${AWS_LAMBDA_METADATA_API}/2026-01-15/metadata/execution-environment"

# Make the request
RESPONSE=$(curl -s -H "Authorization: Bearer ${AWS_LAMBDA_METADATA_TOKEN}" "$METADATA_ENDPOINT")

# Parse the AZ ID
AZ_ID=$(echo "$RESPONSE" | jq -r '.AvailabilityZoneID')

echo "Function is running in AZ ID: $AZ_ID"
```

------

## Comprendere la zona di disponibilità IDs
<a name="metadata-endpoint-az-ids"></a>

AZ IDs (ad esempio,`use1-az1`) si riferisce sempre alla stessa posizione fisica in tutti gli AWS account, mentre i nomi AZ (ad esempio`us-east-1a`) possono essere mappati a infrastrutture fisiche diverse in ciascun AWS account in determinate regioni. Per ulteriori informazioni, consulta [AZ IDs per la coerenza tra account](https://docs.aws.amazon.com/global-infrastructure/latest/regions/az-ids.html).

**Conversione dell'ID AZ in un nome AZ:**

Per convertire un ID AZ in un nome AZ, utilizza l'API Amazon EC2 [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html). Per utilizzare questa API, aggiungi l'`ec2:DescribeAvailabilityZones`autorizzazione al ruolo di esecuzione della funzione.

## Guida di riferimento alle API
<a name="metadata-endpoint-api-reference"></a>

### Variabili di ambiente
<a name="metadata-endpoint-env-vars"></a>

Lambda imposta automaticamente le seguenti variabili di ambiente in ogni ambiente di esecuzione:
+ `AWS_LAMBDA_METADATA_API`— L'indirizzo del server di metadati nel formato `{ipv4_address}:{port}` (ad esempio,`169.254.100.1:9001`).
+ `AWS_LAMBDA_METADATA_TOKEN`— Un token di autenticazione unico per l'ambiente di esecuzione corrente. Lambda genera questo token automaticamente al momento dell'inizializzazione. Includilo in tutte le richieste API di metadati.

### Endpoint
<a name="metadata-endpoint-url"></a>

`GET http://${AWS_LAMBDA_METADATA_API}/2026-01-15/metadata/execution-environment`

### Richiesta
<a name="metadata-endpoint-request"></a>

**Intestazioni obbligatorie:**
+ `Authorization`— Il valore del token della variabile di `AWS_LAMBDA_METADATA_TOKEN` ambiente con lo schema Bearer:. `Bearer <token>` Questa autenticazione basata su token fornisce una difesa approfondita contro le vulnerabilità SSRF (Server-Side Request Forgery). Ogni ambiente di esecuzione riceve un token unico generato casualmente al momento dell'inizializzazione.

### Risposta
<a name="metadata-endpoint-response"></a>

**Stato:** `200 OK`

**Tipo di contenuto:** `application/json`

**Controllo della cache:** `private, max-age=43200, immutable`

La risposta è immutabile all'interno di un ambiente di esecuzione. I client devono memorizzare nella cache la risposta e rispettare il `Cache-Control` TTL. Per quanto riguarda SnapStart le funzioni, il TTL viene ridotto durante l'inizializzazione in modo che i client aggiornino i metadati dopo il ripristino quando l'ambiente di esecuzione può trovarsi in una AZ diversa. Se si utilizza Powertools, la memorizzazione nella cache e l'invalidazione vengono gestite automaticamente. SnapStart 

**Testo:**

```
{
  "AvailabilityZoneID": "use1-az1"
}
```

Il `AvailabilityZoneID` campo contiene l'identificatore univoco per la zona di disponibilità in cui è in esecuzione l'ambiente di esecuzione.

**Nota**  
Nei futuri aggiornamenti potrebbero essere aggiunti campi aggiuntivi alla risposta. I client devono ignorare i campi sconosciuti e non fallire se vengono visualizzati nuovi campi.

### Risposte agli errori
<a name="metadata-endpoint-errors"></a>
+ **401 Non autorizzato**: l'`Authorization`intestazione è mancante o contiene un token non valido. Verifica che stai superando il test. `Bearer ${AWS_LAMBDA_METADATA_TOKEN}`
+ **Metodo 405 non consentito**: il metodo di richiesta non `GET` lo è.
+ **500 Errore interno del server: errore** di elaborazione lato server.