2017-09-14 2 views
2

私はServerlessフレームワークを使用して、Pythonラムダ関数をAWSにデプロイしています。私のserverless.ymlファイルでは、特定のIDを持つVPCに展開する必要のある関数を定義しました.VPCは、ラムダ関数からのビジネス関連の要求を行うために必要なネットワーク接続しか持っていません。ドキュメントでserverless.ymlの特定のVPC IDにラムダ関数を割り当てます。

customer_callback: 
    vpc: 
     subnetIds: 
     - subnet-something 
    handler: myservice/event_stream.customer_callback 

、上記の例は、それらがVPCに関数をアタッチする方法として言及何をされています。ただし、機能は全くVPCに展開されていない

https://serverless.com/framework/docs/providers/aws/guide/functions/

、例えば私はこのような直接VPCのIDを指定して試してみました

enter image description here

:私はで終わる

customer_callback: 
    vpc: 
     id: vpc-something 
    handler: myservice/event_stream.customer_callback 

しかし、それは同様に何もしません。この問題のドキュメントは基本的に存在せず、多くの検索を行ったので、最終的にここに投稿してヘルプを求める必要があります。 https://serverless.com/framework/docs/providers/aws/guide/functions/#vpc-configurationから

+0

こんにちはリチャード、あなたは、この上の任意の解決策を見つけましたか?私はラムダ関数をデフォルトのvpcに成功せずにつけようとしています: –

答えて

4

このオブジェクトは、この機能のためにVPCを構築するために必要なsecurityGroupIdsとsubnetIdsアレイのプロパティが含まれている必要があります。

functions: 
    customer_callback: 
    handler: myservice/event_stream.customer_callback 
    vpc: 
     securityGroupIds: 
     - sg-deadbeef 
     subnetIds: 
     - subnet-fadecafe 

また、VPC IAM権限を追加する必要があります。

ラムダ関数の実行ロールには、Elastic Network Interfaces(ENI)の作成、記述、削除の権限が必要です。 VPC設定が提供されると、デフォルトのAWS AWSLambdaVPCAccessExecutionRoleがラムダ実行ロールに関連付けられます。これを行うには

、あなたのserverless.ymlに次の行を追加します。

resources: 
    Resources: 
    AWSLambdaVPCAccessExecutionRole: 
     Type: AWS::IAM::ManagedPolicy 
     Properties: 
     Description: Creating policy for vpc connetion. 
     Roles: 
      - {"Ref" : "IamRoleLambdaExecution"} 
     PolicyDocument: 
      Version: '2012-10-17' 
      Statement: 
      - Effect: Allow 
       Action: 
       - ec2:CreateNetworkInterface 
       - ec2:DescribeNetworkInterfaces 
       - ec2:DeleteNetworkInterface 
       Resource: "*" 
関連する問題