gpt4 book ai didi

amazon-web-services - 如何通过云开发套件 (CDK) 在 API Gateway 上为 "URL Query String Parameters"定义 "Integration Request"

转载 作者:行者123 更新时间:2023-12-03 07:34:42 25 4
gpt4 key购买 nike

我在查找有关如何通过云开发工具包 (CDK) 在 API 网关上为“集成请求”创建“URL 查询字符串参数”的示例时遇到问题。我找到的大多数示例都是针对 lambda(我不需要这个)而不是 REST(我需要这个),甚至这些示例也不涵盖集成请求。

我正在通过 aws-apigateway.SpecRestAPI 创建 API 定义。

const api = new apiGateway.SpecRestApi(this, 'my-api', {
apiDefinition: apiGateway.ApiDefinition.fromInline(openApiDefinition),

我什至不确定是否将集成与 API 绑定(bind)在一起。

如何将集成与 API 绑定(bind)以及如何像通过 GUI 一样映射集成请求?

我尝试导出手动配置的 API 网关,但它不包含有关在何处执行翻译的任何信息。

如果我需要添加更多信息,请告诉我,并提前致谢!

最佳答案

如果使用 ApiDefinition.fromInline,则请求映射将进入 OpenAPI 文件。请参阅https://docs.aws.amazon.com/apigateway/latest/developerguide/request-response-data-mappings.htmlhttps://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions-integration-requestParameters.html .

“requestParameters”位于 x-amazon-apigateway-integration 节点下。如果您不知道如何获取 OpenAPI 规范,请像平常一样创建 API 和集成,然后通过 https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-migrate-accounts-regions/ 导出文件。

此外,为了将集成映射到另一个 AWS 服务(在我的例子中是 SNS),我在实例化集成时没有指定 API 对象。下面是一个工作示例。

const api = new apiGateway.SpecRestApi(this, 'my-api', {
apiDefinition: apiGateway.ApiDefinition.fromInline(openApiDefinition)
)

const snsIntegration = new apiGateway.AwsIntegration(
api,
{
proxy: false,
service: "sns",
action: "PutItem",
}
);

此外,如果您遇到“指定的映射表达式参数无效”问题,请确保在方法请求和集成请求中都定义该参数。

OpenAPI 文件的 super 精简版本如下:

paths:
/v1/contact:
post:
parameters:
- name: "TopicArn"
in: "query"
required: true
schema:
type: "string"
x-amazon-apigateway-integration:
requestParameters : {
integration.request.querystring.TopicArn : "method.request.header.TopicArn",
integration.request.querystring.Message : "method.request.body",
}

关于amazon-web-services - 如何通过云开发套件 (CDK) 在 API Gateway 上为 "URL Query String Parameters"定义 "Integration Request",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65358874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com