

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用中繼資料端點
<a name="web-functions-configuration-metadata-endpoint"></a>

Lambda 中繼資料端點是執行環境中的本機 HTTP API。它以簡單的 JSON 格式傳回中繼資料，包括環境執行所在的可用區域 (AZ) ID。使用它來路由至相同可用區資源，例如 Amazon ElastiCache 和 Amazon RDS，以降低延遲。您也可以使用它來實作 AZ 感知彈性模式。

**注意**  
Web 函數會執行持久性 Web 伺服器，而不是每個呼叫處理常式。在應用程式啟動時讀取中繼資料端點一次並快取該值，或者如果您在請求內容中需要，則在每個請求中讀取。請勿擔任新的每次呼叫處理常式。對於多區域 Web 函數，端點會在提供請求 AWS 區域 的 內報告 AZ。

**Topics**
+ [開始使用](#web-functions-metadata-endpoint-getting-started)

## 開始使用
<a name="web-functions-metadata-endpoint-getting-started"></a>

Powertools for AWS Lambda 提供存取 Lambda 中繼資料端點的公用程式。公用程式會在第一次呼叫後快取回應。如需詳細資訊，請參閱 *Powertools for AWS Lambda (TypeScript)* 文件中的[中繼資料](https://docs.aws.amazon.com/powertools/typescript/latest/features/metadata/)。

由於 Web Functions 在 上執行Node.js，下列範例使用 Powertools for AWS Lambda 中繼資料公用程式，在伺服器啟動時讀取一次 AZ ID，並在程序的生命週期內快取它。執行下列 npm 命令來安裝 Powertools 套件和 Express：

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

下列範例使用 Express進行說明。相同的方法適用於任何 Node.js Web 架構；請參閱 [支援的 Web 架構](web-functions-runtimes.md#web-functions-runtimes-frameworks)。在啟動時讀取 AZ ID，並在處理請求時重複使用快取的值：

**Example 在啟動時以 Powertools 擷取 AZ ID (TypeScript)**  

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

const app = express();

// Read the AZ ID once at startup and cache it for the life of the server.
const { AvailabilityZoneID: azId } = await getMetadata();

// Lambda provides the address to bind in AWS_LAMBDA_HTTP_ENDPOINT ("host:port").
// The fallback applies only when running locally.
const [host, port] = (process.env.AWS_LAMBDA_HTTP_ENDPOINT || 'localhost:3000').split(':');

app.get('/', (req, res) => {
  res.json({ azId });
});

app.listen(port, host, () => {
  console.log(`Server listening on ${host}:${port}, AZ: ${azId}`);
});
```

您也可以直接呼叫中繼資料端點。Lambda 會在每個執行環境中自動設定 `AWS_LAMBDA_METADATA_API`和 `AWS_LAMBDA_METADATA_TOKEN` 環境變數，並在 `Authorization`標頭中包含具有承載方案的字符。如需端點 URL、請求和回應格式，以及錯誤回應，請參閱 [使用 Lambda 中繼資料端點](configuration-metadata-endpoint.md)。

例如，從 讀取中繼資料伺服器地址，`AWS_LAMBDA_METADATA_API`並傳送已驗證的 GET 請求：

```
METADATA_ENDPOINT="http://${AWS_LAMBDA_METADATA_API}/2026-01-15/metadata/execution-environment"
RESPONSE=$(curl -s -H "Authorization: Bearer ${AWS_LAMBDA_METADATA_TOKEN}" "$METADATA_ENDPOINT")
AZ_ID=$(echo "$RESPONSE" | jq -r '.AvailabilityZoneID')
```

端點會傳回 `application/json`。例如：`{"AvailabilityZoneID": "use1-az1"}`。