3

J'essaie d'accéder à un flux de kinésis en dehors d'un VPC à partir d'une fonction lambda à l'intérieur d'un VPC. Actuellement, lorsque le code à écrire dans le flux de kinésis est exécuté, il se bloque puis expire. Lorsque je retire le lambda du VPC, le code pour écrire dans le flux fonctionne correctement. Mais j'ai besoin d'accéder à une ressource dans le VPC, puis d'écrire dans le flux. Quelqu'un sait comment réparer ceci?Accéder à une ressource AWS en dehors de VPC à l'intérieur de VPC - Serverless Framework

Voici ma fonction qui est dans la VPC

functions: 
    handleChanges: 
    handler: functions/handlers.handleChanges 
    timeout: 10 
    package: 
     include: 
     - functions/utils/** 
    events: 
     - http: 
      method: POST 
      path: "/" 
      integration: lambda 
    vpc: 
     securityGroupIds: 
     - ${file(./private.yml):variables.securityGroup} 
     subnetIds: 
     - ${file(./private.yml):variables.subnetID} 

Voici ma politique

iamRoleStatements: 
    - Effect: "Allow" 
    Action: 
     - "kinesis:PutRecord" 
     - "kinesis:GetRecords" 
     - "kinesis:GetShardIterator" 
     - "kinesis:DescribeStream" 
     - "kinesis:ListStreams" 
    Resource: 
     Fn::GetAtt: 
     - KinesisStream 
     - Arn 
    - Effect: "Allow" 
    Action: 
     - "cognito-idp:AdminGetUser" 
    Resource: "*" 
    - Effect: "Allow" 
    Action: 
     - "logs:CreateLogGroup" 
     - "logs:CreateLogStream" 
     - "logs:PutLogEvents" 
     - "ec2:CreateNetworkInterface" 
     - "ec2:DescribeNetworkInterfaces" 
     - "ec2:DeleteNetworkInterface" 
    Resource: "*" 

Et enfin voici mon flux Kinesis ressources

KinesisStream: 
    Type: AWS::Kinesis::Stream 
    Properties: 
    Name: ${self:provider.environment.STREAM_NAME} 
    ShardCount: 1 

Répondre

4

La seule solution est pour ajouter un NAT Gateway (ou NAT instance) à votre VPC afin que les ressources comme y notre fonction Lambda qui réside dans votre sous-réseau privé aura accès à des ressources en dehors du VPC.

+0

Ouais merci pour votre réponse. Je viens de finir de créer une passerelle NAT et cela semble fonctionner maintenant. Je suis tombé sur l'essentiel expliquant le processus: https://gist.github.com/reggi/dc5f2620b7b4f515e68e46255ac042a7 –

+0

Savez-vous s'il y a des risques de sécurité potentiels faisant cela? –

+3

@realseanp Les routeurs NAT VPC permettent uniquement les connexions initiées en interne, et non les connexions initiées de manière externe, de sorte que vos ressources internes ne sont pas exposées à l'aide de cette configuration. Il n'y a essentiellement aucun moyen de configurer une passerelle NAT avec une configuration intrinsèquement dangereuse. –