python - 如何将路径参数转发到 VPC 链路端点?

我尝试了不同的方式将路径参数转发到 VPC 链接端点。

我试过代理集成。但是我得到了一个错误。

Sending request to http://endpoint.elb.region.amazonaws.com/communities/{id}/
Execution failed due to configuration error: Illegal character in path at index 91: http://endpoint.elb.region.amazonaws.com/communities/{id}/

然后我使用这个链接中的方法 Illegal character in path . 但它也没有用。

Invalid mapping expression specified: Validation Result: warnings : [], errors : [Invalid mapping expression parameter specified: method.request.path
.id] (Service: AmazonApiGateway; Status Code: 400; Error Code: BadRequestException; Request ID: f4d072f9-7617-4008-a78d-5fdf4c4e168d; Proxy: null)

我也尝试用 path-parameter-error 解决这个问题.

Invalid mapping expression specified: Validation Result: warnings : [], errors : [Invalid mapping expression specified: true] (Service: AmazonApiGate
way; Status Code: 400; Error Code: BadRequestException;

这是 CDK 示例代码。

community_endpoint = communities_endpoint.add_resource('{id}')

get_community_integration = aws_apigateway.Integration(
        type=aws_apigateway.IntegrationType.HTTP_PROXY,
        integration_http_method='GET',
        uri = 'http://'+ fargate_service.load_balancer.load_balancer_dns_name+ '/communities/{id}/',
        options  = aws_apigateway.IntegrationOptions(
               connection_type = aws_apigateway.ConnectionType.VPC_LINK,
               vpc_link= link,
               request_parameters = { "integration.request.path.id" : "method.request.path.id"}
        )
)

community_endpoint.add_method('GET',get_community_integration,
        authorizer=authorization
)

我尝试使用 request_parameters,但出现错误(指定的映射表达式无效)。也试过没有 request_parameters 所以我得到了一个错误(路径中的非法字符)。

It works fine without the path parameter in the URL.

那我该如何解决呢?

最佳答案

我理解错了,我需要在方法中添加request_parameters,我只在集成中添加了。

从这里得到提示 -> Hint

community_endpoint = communities_endpoint.add_resource('{id}')

get_community_integration = aws_apigateway.Integration(
        type=aws_apigateway.IntegrationType.HTTP_PROXY,
        integration_http_method='GET',
        uri = 'http://'+ fargate_service.load_balancer.load_balancer_dns_name+ '/communities/{id}/',
        options  = aws_apigateway.IntegrationOptions(
               connection_type = aws_apigateway.ConnectionType.VPC_LINK,
               vpc_link= link,
               request_parameters = { "integration.request.path.id" : "method.request.path.id"}
        )
)

community_endpoint.add_method('GET',get_community_integration,
        request_parameters={ 
            "method.request.path.id": True
        },
        authorizer=authorization
)

https://stackoverflow.com/questions/65264413/

相关文章:

macos - M1 MAC 的 opencv 问题 - OpenCV imshow 不起作用

ansible - 我怎样才能访问另一台服务器的ansible facts?

docker - 如何在 VSCode devcontainer 中使用 minikube?

c# - HttpClient : This instance has already starte

flutter - 有什么方法可以将查询参数插入 flutter web 中的命名路由?

python - 将前导零添加到日期和时间字符串中的小时数

reactjs - 如何强制更新功能组件?

typescript - 是否可以修改 TypeScript 中文字的推断类型?

php - 仅显示 MySQL 列值计数

docker - Docker 中 dotnet/aspnet :3. 1 的 list 条目中没有