Как добавить интернет-шлюз в VPC с помощью AWS CDK? - PullRequest
1 голос
/ 12 ноября 2019

Я пытаюсь создать правильные сценарии CDK (TypeScript) для создания среды с Lambda (доступ через API-шлюз), которая может вызывать RDS (экземпляр Sql Server).

Я полагаю, что он у меня естьв основном работает, но я хотел подключиться к экземпляру RDS со своего компьютера разработчика, чтобы выполнить несколько запросов и проверить несколько вещей.

Мой экземпляр RDS находится в частной подсети, и , поэтому я верю вДля того, чтобы подключиться к , мне нужно добавить Интернет-шлюз и группу безопасности, чтобы разрешить доступ к соответствующим портам.

За свою жизнь я могу выяснить последнюю часть, как добавить Интернетшлюз с использованием CDK.

Последний использованный мною сценарий выглядит следующим образом:

const privateSubnectConfiguration = {
  cidrMask: 26,
  name: 'private-subnet',
  subnetType: SubnetType.PRIVATE,
};

const publicSubnectConfiguration = {
  cidrMask: 26,
  name: 'public-subnet',
  subnetType: SubnetType.PUBLIC,
};

const vpc = new Vpc(this, props.generateId('vpc'), {
  maxAzs: 2,
  subnetConfiguration: [privateSubnectConfiguration, publicSubnectConfiguration],
  natGateways: 1,
});

vpc.addGatewayEndpoint(props.generateId('internet-gateway'), {
  service: { name: "ig-service" }
})

Что приводит к ошибкам с The Vpc Endpoint Service 'ig-service' does not exist (Service: AmazonEC2; Status Code: 400; Error Code: InvalidServiceName;

Я вижу ссылки на CfnInternetGateway в документах, но просто не можете понять, как прикрепить новый к моему VPC?

Не могли бы вы помочь с синтаксисом?

1 Ответ

1 голос
/ 12 ноября 2019

Прежде всего, вы не можете получить прямой доступ к базе данных в частной подсети. Вы должны развернуть экземпляр прокси в вашей общедоступной подсети и перенаправить необходимые порты для доступа к вашей базе данных.

При использовании конструкции CDK VPC интернет-шлюз создается по умолчанию при создании общедоступной подсети. Маршрут по умолчанию также настроен для публичной подсети. Поэтому вы должны удалить addGatewayEndpoint() из своего кода, который добавляет конечную точку VPC шлюза , которая вам не нужна.

Вы также можете рассмотреть возможность использования SubnetType.ISOLATED для создания частной подсети безNAT GW, который может быть избыточным в вашем случае. SubnetType.PRIVATE по умолчанию создает NAT-шлюз.

...