3

VPC 내부의 람다 함수에서 VPC 외부의 키네시스 스트림에 액세스하려고합니다. 현재 kinesis 스트림에 쓰는 코드가 실행될 때 멈추고 시간 초과됩니다. VPC에서 람다를 가져 와서 스트림에 쓰는 코드가 제대로 작동합니다. 하지만 VPC 내의 리소스에 액세스 한 다음 스트림에 쓸 필요가 있습니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까? 여기 VPC 외부에서 VPC 외부의 AWS 리소스에 액세스 - 서버리스 프레임 워크

가 여기 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} 

에 내 기능입니다 것은 드디어 내 정책

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: "*" 

되고하는 유일한 솔루션입니다

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

답변

4

내 운동성 스트림 자원이다 VPC에 NAT Gateway (또는 NAT instance)을 추가하여 y와 같은 리소스 개인 서브넷에있는 Lambda 함수는 VPC 외부의 리소스에 액세스 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 방금 NAT 게이트웨이를 만들었고 지금은 작동하는 것 같습니다. 나는이 요지를 우연히 발견했다 : https://gist.github.com/reggi/dc5f2620b7b4f515e68e46255ac042a7 –

+0

잠재적 인 보안 위험 요소가 있는지 알고 계십니까? –

+3

@realseanp VPC NAT 게이트웨이는 외부에서 시작된 연결이 아니라 내부에서 시작된 연결 만 허용하므로 내부 리소스가이 설정을 사용하여 노출되지 않습니다. 본질적으로 안전하지 않은 구성으로 NAT 게이트웨이를 설정하는 방법은 본질적으로 없습니다. –