Usando o boto em uma função lambda do AWS em um VPC

1

Eu tenho um lambda que acessa o EC2. Eu quero atribuí-lo a um VPC para fins de segurança, mas quando faço boto simplesmente pára de funcionar. Aqui está um exemplo mínimo:

ec2 = boto3.resource('ec2', region_name='eu-west-2')
instances = ec2.instances.filter(Filters=[
  {
    'Name': 'vpc-id',
    'Values': [vpc_id]
  }
])
for instance in instances:
  # function hangs here
  print(instance)

O papel do Lambda tem as permissões necessárias no ec2 e funciona bem fora do VPC. Quando coloco o lambda no VPC (em um grupo de segurança que permite todo o tráfego de saída), ele trava. O que preciso fazer?

    
por fredley 21.02.2018 / 23:12

1 resposta

1

O problema era que eu precisava ter um NAT na sub-rede na qual a função Lambda está sendo executada - um Gateway da Internet não é suficiente!

Suponho que isso ocorra porque o Lambda é executado apenas em particular e o Gateway da Internet, que permite tráfego de duas vias, não permitiria rotas de / para o Lambda.

Adicionar o Lambda a uma sub-rede privada com um NAT anexado resolveu este problema.

    
por 22.02.2018 / 11:59