API Gateway HTTP 和 WebSocket API 示例使用 Amazon CLI - Amazon Command Line Interface
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

API Gateway HTTP 和 WebSocket API 示例使用 Amazon CLI

以下代码示例向您展示了如何使用 API Gateway HTTP 和 API 来执行操作和 WebSocket 实现常见场景。 Amazon Command Line Interface

操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景和跨服务示例的上下文查看操作。

场景是展示如何通过在同一服务中调用多个函数来完成特定任务任务的代码示例。

每个示例都包含一个指向的链接 GitHub,您可以在其中找到有关如何在上下文中设置和运行代码的说明。

主题

操作

以下代码示例演示如何使用 create-api-mapping

Amazon CLI

为 API 创建 API 映射

以下create-api-mapping示例将 API 的test阶段映射到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 Gatewa y 中设置区域自定义域名

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考CreateApiMapping中的。

以下代码示例演示如何使用 create-api

Amazon CLI

创建 HTTP API

以下create-api示例使用快速创建创建了一个 HTTP API。您可以使用快速创建来创建具有 Amazon Lambda 或 HTTP 集成、默认包罗万象的路由以及配置为自动部署更改的默认阶段的 API。以下命令使用快速创建来创建与 Lambda 函数集成的 HTTP API。

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 API Gateway 开发者指南中的在 API Gateway 中开发 HTTP 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" }

有关更多信息,请参阅亚马逊 WebSocket API Gateway 开发者指南中的在 API Gateway 中创建 API

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考CreateApi中的。

以下代码示例演示如何使用 create-authorizer

Amazon CLI

为 HTTP API 创建 JWT 授权方

以下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 开发者指南中的使用 JWT 授权方控制 HTTP API 的访问权限

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考CreateAuthorizer中的。

以下代码示例演示如何使用 create-deployment

Amazon CLI

为 API 创建部署

以下create-deployment示例为 API 创建部署,并将该部署与 API 的dev阶段相关联。

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 的详细信息,请参阅Amazon CLI 命令参考CreateDeployment中的。

以下代码示例演示如何使用 create-domain-name

Amazon 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 Gatewa y 中设置区域自定义域名

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考CreateDomainName中的。

以下代码示例演示如何使用 create-integration

Amazon 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 WebSocket API Gateway 开发者指南中的在 API Gateway 中设置 API 集成请求

创建 HTTP API 集成

以下create-integration示例为 HTTP API 创建了 Amazon Lambda 集成。

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 API 配置集成

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考CreateIntegration中的。

以下代码示例演示如何使用 create-route

Amazon CLI

为 WebSocket 或 HTTP API 创建 $default 路由

以下create-route示例为 WebSocket 或 HTTP API 创建了一$default条路由。

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

输出:

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

有关更多信息,请参阅 Amazon WebSocket API Gateway 开发者指南中的使用 API 路由

为 HTTP API 创建路由

以下create-route示例创建了一个接受 POST 请求signup的名为的路由。

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

输出:

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

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的使用 HTTP API 的路由

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考CreateRoute中的。

以下代码示例演示如何使用 create-stage

Amazon CLI

创建舞台

以下create-stage示例为 API 创建了一个名为 dev 的阶段。

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 API 的阶段

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考CreateStage中的。

以下代码示例演示如何使用 create-vpc-link

Amazon CLI

为 HTTP API 创建 VPC 链接

以下create-vpc-link示例为 HTTP API 创建一个 VPC 链接。

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 API 的 VPC 链接

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考CreateVpcLink中的。

以下代码示例演示如何使用 delete-access-log-settings

Amazon CLI

禁用 API 的访问日志记录

以下delete-access-log-settings示例删除了 API $default 阶段的访问日志设置。要禁用某个阶段的访问日志记录,请删除其访问日志设置。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的为 HTTP API 配置日志记录

以下代码示例演示如何使用 delete-api-mapping

Amazon 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 Gatewa y 中设置区域自定义域名

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考DeleteApiMapping中的。

以下代码示例演示如何使用 delete-api

Amazon CLI

删除 API

以下delete-api示例删除了一个 API。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的使用 WebSocket HTTP API 和使用 API。

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考DeleteApi中的。

以下代码示例演示如何使用 delete-authorizer

Amazon CLI

删除授权者

以下delete-authorizer示例删除授权方。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的使用 JWT 授权方控制 HTTP API 的访问权限

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考DeleteAuthorizer中的。

以下代码示例演示如何使用 delete-cors-configuration

Amazon CLI

删除 HTTP API 的 CORS 配置

以下delete-cors-configuration示例通过删除 HTTP API 的 CORS 配置来禁用 HTTP API 的跨域资源共享。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的为 HTTP API 配置 CO RS。

以下代码示例演示如何使用 delete-deployment

Amazon CLI

删除部署

以下delete-deployment示例删除了 API 的部署。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的 API 部署

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考DeleteDeployment中的。

以下代码示例演示如何使用 delete-domain-name

Amazon CLI

删除自定义域名

以下delete-domain-name示例删除自定义域名。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的在 API Gatewa y 中设置区域自定义域名

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考DeleteDomainName中的。

以下代码示例演示如何使用 delete-integration

Amazon CLI

删除集成

以下delete-integration示例删除了 API 集成。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的配置 HTTP WebSocket API 的集成和设置 API 集成。

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考DeleteIntegration中的。

以下代码示例演示如何使用 delete-route-settings

Amazon CLI

删除路径设置

以下delete-route-settings示例删除指定路径的路径设置。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的使用 HTTP API 的路由

以下代码示例演示如何使用 delete-route

Amazon CLI

删除路线

以下delete-route示例删除了 API 路由。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的使用 HTTP API 的路由

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考DeleteRoute中的。

以下代码示例演示如何使用 delete-stage

Amazon CLI

删除舞台

以下delete-stage示例删除了 API 的test阶段。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的使用 HTTP API 的阶段

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考DeleteStage中的。

以下代码示例演示如何使用 delete-vpc-link

Amazon CLI

删除 HTTP API 的 VPC 链接

以下delete-vpc-link示例删除 VPC 链接。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的使用 HTTP API 的 VPC 链接

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考DeleteVpcLink中的。

以下代码示例演示如何使用 export-api

Amazon CLI

导出 HTTP API 的 OpenAPI 定义

以下export-api示例将名为的 API 阶段的 OpenAPI 3.0 定义导出prod到名为的 YAML 文件中。stage-definition.yaml默认情况下,导出的定义文件包含 API Gateway 扩展名。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gat eway 开发者指南中的从 API Gateway 导出 HTTP API

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考ExportApi中的。

以下代码示例演示如何使用 get-api-mapping

Amazon 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 Gatewa y 中设置区域自定义域名

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetApiMapping中的。

以下代码示例演示如何使用 get-api-mappings

Amazon 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 Gatewa y 中设置区域自定义域名

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetApiMappings中的。

以下代码示例演示如何使用 get-api

Amazon 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 的详细信息,请参阅Amazon CLI 命令参考GetApi中的。

以下代码示例演示如何使用 get-apis

Amazon CLI

检索 API 列表

以下get-apis示例列出了当前用户的所有 API。

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 API Gateway 开发者指南中的使用 WebSocket HTTP API 和使用 API。

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetApis中的。

以下代码示例演示如何使用 get-authorizer

Amazon 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 开发者指南中的使用 JWT 授权方控制 HTTP API 的访问权限

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetAuthorizer中的。

以下代码示例演示如何使用 get-authorizers

Amazon 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 开发者指南中的使用 JWT 授权方控制 HTTP API 的访问权限

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetAuthorizers中的。

以下代码示例演示如何使用 get-deployment

Amazon 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 的详细信息,请参阅Amazon CLI 命令参考GetDeployment中的。

以下代码示例演示如何使用 get-deployments

Amazon 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 的详细信息,请参阅Amazon CLI 命令参考GetDeployments中的。

以下代码示例演示如何使用 get-domain-name

Amazon 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 Gatewa y 中设置区域自定义域名

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetDomainName中的。

以下代码示例演示如何使用 get-domain-names

Amazon 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 Gatewa y 中设置区域自定义域名

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetDomainNames中的。

以下代码示例演示如何使用 get-integration

Amazon 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 开发者指南中的配置 HTTP WebSocket API 的集成和设置 API 集成。

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetIntegration中的。

以下代码示例演示如何使用 get-integrations

Amazon 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 开发者指南中的配置 HTTP WebSocket API 的集成和设置 API 集成。

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetIntegrations中的。

以下代码示例演示如何使用 get-route

Amazon 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 API 的路由

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetRoute中的。

以下代码示例演示如何使用 get-routes

Amazon 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 API 的路由

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetRoutes中的。

以下代码示例演示如何使用 get-stage

Amazon CLI

检索有关阶段的信息

以下get-stage示例显示了有关 API prod 阶段的信息。

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 API 的阶段

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetStage中的。

以下代码示例演示如何使用 get-stages

Amazon 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 API 的阶段

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetStages中的。

以下代码示例演示如何使用 get-tags

Amazon 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 的详细信息,请参阅Amazon CLI 命令参考GetTags中的。

以下代码示例演示如何使用 get-vpc-link

Amazon 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 API 的 VPC 链接

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetVpcLink中的。

以下代码示例演示如何使用 get-vpc-links

Amazon 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 API 的 VPC 链接

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考GetVpcLinks中的。

以下代码示例演示如何使用 import-api

Amazon CLI

导入 HTTP API

以下import-api示例使用名为的 OpenAPI 3.0 定义文件创建一个 HTTP API。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 的 OpenAPI 定义

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考ImportApi中的。

以下代码示例演示如何使用 reimport-api

Amazon CLI

重新导入 HTTP API

以下reimport-api示例将现有 HTTP API 更新为使用中指定的 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 的 OpenAPI 定义

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考ReimportApi中的。

以下代码示例演示如何使用 tag-resource

Amazon CLI

为资源添加标签

以下tag-resource示例向指定的 API 添加了一个密钥名称Department和值Accounting为的标签。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的为你的 API 网关资源添加标签

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考TagResource中的。

以下代码示例演示如何使用 untag-resource

Amazon CLI

要从资源中删除标签

以下untag-resource示例Owner从指定 API 中删除带有密钥名称Project的标签。

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

此命令不生成任何输出。

有关更多信息,请参阅 Amazon API Gateway 开发者指南中的为你的 API 网关资源添加标签

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考UntagResource中的。

以下代码示例演示如何使用 update-api-mapping

Amazon CLI

更新 API 映射

以下update-api-mapping示例更改了自定义域名的 API 映射。因此,使用指定 API 和阶段的自定义域名的基本 URL 变为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 Gatewa y 中设置区域自定义域名

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考UpdateApiMapping中的。

以下代码示例演示如何使用 update-api

Amazon CLI

为 HTTP API 启用 CORS

以下update-api示例更新了指定 API 的 CORS 配置以允许来自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 API Gateway 开发者指南中的为 HTTP API 配置 CO RS。

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考UpdateApi中的。

以下代码示例演示如何使用 update-authorizer

Amazon 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 开发者指南中的使用 JWT 授权方控制 HTTP API 的访问权限

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考UpdateAuthorizer中的。

以下代码示例演示如何使用 update-deployment

Amazon 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 API Gateway 开发者指南中的在 API Gateway 中开发 HTTP API

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考UpdateDeployment中的。

以下代码示例演示如何使用 update-domain-name

Amazon 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 Gatewa y 中设置区域自定义域名

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考UpdateDomainName中的。

以下代码示例演示如何使用 update-integration

Amazon CLI

更新 Lambda 集成

以下update-integration示例将现有的 Amazon 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 开发者指南中的配置 HTTP WebSocket API 的集成和设置 API 集成。

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考UpdateIntegration中的。

以下代码示例演示如何使用 update-route

Amazon 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 开发者指南中的使用 JWT 授权方控制 HTTP API 的访问权限

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考UpdateRoute中的。

以下代码示例演示如何使用 update-stage

Amazon 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 API Gateway 开发者指南中的保护您的 HTTP API

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考UpdateStage中的。

以下代码示例演示如何使用 update-vpc-link

Amazon 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 API 的 VPC 链接

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考UpdateVpcLink中的。