API 使用 的閘道HTTP和 WebSocket API範例 AWS CLI - AWS Command Line Interface

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

API 使用 的閘道HTTP和 WebSocket API範例 AWS CLI

下列程式碼範例示範如何搭配 AWS Command Line Interface API Gateway 和 使用 來執行動作HTTP和實作常見案例 WebSocket API。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會示範如何呼叫個別服務函數,但您可以在其相關案例中查看內容中的動作。

每個範例都包含完整原始程式碼的連結,您可以在其中找到如何在內容中設定和執行程式碼的指示。

主題

動作

下列程式碼範例示範如何使用 create-api-mapping

AWS CLI

為 建立API映射 API

下列create-api-mapping範例會將 的test階段映射API至regional.example.com自訂網域名稱的/myApi路徑。

aws apigatewayv2 create-api-mapping \ --domain-name regional.example.com \ --api-mapping-key myApi \ --api-id a1b2c3d4 \ --stage test

輸出:

{ "ApiId": "a1b2c3d4", "ApiMappingId": "0qzs2sy7bh", "ApiMappingKey": "myApi" "Stage": "test" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的在API閘道中設定區域自訂網域名稱

  • 如需API詳細資訊,請參閱 命令參考 CreateApiMapping中的 。 AWS CLI

下列程式碼範例示範如何使用 create-api

AWS CLI

若要建立 HTTP API

下列create-api範例使用快速建立HTTPAPI來建立 。您可以使用快速建立來建立API具有 AWS Lambda 或HTTP整合、預設全擷取路由,以及設定為自動部署變更的預設階段的 。下列命令使用快速建立來建立與 Lambda 函數HTTPAPI整合的 。

aws apigatewayv2 create-api \ --name my-http-api \ --protocol-type HTTP \ --target arn:aws:lambda:us-west-2:123456789012:function:my-lambda-function

輸出:

{ "ApiEndpoint": "https://a1b2c3d4.execute-api.us-west-2.amazonaws.com", "ApiId": "a1b2c3d4", "ApiKeySelectionExpression": "$request.header.x-api-key", "CreatedDate": "2020-04-08T19:05:45+00:00", "Name": "my-http-api", "ProtocolType": "HTTP", "RouteSelectionExpression": "$request.method $request.path" }

如需詳細資訊,請參閱 Amazon Gateway 開發人員指南 中的HTTPAPI在API閘道中開發 API

若要建立 WebSocket API

下列create-api範例會建立具有指定名稱的 WebSocket API。

aws apigatewayv2 create-api \ --name "myWebSocketApi" \ --protocol-type WEBSOCKET \ --route-selection-expression '$request.body.action'

輸出:

{ "ApiKeySelectionExpression": "$request.header.x-api-key", "Name": "myWebSocketApi", "CreatedDate": "2018-11-15T06:23:51Z", "ProtocolType": "WEBSOCKET", "RouteSelectionExpression": "'$request.body.action'", "ApiId": "aabbccddee" }

如需詳細資訊,請參閱 Amazon Gateway WebSocket API開發人員指南 中的在API閘道中建立 API

  • 如需API詳細資訊,請參閱 命令參考 CreateApi中的 。 AWS CLI

下列程式碼範例示範如何使用 create-authorizer

AWS CLI

為 建立JWT授權方 HTTP API

下列create-authorizer範例會建立使用 Amazon Cognito 作為身分提供者的JWT授權方。

aws apigatewayv2 create-authorizer \ --name my-jwt-authorizer \ --api-id a1b2c3d4 \ --authorizer-type JWT \ --identity-source '$request.header.Authorization' \ --jwt-configuration Audience=123456abc,Issuer=https://cognito-idp.us-west-2.amazonaws.com/us-west-2_abc123

輸出:

{ "AuthorizerId": "a1b2c3", "AuthorizerType": "JWT", "IdentitySource": [ "$request.header.Authorization" ], "JwtConfiguration": { "Audience": [ "123456abc" ], "Issuer": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_abc123" }, "Name": "my-jwt-authorizer" }

如需詳細資訊,請參閱Amazon API Gateway 開發人員指南中的HTTPAPIs使用JWT授權方控制對 的存取

  • 如需API詳細資訊,請參閱 命令參考 CreateAuthorizer中的 。 AWS CLI

下列程式碼範例示範如何使用 create-deployment

AWS CLI

若要為 建立部署 API

下列create-deployment範例會為 建立部署,API並將該部署與 dev階段建立關聯API。

aws apigatewayv2 create-deployment \ --api-id a1b2c3d4 \ --stage-name dev

輸出:

{ "AutoDeployed": false, "CreatedDate": "2020-04-06T23:38:08Z", "DeploymentId": "53lz9l", "DeploymentStatus": "DEPLOYED" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的API部署

  • 如需API詳細資訊,請參閱 命令參考 CreateDeployment中的 。 AWS CLI

下列程式碼範例示範如何使用 create-domain-name

AWS CLI

若要建立自訂網域名稱

下列create-domain-name範例會為 建立區域自訂網域名稱API。

aws apigatewayv2 create-domain-name \ --domain-name regional.example.com \ --domain-name-configurations CertificateArn=arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678

輸出:

{ "ApiMappingSelectionExpression": "$request.basepath", "DomainName": "regional.example.com", "DomainNameConfigurations": [ { "ApiGatewayDomainName": "d-id.execute-api.us-west-2.amazonaws.com", "CertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678", "EndpointType": "REGIONAL", "HostedZoneId": "123456789111", "SecurityPolicy": "TLS_1_2", "DomainNameStatus": "AVAILABLE" } ] }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的在API閘道中設定區域自訂網域名稱

  • 如需API詳細資訊,請參閱 命令參考 CreateDomainName中的 。 AWS CLI

下列程式碼範例示範如何使用 create-integration

AWS CLI

建立 WebSocket API整合

下列create-integration範例會為 建立模擬整合 WebSocket API。

aws apigatewayv2 create-integration \ --api-id aabbccddee \ --passthrough-behavior WHEN_NO_MATCH \ --timeout-in-millis 29000 \ --connection-type INTERNET \ --integration-type MOCK

輸出:

{ "ConnectionType": "INTERNET", "IntegrationId": "0abcdef", "IntegrationResponseSelectionExpression": "${integration.response.statuscode}", "IntegrationType": "MOCK", "PassthroughBehavior": "WHEN_NO_MATCH", "PayloadFormatVersion": "1.0", "TimeoutInMillis": 29000 }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的在API閘道中設定 WebSocket API整合請求

建立HTTPAPI整合

下列create-integration範例會為 建立 AWS Lambda HTTP 整合API。

aws apigatewayv2 create-integration \ --api-id a1b2c3d4 \ --integration-type AWS_PROXY \ --integration-uri arn:aws:lambda:us-west-2:123456789012:function:my-function \ --payload-format-version 2.0

輸出:

{ "ConnectionType": "INTERNET", "IntegrationId": "0abcdef", "IntegrationMethod": "POST", "IntegrationType": "AWS_PROXY", "IntegrationUri": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "PayloadFormatVersion": "2.0", "TimeoutInMillis": 30000 }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP 中的設定 的整合APIs

下列程式碼範例示範如何使用 create-route

AWS CLI

若要為 WebSocket 或 建立 $ 預設路由 HTTP API

下列create-route範例會為 WebSocket 或 HTTP 建立$default路由API。

aws apigatewayv2 create-route \ --api-id aabbccddee \ --route-key '$default'

輸出:

{ "ApiKeyRequired": false, "AuthorizationType": "NONE", "RouteKey": "$default", "RouteId": "1122334" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南中的使用 的路由 WebSocket APIs

為 建立路由 HTTP API

下列create-route範例會建立名為 signup的路由,以接受POST請求。

aws apigatewayv2 create-route \ --api-id aabbccddee \ --route-key 'POST /signup'

輸出:

{ "ApiKeyRequired": false, "AuthorizationType": "NONE", "RouteKey": "POST /signup", "RouteId": "1122334" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南HTTP中的使用 的路由 APIs

  • 如需API詳細資訊,請參閱 命令參考 CreateRoute中的 。 AWS CLI

下列程式碼範例示範如何使用 create-stage

AWS CLI

建立階段

下列create-stage範例會為 建立名為 dev 的階段API。

aws apigatewayv2 create-stage \ --api-id a1b2c3d4 \ --stage-name dev

輸出:

{ "CreatedDate": "2020-04-06T23:23:46Z", "DefaultRouteSettings": { "DetailedMetricsEnabled": false }, "LastUpdatedDate": "2020-04-06T23:23:46Z", "RouteSettings": {}, "StageName": "dev", "StageVariables": {}, "Tags": {} }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP 中的使用 階段APIs

  • 如需API詳細資訊,請參閱 命令參考 CreateStage中的 。 AWS CLI

下列程式碼範例示範如何使用 create-vpc-link

AWS CLI

若要為 建立VPC連結 HTTP API

下列create-vpc-link範例會為 HTTP 建立VPC連結APIs。

aws apigatewayv2 create-vpc-link \ --name MyVpcLink \ --subnet-ids subnet-aaaa subnet-bbbb \ --security-group-ids sg1234 sg5678

輸出:

{ "CreatedDate": "2020-04-07T00:11:46Z", "Name": "MyVpcLink", "SecurityGroupIds": [ "sg1234", "sg5678" ], "SubnetIds": [ "subnet-aaaa", "subnet-bbbb" ], "Tags": {}, "VpcLinkId": "abcd123", "VpcLinkStatus": "PENDING", "VpcLinkStatusMessage": "VPC link is provisioning ENIs", "VpcLinkVersion": "V2" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP中的使用 VPC的連結APIs

  • 如需API詳細資訊,請參閱 命令參考 CreateVpcLink中的 。 AWS CLI

下列程式碼範例示範如何使用 delete-access-log-settings

AWS CLI

停用 的存取記錄 API

下列delete-access-log-settings範例會刪除 $default階段的存取日誌設定API。若要停用階段的存取日誌,請刪除其存取日誌設定。

aws apigatewayv2 delete-access-log-settings \ --api-id a1b2c3d4 \ --stage-name '$default'

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP 中的設定 的記錄API

下列程式碼範例示範如何使用 delete-api-mapping

AWS CLI

刪除API映射

下列delete-api-mapping範例會刪除api.example.com自訂網域名稱的API映射。

aws apigatewayv2 delete-api-mapping \ --api-mapping-id a1b2c3 \ --domain-name api.example.com

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的在API閘道中設定區域自訂網域名稱

  • 如需API詳細資訊,請參閱 命令參考 DeleteApiMapping中的 。 AWS CLI

下列程式碼範例示範如何使用 delete-api

AWS CLI

若要刪除 API

下列delete-api範例會刪除 API。

aws apigatewayv2 delete-api \ --api-id a1b2c3d4

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon Gateway 開發人員指南 中的使用 HTTPAPIs使用 WebSocket APIs API

  • 如需API詳細資訊,請參閱 命令參考 DeleteApi中的 。 AWS CLI

下列程式碼範例示範如何使用 delete-authorizer

AWS CLI

若要刪除授權方

下列delete-authorizer範例會刪除授權方。

aws apigatewayv2 delete-authorizer \ --api-id a1b2c3d4 \ --authorizer-id a1b2c3

此命令不會產生輸出。

如需詳細資訊,請參閱Amazon API Gateway 開發人員指南中的HTTPAPIs使用JWT授權方控制對 的存取

  • 如需API詳細資訊,請參閱 命令參考 DeleteAuthorizer中的 。 AWS CLI

下列程式碼範例示範如何使用 delete-cors-configuration

AWS CLI

若要刪除 的CORS組態 HTTP API

下列delete-cors-configuration範例HTTPAPI會刪除CORS組態,以停用 CORS的 。

aws apigatewayv2 delete-cors-configuration \ --api-id a1b2c3d4

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon Gateway 開發人員指南 HTTP 中的CORS為 設定 API API

下列程式碼範例示範如何使用 delete-deployment

AWS CLI

若要刪除部署

下列delete-deployment範例會刪除 的部署API。

aws apigatewayv2 delete-deployment \ --api-id a1b2c3d4 \ --deployment-id a1b2c3

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的API部署

  • 如需API詳細資訊,請參閱 命令參考 DeleteDeployment中的 。 AWS CLI

下列程式碼範例示範如何使用 delete-domain-name

AWS CLI

若要刪除自訂網域名稱

下列delete-domain-name範例會刪除自訂網域名稱。

aws apigatewayv2 delete-domain-name \ --domain-name api.example.com

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的在API閘道中設定區域自訂網域名稱

  • 如需API詳細資訊,請參閱 命令參考 DeleteDomainName中的 。 AWS CLI

下列程式碼範例示範如何使用 delete-integration

AWS CLI

若要刪除整合

下列delete-integration範例會刪除API整合。

aws apigatewayv2 delete-integration \ --api-id a1b2c3d4 \ --integration-id a1b2c3

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的設定整合HTTPAPIs設定 WebSocket API整合

下列程式碼範例示範如何使用 delete-route-settings

AWS CLI

刪除路由設定

下列delete-route-settings範例會刪除指定路由的路由設定。

aws apigatewayv2 delete-route-settings \ --api-id a1b2c3d4 \ --stage-name dev \ --route-key 'GET /pets'

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP中的使用 的路由APIs

下列程式碼範例示範如何使用 delete-route

AWS CLI

刪除路由

下列delete-route範例會刪除API路由。

aws apigatewayv2 delete-route \ --api-id a1b2c3d4 \ --route-id a1b2c3

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP中的使用 的路由APIs

  • 如需API詳細資訊,請參閱 命令參考 DeleteRoute中的 。 AWS CLI

下列程式碼範例示範如何使用 delete-stage

AWS CLI

若要刪除階段

下列delete-stage範例會刪除 的test階段API。

aws apigatewayv2 delete-stage \ --api-id a1b2c3d4 \ --stage-name test

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP 中的使用 階段APIs

  • 如需API詳細資訊,請參閱 命令參考 DeleteStage中的 。 AWS CLI

下列程式碼範例示範如何使用 delete-vpc-link

AWS CLI

若要刪除 VPC的連結 HTTP API

下列delete-vpc-link範例會刪除VPC連結。

aws apigatewayv2 delete-vpc-link \ --vpc-link-id abcd123

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP中的使用 VPC的連結APIs

  • 如需API詳細資訊,請參閱 命令參考 DeleteVpcLink中的 。 AWS CLI

下列程式碼範例示範如何使用 export-api

AWS CLI

匯出 的 OpenAPI 定義 HTTP API

下列export-api範例會將名為 之API階段的 OpenAPI 3.0 定義匯出prod至名為 YAML的檔案stage-definition.yaml。根據預設,匯出的定義檔案包含API閘道擴充功能。

aws apigatewayv2 export-api \ --api-id a1b2c3d4 \ --output-type YAML \ --specification OAS30 \ --stage-name prod \ stage-definition.yaml

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的HTTPAPI從閘道匯出 API

  • 如需API詳細資訊,請參閱 命令參考 ExportApi中的 。 AWS CLI

下列程式碼範例示範如何使用 get-api-mapping

AWS CLI

取得自訂網域名稱API對應的相關資訊

下列get-api-mapping範例顯示api.example.com自訂網域名稱API對應的相關資訊。

aws apigatewayv2 get-api-mapping \ --api-mapping-id a1b2c3 \ --domain-name api.example.com

輸出:

{ "ApiId": "a1b2c3d4", "ApiMappingId": "a1b2c3d5", "ApiMappingKey": "myTestApi" "Stage": "test" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的在API閘道中設定區域自訂網域名稱

  • 如需API詳細資訊,請參閱 命令參考 GetApiMapping中的 。 AWS CLI

下列程式碼範例示範如何使用 get-api-mappings

AWS CLI

取得自訂網域名稱的API映射

下列get-api-mappings範例顯示api.example.com自訂網域名稱的所有API映射清單。

aws apigatewayv2 get-api-mappings \ --domain-name api.example.com

輸出:

{ "Items": [ { "ApiId": "a1b2c3d4", "ApiMappingId": "a1b2c3d5", "ApiMappingKey": "myTestApi" "Stage": "test" }, { "ApiId": "a5b6c7d8", "ApiMappingId": "a1b2c3d6", "ApiMappingKey": "myDevApi" "Stage": "dev" }, ] }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的在API閘道中設定區域自訂網域名稱

  • 如需API詳細資訊,請參閱 命令參考 GetApiMappings中的 。 AWS CLI

下列程式碼範例示範如何使用 get-api

AWS CLI

擷取有關 的資訊 API

下列get-api範例顯示 的相關資訊API。

aws apigatewayv2 get-api \ --api-id a1b2c3d4

輸出:

{ "ApiEndpoint": "https://a1b2c3d4.execute-api.us-west-2.amazonaws.com", "ApiId": "a1b2c3d4", "ApiKeySelectionExpression": "$request.header.x-api-key", "CreatedDate": "2020-03-28T00:32:37Z", "Name": "my-api", "ProtocolType": "HTTP", "RouteSelectionExpression": "$request.method $request.path", "Tags": { "department": "finance" } }
  • 如需API詳細資訊,請參閱 命令參考 GetApi中的 。 AWS CLI

下列程式碼範例示範如何使用 get-apis

AWS CLI

若要擷取 的清單 APIs

下列get-apis範例會列出APIs目前使用者的所有 。

aws apigatewayv2 get-apis

輸出:

{ "Items": [ { "ApiEndpoint": "wss://a1b2c3d4.execute-api.us-west-2.amazonaws.com", "ApiId": "a1b2c3d4", "ApiKeySelectionExpression": "$request.header.x-api-key", "CreatedDate": "2020-04-07T20:21:59Z", "Name": "my-websocket-api", "ProtocolType": "WEBSOCKET", "RouteSelectionExpression": "$request.body.message", "Tags": {} }, { "ApiEndpoint": "https://a1b2c3d5.execute-api.us-west-2.amazonaws.com", "ApiId": "a1b2c3d5", "ApiKeySelectionExpression": "$request.header.x-api-key", "CreatedDate": "2020-04-07T20:23:50Z", "Name": "my-http-api", "ProtocolType": "HTTP", "RouteSelectionExpression": "$request.method $request.path", "Tags": {} } ] }

如需詳細資訊,請參閱 Amazon Gateway 開發人員指南 中的使用 HTTPAPIs使用 WebSocket APIs API

  • 如需API詳細資訊,請參閱 命令參考 GetApis中的 。 AWS CLI

下列程式碼範例示範如何使用 get-authorizer

AWS CLI

擷取授權方的相關資訊

下列get-authorizer範例顯示授權方的相關資訊。

aws apigatewayv2 get-authorizer \ --api-id a1b2c3d4 \ --authorizer-id a1b2c3

輸出:

{ "AuthorizerId": "a1b2c3", "AuthorizerType": "JWT", "IdentitySource": [ "$request.header.Authorization" ], "JwtConfiguration": { "Audience": [ "123456abc" ], "Issuer": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_abc123" }, "Name": "my-jwt-authorizer" }

如需詳細資訊,請參閱Amazon API Gateway 開發人員指南中的HTTPAPIs使用JWT授權方控制對 的存取

  • 如需API詳細資訊,請參閱 命令參考 GetAuthorizer中的 。 AWS CLI

下列程式碼範例示範如何使用 get-authorizers

AWS CLI

擷取 的授權方清單 API

下列get-authorizers範例顯示 的所有授權方清單API。

aws apigatewayv2 get-authorizers \ --api-id a1b2c3d4

輸出:

{ "Items": [ { "AuthorizerId": "a1b2c3", "AuthorizerType": "JWT", "IdentitySource": [ "$request.header.Authorization" ], "JwtConfiguration": { "Audience": [ "123456abc" ], "Issuer": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_abc123" }, "Name": "my-jwt-authorizer" }, { "AuthorizerId": "a1b2c4", "AuthorizerType": "JWT", "IdentitySource": [ "$request.header.Authorization" ], "JwtConfiguration": { "Audience": [ "6789abcde" ], "Issuer": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_abc234" }, "Name": "new-jwt-authorizer" } ] }

如需詳細資訊,請參閱Amazon API Gateway 開發人員指南中的HTTPAPIs使用JWT授權方控制對 的存取

  • 如需API詳細資訊,請參閱 命令參考 GetAuthorizers中的 。 AWS CLI

下列程式碼範例示範如何使用 get-deployment

AWS CLI

擷取部署的相關資訊

下列get-deployment範例顯示部署的相關資訊。

aws apigatewayv2 get-deployment \ --api-id a1b2c3d4 \ --deployment-id abcdef

輸出:

{ "AutoDeployed": true, "CreatedDate": "2020-04-07T23:58:40Z", "DeploymentId": "abcdef", "DeploymentStatus": "DEPLOYED", "Description": "Automatic deployment triggered by changes to the Api configuration" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的API部署

  • 如需API詳細資訊,請參閱 命令參考 GetDeployment中的 。 AWS CLI

下列程式碼範例示範如何使用 get-deployments

AWS CLI

擷取部署清單

下列get-deployments範例顯示 所有部署API的清單。

aws apigatewayv2 get-deployments \ --api-id a1b2c3d4

輸出:

{ "Items": [ { "AutoDeployed": true, "CreatedDate": "2020-04-07T23:58:40Z", "DeploymentId": "abcdef", "DeploymentStatus": "DEPLOYED", "Description": "Automatic deployment triggered by changes to the Api configuration" }, { "AutoDeployed": true, "CreatedDate": "2020-04-06T00:33:00Z", "DeploymentId": "bcdefg", "DeploymentStatus": "DEPLOYED", "Description": "Automatic deployment triggered by changes to the Api configuration" } ] }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的API部署

  • 如需API詳細資訊,請參閱 命令參考 GetDeployments中的 。 AWS CLI

下列程式碼範例示範如何使用 get-domain-name

AWS CLI

擷取自訂網域名稱的相關資訊

下列get-domain-name範例顯示自訂網域名稱的相關資訊。

aws apigatewayv2 get-domain-name \ --domain-name api.example.com

輸出:

{ "ApiMappingSelectionExpression": "$request.basepath", "DomainName": "api.example.com", "DomainNameConfigurations": [ { "ApiGatewayDomainName": "d-1234.execute-api.us-west-2.amazonaws.com", "CertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678", "EndpointType": "REGIONAL", "HostedZoneId": "123456789111", "SecurityPolicy": "TLS_1_2", "DomainNameStatus": "AVAILABLE" } ], "Tags": {} }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的在API閘道中設定區域自訂網域名稱

  • 如需API詳細資訊,請參閱 命令參考 GetDomainName中的 。 AWS CLI

下列程式碼範例示範如何使用 get-domain-names

AWS CLI

擷取自訂網域名稱清單

下列get-domain-names範例顯示目前使用者的所有自訂網域名稱清單。

aws apigatewayv2 get-domain-names

輸出:

{ "Items": [ { "ApiMappingSelectionExpression": "$request.basepath", "DomainName": "api.example.com", "DomainNameConfigurations": [ { "ApiGatewayDomainName": "d-1234.execute-api.us-west-2.amazonaws.com", "CertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678", "EndpointType": "REGIONAL", "HostedZoneId": "123456789111", "SecurityPolicy": "TLS_1_2", "DomainNameStatus": "AVAILABLE" } ] }, { "ApiMappingSelectionExpression": "$request.basepath", "DomainName": "newApi.example.com", "DomainNameConfigurations": [ { "ApiGatewayDomainName": "d-5678.execute-api.us-west-2.amazonaws.com", "CertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678", "EndpointType": "REGIONAL", "HostedZoneId": "123456789222", "SecurityPolicy": "TLS_1_2", "DomainNameStatus": "AVAILABLE" } ] } ] }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的在API閘道中設定區域自訂網域名稱

  • 如需API詳細資訊,請參閱 命令參考 GetDomainNames中的 。 AWS CLI

下列程式碼範例示範如何使用 get-integration

AWS CLI

擷取整合的相關資訊

下列get-integration範例顯示整合的相關資訊。

aws apigatewayv2 get-integration \ --api-id a1b2c3d4 \ --integration-id a1b2c3

輸出:

{ "ApiGatewayManaged": true, "ConnectionType": "INTERNET", "IntegrationId": "a1b2c3", "IntegrationMethod": "POST", "IntegrationType": "AWS_PROXY", "IntegrationUri": "arn:aws:lambda:us-west-2:12356789012:function:hello12", "PayloadFormatVersion": "2.0", "TimeoutInMillis": 30000 }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的設定整合HTTPAPIs設定 WebSocket API整合

  • 如需API詳細資訊,請參閱 命令參考 GetIntegration中的 。 AWS CLI

下列程式碼範例示範如何使用 get-integrations

AWS CLI

擷取整合清單

下列get-integrations範例顯示 整合的所有清單API。

aws apigatewayv2 get-integrations \ --api-id a1b2c3d4

輸出:

{ "Items": [ { "ApiGatewayManaged": true, "ConnectionType": "INTERNET", "IntegrationId": "a1b2c3", "IntegrationMethod": "POST", "IntegrationType": "AWS_PROXY", "IntegrationUri": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "PayloadFormatVersion": "2.0", "TimeoutInMillis": 30000 }, { "ConnectionType": "INTERNET", "IntegrationId": "a1b2c4", "IntegrationMethod": "ANY", "IntegrationType": "HTTP_PROXY", "IntegrationUri": "https://www.example.com", "PayloadFormatVersion": "1.0", "TimeoutInMillis": 30000 } ] }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的設定整合HTTPAPIs設定 WebSocket API整合

  • 如需API詳細資訊,請參閱 命令參考 GetIntegrations中的 。 AWS CLI

下列程式碼範例示範如何使用 get-route

AWS CLI

擷取路由的相關資訊

下列get-route範例顯示路由的相關資訊。

aws apigatewayv2 get-route \ --api-id a1b2c3d4 \ --route-id 72jz1wk

輸出:

{ "ApiKeyRequired": false, "AuthorizationType": "NONE", "RouteId": "72jz1wk", "RouteKey": "ANY /pets", "Target": "integrations/a1b2c3" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南HTTP中的使用 的路由 APIs

  • 如需API詳細資訊,請參閱 命令參考 GetRoute中的 。 AWS CLI

下列程式碼範例示範如何使用 get-routes

AWS CLI

擷取路由清單

下列get-routes範例顯示 的所有API路由清單。

aws apigatewayv2 get-routes \ --api-id a1b2c3d4

輸出:

{ "Items": [ { "ApiKeyRequired": false, "AuthorizationType": "NONE", "RouteId": "72jz1wk", "RouteKey": "ANY /admin", "Target": "integrations/a1b2c3" }, { "ApiGatewayManaged": true, "ApiKeyRequired": false, "AuthorizationType": "NONE", "RouteId": "go65gqi", "RouteKey": "$default", "Target": "integrations/a1b2c4" } ] }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南HTTP中的使用 的路由 APIs

  • 如需API詳細資訊,請參閱 命令參考 GetRoutes中的 。 AWS CLI

下列程式碼範例示範如何使用 get-stage

AWS CLI

擷取階段的相關資訊

下列get-stage範例顯示 prod階段的相關資訊API。

aws apigatewayv2 get-stage \ --api-id a1b2c3d4 \ --stage-name prod

輸出:

{ "CreatedDate": "2020-04-08T00:36:05Z", "DefaultRouteSettings": { "DetailedMetricsEnabled": false }, "DeploymentId": "x1zwyv", "LastUpdatedDate": "2020-04-08T00:36:13Z", "RouteSettings": {}, "StageName": "prod", "StageVariables": { "function": "my-prod-function" }, "Tags": {} }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP中的使用 階段APIs

  • 如需API詳細資訊,請參閱 命令參考 GetStage中的 。 AWS CLI

下列程式碼範例示範如何使用 get-stages

AWS CLI

擷取階段清單

下列get-stages範例會列出 的所有API階段。

aws apigatewayv2 get-stages \ --api-id a1b2c3d4

輸出:

{ "Items": [ { "ApiGatewayManaged": true, "AutoDeploy": true, "CreatedDate": "2020-04-08T00:08:44Z", "DefaultRouteSettings": { "DetailedMetricsEnabled": false }, "DeploymentId": "dty748", "LastDeploymentStatusMessage": "Successfully deployed stage with deployment ID 'dty748'", "LastUpdatedDate": "2020-04-08T00:09:49Z", "RouteSettings": {}, "StageName": "$default", "StageVariables": {}, "Tags": {} }, { "AutoDeploy": true, "CreatedDate": "2020-04-08T00:35:06Z", "DefaultRouteSettings": { "DetailedMetricsEnabled": false }, "LastUpdatedDate": "2020-04-08T00:35:48Z", "RouteSettings": {}, "StageName": "dev", "StageVariables": { "function": "my-dev-function" }, "Tags": {} }, { "CreatedDate": "2020-04-08T00:36:05Z", "DefaultRouteSettings": { "DetailedMetricsEnabled": false }, "DeploymentId": "x1zwyv", "LastUpdatedDate": "2020-04-08T00:36:13Z", "RouteSettings": {}, "StageName": "prod", "StageVariables": { "function": "my-prod-function" }, "Tags": {} } ] }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP中的使用 階段APIs

  • 如需API詳細資訊,請參閱 命令參考 GetStages中的 。 AWS CLI

下列程式碼範例示範如何使用 get-tags

AWS CLI

擷取資源的標籤清單

下列get-tags範例會列出 的所有API標籤。

aws apigatewayv2 get-tags \ --resource-arn arn:aws:apigateway:us-west-2::/apis/a1b2c3d4

輸出:

{ "Tags": { "owner": "dev-team", "environment": "prod" } }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的標記閘道資源 API

  • 如需API詳細資訊,請參閱 命令參考 GetTags中的 。 AWS CLI

下列程式碼範例示範如何使用 get-vpc-link

AWS CLI

擷取VPC連結的相關資訊

下列get-vpc-link範例顯示VPC連結的相關資訊。

aws apigatewayv2 get-vpc-link \ --vpc-link-id abcd123

輸出:

{ "CreatedDate": "2020-04-07T00:27:47Z", "Name": "MyVpcLink", "SecurityGroupIds": [ "sg1234", "sg5678" ], "SubnetIds": [ "subnet-aaaa", "subnet-bbbb" ], "Tags": {}, "VpcLinkId": "abcd123", "VpcLinkStatus": "AVAILABLE", "VpcLinkStatusMessage": "VPC link is ready to route traffic", "VpcLinkVersion": "V2" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP 中的使用 VPC的連結APIs

  • 如需API詳細資訊,請參閱 命令參考 GetVpcLink中的 。 AWS CLI

下列程式碼範例示範如何使用 get-vpc-links

AWS CLI

擷取VPC連結清單

下列get-vpc-links範例顯示目前使用者的所有VPC連結清單。

aws apigatewayv2 get-vpc-links

輸出:

{ "Items": [ { "CreatedDate": "2020-04-07T00:27:47Z", "Name": "MyVpcLink", "SecurityGroupIds": [ "sg1234", "sg5678" ], "SubnetIds": [ "subnet-aaaa", "subnet-bbbb" ], "Tags": {}, "VpcLinkId": "abcd123", "VpcLinkStatus": "AVAILABLE", "VpcLinkStatusMessage": "VPC link is ready to route traffic", "VpcLinkVersion": "V2" } { "CreatedDate": "2020-04-07T00:27:47Z", "Name": "MyOtherVpcLink", "SecurityGroupIds": [ "sg1234", "sg5678" ], "SubnetIds": [ "subnet-aaaa", "subnet-bbbb" ], "Tags": {}, "VpcLinkId": "abcd456", "VpcLinkStatus": "AVAILABLE", "VpcLinkStatusMessage": "VPC link is ready to route traffic", "VpcLinkVersion": "V2" } ] }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP中的使用 VPC的連結APIs

  • 如需API詳細資訊,請參閱 命令參考 GetVpcLinks中的 。 AWS CLI

下列程式碼範例示範如何使用 import-api

AWS CLI

若要匯入 HTTP API

下列import-api範例HTTPAPI會從名為 的 OpenAPI 3.0 定義檔案建立 api-definition.yaml

aws apigatewayv2 import-api \ --body file://api-definition.yaml

api-definition.yaml 的內容:

openapi: 3.0.1 info: title: My Lambda API version: v1.0 paths: /hello: x-amazon-apigateway-any-method: x-amazon-apigateway-integration: payloadFormatVersion: 2.0 type: aws_proxy httpMethod: POST uri: arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:hello/invocations connectionType: INTERNET

輸出:

{ "ApiEndpoint": "https://a1b2c3d4.execute-api.us-west-2.amazonaws.com", "ApiId": "a1b2c3d4", "ApiKeySelectionExpression": "$request.header.x-api-key", "CreatedDate": "2020-04-08T17:19:38+00:00", "Name": "My Lambda API", "ProtocolType": "HTTP", "RouteSelectionExpression": "$request.method $request.path", "Tags": {}, "Version": "v1.0" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP中的使用 的開放API定義APIs

  • 如需API詳細資訊,請參閱 命令參考 ImportApi中的 。 AWS CLI

下列程式碼範例示範如何使用 reimport-api

AWS CLI

若要重新匯入 HTTP API

下列reimport-api範例會更新現有的 HTTPAPI,以使用 中指定的 OpenAPI 3.0 定義api-definition.yaml

aws apigatewayv2 reimport-api \ --body file://api-definition.yaml \ --api-id a1b2c3d4

api-definition.yaml 的內容:

openapi: 3.0.1 info: title: My Lambda API version: v1.0 paths: /hello: x-amazon-apigateway-any-method: x-amazon-apigateway-integration: payloadFormatVersion: 2.0 type: aws_proxy httpMethod: POST uri: arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:12356789012:function:hello/invocations connectionType: INTERNET

輸出:

{ "ApiEndpoint": "https://a1b2c3d4.execute-api.us-west-2.amazonaws.com", "ApiId": "a1b2c3d4", "ApiKeySelectionExpression": "$request.header.x-api-key", "CreatedDate": "2020-04-08T17:19:38+00:00", "Name": "My Lambda API", "ProtocolType": "HTTP", "RouteSelectionExpression": "$request.method $request.path", "Tags": {}, "Version": "v1.0" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP中的使用 的開放API定義APIs

  • 如需API詳細資訊,請參閱 命令參考 ReimportApi中的 。 AWS CLI

下列程式碼範例示範如何使用 tag-resource

AWS CLI

標記資源

下列tag-resource範例會將具有金鑰名稱Department和 值Accounting的標籤新增至指定的 API。

aws apigatewayv2 tag-resource \ --resource-arn arn:aws:apigateway:us-west-2::/apis/a1b2c3d4 \ --tags Department=Accounting

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的標記閘道資源 API

  • 如需API詳細資訊,請參閱 命令參考 TagResource中的 。 AWS CLI

下列程式碼範例示範如何使用 untag-resource

AWS CLI

從資源中移除標籤

下列untag-resource範例Owner會從指定的 移除具有金鑰名稱 Project和 的標籤API。

aws apigatewayv2 untag-resource \ --resource-arn arn:aws:apigateway:us-west-2::/apis/a1b2c3d4 \ --tag-keys Project Owner

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的標記閘道資源 API

  • 如需API詳細資訊,請參閱 命令參考 UntagResource中的 。 AWS CLI

下列程式碼範例示範如何使用 update-api-mapping

AWS CLI

更新API映射

下列update-api-mapping範例會變更自訂網域名稱的API映射。因此,URL使用指定 API和 階段自訂網域名稱的 基礎會變成 https://api.example.com/dev

aws apigatewayv2 update-api-mapping \ --api-id a1b2c3d4 \ --stage dev \ --domain-name api.example.com \ --api-mapping-id 0qzs2sy7bh \ --api-mapping-key dev

輸出:

{ "ApiId": "a1b2c3d4", "ApiMappingId": "0qzs2sy7bh", "ApiMappingKey": "dev" "Stage": "dev" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的在API閘道中設定區域自訂網域名稱

  • 如需API詳細資訊,請參閱 命令參考 UpdateApiMapping中的 。 AWS CLI

下列程式碼範例示範如何使用 update-api

AWS CLI

若要CORS為 啟用 HTTP API

下列update-api範例會更新指定的 APICORS組態,以允許來自 的請求https://www.example.com

aws apigatewayv2 update-api \ --api-id a1b2c3d4 \ --cors-configuration AllowOrigins=https://www.example.com

輸出:

{ "ApiEndpoint": "https://a1b2c3d4.execute-api.us-west-2.amazonaws.com", "ApiId": "a1b2c3d4", "ApiKeySelectionExpression": "$request.header.x-api-key", "CorsConfiguration": { "AllowCredentials": false, "AllowHeaders": [ "header1", "header2" ], "AllowMethods": [ "GET", "OPTIONS" ], "AllowOrigins": [ "https://www.example.com" ] }, "CreatedDate": "2020-04-08T18:39:37+00:00", "Name": "my-http-api", "ProtocolType": "HTTP", "RouteSelectionExpression": "$request.method $request.path", "Tags": {}, "Version": "v1.0" }

如需詳細資訊,請參閱 Amazon Gateway 開發人員指南 HTTP 中的CORS為 設定 API API

  • 如需API詳細資訊,請參閱 命令參考 UpdateApi中的 。 AWS CLI

下列程式碼範例示範如何使用 update-authorizer

AWS CLI

更新授權方

下列update-authorizer範例會將JWT授權方的身分來源變更為名為 的標頭Authorization

aws apigatewayv2 update-authorizer \ --api-id a1b2c3d4 \ --authorizer-id a1b2c3 \ --identity-source '$request.header.Authorization'

輸出:

{ "AuthorizerId": "a1b2c3", "AuthorizerType": "JWT", "IdentitySource": [ "$request.header.Authorization" ], "JwtConfiguration": { "Audience": [ "123456abc" ], "Issuer": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_abc123" }, "Name": "my-jwt-authorizer" }

如需詳細資訊,請參閱Amazon API Gateway 開發人員指南中的HTTPAPIs使用JWT授權方控制對 的存取

  • 如需API詳細資訊,請參閱 命令參考 UpdateAuthorizer中的 。 AWS CLI

下列程式碼範例示範如何使用 update-deployment

AWS CLI

若要變更部署的描述

下列update-deployment範例會更新部署的描述。

aws apigatewayv2 update-deployment \ --api-id a1b2c3d4 \ --deployment-id abcdef \ --description 'Manual deployment to fix integration test failures.'

輸出:

{ "AutoDeployed": false, "CreatedDate": "2020-02-05T16:21:48+00:00", "DeploymentId": "abcdef", "DeploymentStatus": "DEPLOYED", "Description": "Manual deployment to fix integration test failures." }

如需詳細資訊,請參閱 Amazon Gateway 開發人員指南 中的HTTPAPI在API閘道中開發 API

  • 如需API詳細資訊,請參閱 命令參考 UpdateDeployment中的 。 AWS CLI

下列程式碼範例示範如何使用 update-domain-name

AWS CLI

更新自訂網域名稱

下列update-domain-name範例會指定api.example.com自訂網域名稱的新ACM憑證。

aws apigatewayv2 update-domain-name \ --domain-name api.example.com \ --domain-name-configurations CertificateArn=arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678

輸出:

{ "ApiMappingSelectionExpression": "$request.basepath", "DomainName": "regional.example.com", "DomainNameConfigurations": [ { "ApiGatewayDomainName": "d-id.execute-api.us-west-2.amazonaws.com", "CertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678", "EndpointType": "REGIONAL", "HostedZoneId": "123456789111", "SecurityPolicy": "TLS_1_2", "DomainNameStatus": "AVAILABLE" } ] }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的在API閘道中設定區域自訂網域名稱

  • 如需API詳細資訊,請參閱 命令參考 UpdateDomainName中的 。 AWS CLI

下列程式碼範例示範如何使用 update-integration

AWS CLI

更新 Lambda 整合

下列update-integration範例會更新現有的 AWS Lambda 整合,以使用指定的 Lambda 函數。

aws apigatewayv2 update-integration \ --api-id a1b2c3d4 \ --integration-id a1b2c3 \ --integration-uri arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:my-new-function/invocations

輸出:

{ "ConnectionType": "INTERNET", "IntegrationId": "a1b2c3", "IntegrationMethod": "POST", "IntegrationType": "AWS_PROXY", "IntegrationUri": "arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:my-new-function/invocations", "PayloadFormatVersion": "2.0", "TimeoutInMillis": 5000 }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 中的設定整合HTTPAPIs設定 WebSocket API整合

下列程式碼範例示範如何使用 update-route

AWS CLI

範例 1:更新路由整合

下列update-route範例會更新指定路由的整合。

aws apigatewayv2 update-route \ --api-id a1b2c3d4 \ --route-id a1b2c3 \ --target integrations/a1b2c6

輸出:

{ "ApiKeyRequired": false, "AuthorizationType": "NONE", "RouteId": "a1b2c3", "RouteKey": "ANY /pets", "Target": "integrations/a1b2c6" }

範例 2:將授權方新增至路由

下列update-route範例會更新指定的路由以使用JWT授權方。

aws apigatewayv2 update-route \ --api-id a1b2c3d4 \ --route-id a1b2c3 \ --authorization-type JWT \ --authorizer-id a1b2c5 \ --authorization-scopes user.id user.email

輸出:

{ "ApiKeyRequired": false, "AuthorizationScopes": [ "user.id", "user.email" ], "AuthorizationType": "JWT", "AuthorizerId": "a1b2c5", "OperationName": "GET HTTP", "RequestParameters": {}, "RouteId": "a1b2c3", "RouteKey": "GET /pets", "Target": "integrations/a1b2c6" }

如需詳細資訊,請參閱Amazon API Gateway 開發人員指南中的HTTPAPIs使用JWT授權方控制對 的存取

  • 如需API詳細資訊,請參閱 命令參考 UpdateRoute中的 。 AWS CLI

下列程式碼範例示範如何使用 update-stage

AWS CLI

若要設定自訂限流

下列update-stage範例會設定 指定階段和路由的自訂限流API。

aws apigatewayv2 update-stage \ --api-id a1b2c3d4 \ --stage-name dev \ --route-settings '{"GET /pets":{"ThrottlingBurstLimit":100,"ThrottlingRateLimit":2000}}'

輸出:

{ "CreatedDate": "2020-04-05T16:21:16+00:00", "DefaultRouteSettings": { "DetailedMetricsEnabled": false }, "DeploymentId": "shktxb", "LastUpdatedDate": "2020-04-08T22:23:17+00:00", "RouteSettings": { "GET /pets": { "ThrottlingBurstLimit": 100, "ThrottlingRateLimit": 2000.0 } }, "StageName": "dev", "StageVariables": {}, "Tags": {} }

如需詳細資訊,請參閱 Amazon Gateway 開發人員指南 HTTP 中的保護 API API

  • 如需API詳細資訊,請參閱 命令參考 UpdateStage中的 。 AWS CLI

下列程式碼範例示範如何使用 update-vpc-link

AWS CLI

更新VPC連結

下列update-vpc-link範例會更新VPC連結的名稱。建立VPC連結後,您無法變更其安全群組或子網路。

aws apigatewayv2 update-vpc-link \ --vpc-link-id abcd123 \ --name MyUpdatedVpcLink

輸出:

{ "CreatedDate": "2020-04-07T00:27:47Z", "Name": "MyUpdatedVpcLink", "SecurityGroupIds": [ "sg1234", "sg5678" ], "SubnetIds": [ "subnet-aaaa", "subnet-bbbb" ], "Tags": {}, "VpcLinkId": "abcd123", "VpcLinkStatus": "AVAILABLE", "VpcLinkStatusMessage": "VPC link is ready to route traffic", "VpcLinkVersion": "V2" }

如需詳細資訊,請參閱 Amazon API Gateway 開發人員指南 HTTP中的使用 VPC的連結APIs

  • 如需API詳細資訊,請參閱 命令參考 UpdateVpcLink中的 。 AWS CLI