HTTPAPIs在API閘道中建立 AWS 服務整合 - Amazon API Gateway

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

HTTPAPIs在API閘道中建立 AWS 服務整合

您可以通過使用一流的集成HTTPAPI與 AWS 服務集成。一流的集成將HTTPAPI路由連接到 AWS 服務API。當用戶端叫用由一流整合支援的路由時,APIGateway 會為您叫API用 AWS 服務。例如,您可以使用一流的整合將訊息傳送到 Amazon 簡單佇列服務佇列,或啟動 AWS Step Functions 狀態機器。如需支援的服務動作,請參閱整合子類型參照

映射請求參數

一級整合具有必要和選用的參數。您必須設定所有必要的參數,才能建立整合。您可以使用在執行階段動態評估的靜態值或映射參數。如需支援整合與參數的完整清單,請參閱整合子類型參照

下表說明支援的對應要求參數。

Type 範例 備註
標頭值 $ 請求. 頭。name 網域名稱需區分大小寫。API例如,閘道將多個標頭值與逗號結合在一起"header1": "value1,value2"
查詢字串值 $ 請求. 查詢字符串。name 查詢字串名稱區分大小寫。API例如,閘道會將多個值與逗號結合在一起"querystring1": "Value1,Value2"
路徑參數 $ 請求. 路徑。name 請求中的路徑參數值。例如,如果路由是/pets/{petId},則可以使用以下方式映射請求中的petId參數 $request.path.petId.
請求內文傳遞 $request.body API閘道會傳遞整個要求主體。
請求內文 $ 請求. 體。name JSON路徑運算式。不支援遞迴下降 ($request.body..name) 和篩選表達式 (?(expression))。
注意

當您指定JSON路徑時,APIGateway 會以 100 KB 截斷要求主體,然後套用選取項目運算式。若要傳送大於 100 KB 的承載,請指定 $request.body

環境變數 $ 上下文。variableName 支援的內容變數值。
階段變數 $stageVariables.variableName 階段變數的值。
靜態值 string 常數值。

建立一級整合

在建立第一流整合之前,您必須建立一個IAM角色,以授與 API Gateway 權限來叫用您要整合的 AWS 服務動作。如需進一步了解,請參閱為 AWS 服務建立角色

若要建立一流的整合,請選擇支援的 AWS 服務動作SQS-SendMessage,例如設定要求參數,並提供授與 API Gateway 權限以呼叫整合式 AWS 服務的角色API。根據整合子類型,需要不同的請求參數。如需進一步了解,請參閱整合子類型參照

下列 AWS CLI 命令會建立傳送 Amazon SQS 訊息的整合。

aws apigatewayv2 create-integration \ --api-id abcdef123 \ --integration-subtype SQS-SendMessage \ --integration-type AWS_PROXY \ --payload-format-version 1.0 \ --credentials-arn arn:aws:iam::123456789012:role/apigateway-sqs \ --request-parameters '{"QueueUrl": "$request.header.queueUrl", "MessageBody": "$request.body.message"}'

使用建立一流的整合 AWS CloudFormation

以下示例顯示了一個 AWS CloudFormation 代碼片段,該代碼段創建了與 Amazon 的一流集成的/{source}/{detailType}路由 EventBridge。

Source 參數會對應至 {source} 路徑參數、DetailType 對應至 {DetailType} 路徑參數,且 Detail 參數會對應至要求主體。

程式碼片段不會顯示事件匯流排或授與 API Gateway 權限以叫用PutEvents動作的IAM角色。

Route: Type: AWS::ApiGatewayV2::Route Properties: ApiId: !Ref HttpApi AuthorizationType: None RouteKey: 'POST /{source}/{detailType}' Target: !Join - / - - integrations - !Ref Integration Integration: Type: AWS::ApiGatewayV2::Integration Properties: ApiId: !Ref HttpApi IntegrationType: AWS_PROXY IntegrationSubtype: EventBridge-PutEvents CredentialsArn: !GetAtt EventBridgeRole.Arn RequestParameters: Source: $request.path.source DetailType: $request.path.detailType Detail: $request.body EventBusName: !GetAtt EventBus.Arn PayloadFormatVersion: "1.0"