本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
运行和调试本地 Amazon API Gateway 资源
您可以通过使用 invokeTarget.target=api
运行 type=aws-sam
的 VS Code 启动配置,运行或调试 template.yaml
中指定的 AWS SAM API Gateway 本地资源。
注意
API Gateway 支持两种类型的 API:REST 和 HTTP。但是,带有 AWS Toolkit for Visual Studio Code 的 API Gateway 功能仅支持 REST API。有时候 HTTP API 被称为“API Gateway V2 API”。
运行和调试本地 API Gateway 资源
-
选择以下方法之一以创建 AWS SAM API Gateway 资源的启动配置:
-
选项 1:访问 AWS SAM 项目中的处理程序源代码(.js、.cs 或 .py 文件),将鼠标悬停在 Lambda 处理程序上,然后选择添加调试配置 CodeLens。然后,在菜单中,选择标记为 API 事件的项目。
-
选项 2:编辑
launch.json
并使用以下语法创建新的启动配置。{ "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} } }, "sam": {}, "aws": {} }
-
-
在 VS Code 运行面板中,选择启动配置(在上面的示例中名为
myConfig
)。 -
(可选)将断点添加到您的 Lambda 项目代码中。
-
在运行面板中,输入 F5 或选择播放。
-
在输出窗格中,查看结果。
配置
在使用 invokeTarget.target
属性值 api
时,Toolkit 会更改启动配置验证和行为,以支持 api
字段。
{ "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} }, "querystring": "abc=def&qrs=tuv", "headers": { "cookie": "name=value; name2=value2; name3=value3" } }, "sam": {}, "aws": {} }
按以下示例的方式替换值:
- invokeTarget.logicalId
-
API 资源。
- path
-
启动 Config 请求的 API 路径,如
"path": "/hello"
。必须是从
invokeTarget.templatePath
指定的template.yaml
解析出的有效 API 路径。 - httpMethod
-
以下任一动词:“delete”、“get”、“head”、“options”、“patch”、“post” 和“put”。
- payload
-
要在请求中发送的 JSON 负载(HTTP 正文),其结构和规则与 lambda.payload 字段相同。
payload.path
指向包含 JSON 负载的文件。payload.json
指定内联 JSON 负载。 - headers
-
可选名称-值对映射,用于指定要包含在请求中的 HTTP 标头,如以下示例中所示。
"headers": { "accept-encoding": "deflate, gzip;q=1.0, *;q=0.5", "accept-language": "fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5", "cookie": "name=value; name2=value2; name3=value3", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36", }
- querystring
-
可选字符串,设置请求的
querystring
,如"querystring": "abc=def&ghi=jkl"
。 - AWS
-
AWS 连接信息提供的方式。有关更多信息,请参阅 调试无服务器应用程序的配置选项 部分中的 AWS 连接(“aws”)属性表。
- sam
-
AWS SAM CLI 构建应用程序的方式。有关更多信息,请参阅 调试无服务器应用程序的配置选项 部分中的 AWS SAM CLI(“sam”)属性表。