本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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.. ) 和篩選表達式 (?( )。注意當您指定JSON路徑時,APIGateway 會以 100 KB 截斷要求主體,然後套用選取項目運算式。若要傳送大於 100 KB 的承載,請指定 |
環境變數 | $ 上下文。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"