

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

# 在 API Gateway 中使用 REST API 的階段變數
<a name="stage-variables"></a>

階段變數是鍵值對，您可以定義為與 REST API 部署階段相關聯的組態屬性。它們的作用如同環境變數，可用於 API 設定和對應範本。您可以使用 API Gateway 中的部署階段，管理每個 API 的多個發行階段，並使用階段變數設定 API 部署階段與不同的後端端點互動。

階段變數並非用於敏感資料，例如登入資料。若要將敏感資料傳遞至整合，請使用 AWS Lambda 授權方。您可以將敏感資料傳遞至 Lambda 授權方輸出中的整合。如需進一步了解，請參閱[來自 API Gateway Lambda 授權方的輸出](api-gateway-lambda-authorizer-output.md)。

## 階段變數的使用案例
<a name="use-cases"></a>

下列為您的階段變數的使用案例。

**指定不同的後端端點**  
您的 API 可將 `GET` 請求當做 HTTP 代理傳到後端 Web 主機。您可以使用階段變數，如此一來，當讓 API 呼叫者調用您的生產端點時，API Gateway 就會呼叫 `example.com`。然後，當 API 呼叫者調用 Beta 階段時，API Gateway 會呼叫不同的 Web 主機，例如 `beta.example.com`。同樣地，階段變數可用來指定您 API 中每個階段的不同 AWS Lambda 函數名稱。您無法使用階段變數來設定不同的整合端點，例如將 `GET` 請求指向一個階段中的 HTTP 代理整合，以及在另一個階段中的 Lambda 代理整合。  
將 Lambda 函數名稱指定為階段變數值時，您必須在 Lambda 函數中手動設定許可。當您在 API Gateway 主控台中指定 Lambda 函數時，將彈出 AWS CLI 命令來設定適當的許可。您也可以使用下列 AWS CLI 命令來執行此操作。  

```
aws lambda add-permission --function-name "arn:aws:lambda:{{us-east-2}}:{{123456789012}}:function:{{my-function}}" --source-arn "arn:aws:execute-api:{{us-east-2}}:{{123456789012}}:{{api_id}}/*/HTTP_METHOD/resource" --principal apigateway.amazonaws.com --statement-id apigateway-access --action lambda:InvokeFunction
```

**使用映射範本傳遞資訊**  
您可以存取映射範本中的階段變數，或將組態參數傳送到 AWS Lambda 或 HTTP 後端。例如，您可能希望在您 API 的多個階段中重複使用相同的 Lambda 函數，但此函數應該從不同的 Amazon DynamoDB 資料表讀取資料，視階段而定。在產生 Lambda 函數請求的對應範本中，您可以使用階段變數將資料表名稱傳送給 Lambda。

若要使用階段變數，請先設定階段變數，然後為其指派值。例如，要自訂 HTTP 整合端點時，先建立 `url` 階段變數，然後在 API 的整合請求中輸入階段變數值 **http://${stageVariables.url}**。此值會指示 API Gateway 在執行時間替換您的階段變數 `${}`，視您 API 執行的階段而定。如需詳細資訊，請參閱[在 API Gateway 設定 REST API 的階段變數](how-to-set-stage-variables-aws-console.md)。