CloudFormation: создание конечной точки VPC в VPC, в котором работает лямбда - PullRequest
0 голосов
/ 21 октября 2019

У меня есть лямбда-функция, которая выполняется в VPC.

Мне нужно создать конечную точку в этом VPC с именем службы, которое у меня есть. Я уже создал один и проверил соединение с сервисом от лямбды, делая все через консоль. Но теперь мне нужно сделать это в CFT.

Я знаю, как создать конечную точку VPC, но не могу понять, как связать конечную точку с идентификатором VPC VPC, в котором работает лямбда.

Вот как я создал лямбду для запуска в VPC.

Type: AWS::Serverless::Function
Properties:
  Handler: 'handleRequest'
  Runtime: java8
  CodeUri:
    Bucket: {}
    Key: BATS::SAM::CodeS3Key
  Description: Lambda.
  Timeout: 20
  Role:
    Fn::GetAtt: [LambdaRole, Arn]
  VpcConfig:
    Fn::If:
    - RunLambdaInVPC
    - SecurityGroupIds: [{Ref: LambdaSecurityGroup}]
      SubnetIds:
      - {'Fn::ImportValue': PrivateSubnet01}
      - {'Fn::ImportValue': PrivateSubnet02}
    - {Ref: 'AWS::NoValue'}

Ниже представлена ​​конечная точка VPC, которую я создаю, но не вижу, как предоставить идентификатор VPC:

Type: AWS::EC2::VPCEndpoint
Properties:
  SecurityGroupIds: [{Ref: LambdaSecurityGroup}]
  ServiceName: 'ServiceName'
  SubnetIds:
    - {'Fn::ImportValue': PrivateSubnet01}
    - {'Fn::ImportValue': PrivateSubnet02}
  VpcId : <??>

1 Ответ

0 голосов
/ 22 октября 2019

Отвечая на ваш вопрос @JohnRotenstein ...

В документах AWS :: ECU :: Subnet я вижу, что подсети могут возвращать идентификатор VPC. Могу ли я просто использовать Fn :: GetAtt: [PrivateSubnet01, VpcId] в качестве значения?

Нет, вы не можете. Вы можете получить идентификатор VPC из подсети resource в шаблоне, который создал подсеть, но вы не в этом шаблоне и не имеете ресурса подсети. У вас есть идентификатор подсети (это просто строка, такая как «subnet-1234abcd»).

Итак, измените исходный шаблон, который создал VPC (и выведите идентификаторы подсети), чтобы он также выводил VPCЯ БЫ. Затем импортируйте этот VPC ID в ваш новый шаблон.

...