RESTAPI在API閘道中使用階段變數 - Amazon API Gateway

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

RESTAPI在API閘道中使用階段變數

階段變數是索引鍵值配對,您可以將其定義為與的部署階段相關聯的組態屬性。REST API它們的作用類似於環境變量,可用於API設置和映射模板。透過 API Gateway 中的部署階段,您可以為每個階段管理多個發行階段,API並使用階段變數,將API部署階段設定為與不同的後端端點互動。

階段變數並非用於敏感資料,例如登入資料。若要將敏感資料傳遞給整合,請使用 AWS Lambda 授權者。您可以將敏感資料傳遞至 Lambda 授權方輸出中的整合。如需進一步了解,請參閱來自API閘道 Lambda 授權者的輸出

階段變數的使用案例

以下是階段變數的使用案例。

指定不同的後端端點

您API可以將GET請求作為HTTP代理傳遞給後端 Web 主機。您可以使用階段變數,以便在呼叫API者叫用您的生產端點時,APIGateway 呼example.com叫。然後,當呼API叫者呼叫測試階段時,API閘道會呼叫不同的 Web 主機,例如beta.example.com. 同樣地,stage 變數也可用來為您的每個階段指定不同的 AWS Lambda 函數名稱API。您無法使用階段變數來設定不同的整合端點,例如將GET要求指向一個階段中的 HTTP Proxy 整合,以及將 Lambda Proxy 整合指向另一個階段。

將 Lambda 函數名稱指定為階段變數值時,您必須在 Lambda 函數中手動設定許可。當您在API閘道主控台中指定 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後端。例如,您可能想要在您的多個階段重複使用相同的 Lambda 函數API,但該函數應該根據階段從不同的 Amazon DynamoDB 表中讀取資料。在產生 Lambda 函數請求的對應範本中,您可以使用階段變數將資料表名稱傳送給 Lambda。

若要使用階段變數,請先設定階段變數,然後為其指派值。例如,若要自訂HTTP整合端點,請先建立 url stage 變數,然後在整合要求中輸入 stage 變數值http://${stageVariables.url}。API這個值會告訴 API Gateway ${} 在執行階段取代階段變數,視您API執行的階段而定。如需詳細資訊,請參閱 RESTAPIs在API閘道中設定階段變數