如何在 SAM 中的 Apigateway 私有 API 的开放 API 规范中指定 vpcEndpointId



我有一个SAM模板文件,其中我将Api定义为AWS::Serverless::Api资源。 该 API 应该具有 EndpointConfiguration: PRIVATE 与 AWS::ApiGateway::RestApi 不同,AWS::Serverless::Api仅支持EndpointConfiguration的字符串值。

对于AWS::ApiGateway::RestApi:我可以添加 2 个属性类型: 私人终端节点 ID: []

但对于 AWS::Serverless::Api,我只有一个私有的字符串属性

当我搜索如何配置vpc端点ID时,我发现:

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions-endpoint-configuration.html

本文档指出,vpcEndpointIds应在开放 API 规范文档中的"x-amazon-apigateway-endpoint-configuration">下定义。

但我找不到任何关于如何在 AWS 文档和开放 API 文档中准确定义它的示例。

打开 api 文档说它应该在我尝试过的服务器对象下定义,但都没有奏效。

任何帮助将不胜感激

此选项适用于 CloudFormation,但 SAM 目前不支持在终端节点配置下定义 VPC 终端节点。

最近添加了关联 VPC 终端节点的此功能,因此我认为 SAM 尚未更新。它有一个功能请求,所以我希望它很快就会实现。

感谢您的回复苏拉杰。

我在SAM中找到了正确的方法。正如您提到的,它不能作为选项直接在 SAM 中使用。但是您可以在 api open api 定义文档中实现这一点,如下所示在服务器对象下:

servers:
- url: "https://apiname.execute-api.region.aws.com/{basePath}"
variables:
basePath:
default: "/stagename"
x-amazon-apigateway-endpoint-configuration:
vpcEndpointIds:
- !Ref vpcEndpointId

对于那些遇到相同问题的人,请记住,如果您使用的是 swagger 2.0 规范,那么该属性需要处于不同的级别。 在这里找到它 - https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions-endpoint-configuration.html

最新更新