Я пытаюсь найти существующий VPC, получить все частные подсети (убедившись, что в каждой зоне доступности есть только частная подсеть). Создайте конечную точку VPC, а затем свяжите ее со шлюзом API во время создания шлюза API. Но получение приведенного ниже исключения при запуске кода.
vpce-00c8fd5068629a5ab не является допустимым идентификатором конечной точки VPC (служба: AmazonApiGateway; код состояния: 400; код ошибки: BadRequestException; идентификатор запроса: ab287404-3002-41e5-8d93-e5792577d262; Прокси: ноль)
Кроме того, я могу создать конечную точку VPC отдельно. Также можно создать простой шлюз API без привязки к конечной точке VPC.
Пожалуйста, дайте мне знать, в чем может быть проблема.
vpc_retrieved = aws_ec2.Vpc.from_lookup(self, id = "testvpcid",vpc_name = "somevalidvpcname")
subnet_list = []
for subnet in vpc.private_subnets:
subnet_list.append(subnet)
vpc_endpoint = aws_ec2.InterfaceVpcEndpoint(self,
id = "vpcendpoint",
vpc=vpc_retrieved,
service=aws_ec2.InterfaceVpcEndpointService(
name = "com.amazonaws.us-east-2.lambda",port=80),
subnets=aws_ec2.SubnetSelection(subnets=subnet_list)
)
vpc_endpoints = []
vpc_endpoints.append(vpc_endpoint)
vpc_endpoint_types = []
vpc_endpoint_types.append(aws_cdk.aws_apigateway.EndpointType.PRIVATE)
api_gateway = aws_cdk.aws_apigateway.RestApi(self,
id = "cdktestapi",
rest_api_name = "cdk-test-api",
endpoint_configuration=
aws_cdk.aws_apigateway.EndpointConfiguration(
types=vpc_endpoint_types,
vpc_endpoints=vpc_endpoints)
)
Проблема оказалась элементарной. Мне нужно было использовать правильную конечную точку службы шлюза API, которая называется «com.amazonaws.us-east-2.execute-api». Таким образом, создание конечной точки VPC указанным ниже способом устранило проблему:
vpc_endpoint = aws_ec2.InterfaceVpcEndpoint(self,
id = "vpcendpoint",
vpc=vpc_retrieved,
service=aws_ec2.InterfaceVpcEndpointService(
name = "com.amazonaws.us-east-2.execute-api",port=80),
subnets=aws_ec2.SubnetSelection(subnets=subnet_list)
)
К вашему сведению, вы можете использовать
aws_ec2.InterfaceVpcEndpointAwsService.APIGATEWAY
и вам не нужно жестко указывать правильное имя хоста.