2017-02-06 9 views
0

私はS3バケットによってトリガされるAWSラムダ機能を持っています。 Lambda関数は、VPC内のEC2インスタンスにpingを実行します。 VPCにはNATがありません。何らかの理由でラムダはEC2に接続できず、タイムアウトしています。私は、VPCとVPCの両方でラムダを維持しようとしました。私はまた、インスタンスのパブリックおよびプライベートIPを使用してみましたが、動作していないようです。私は次に何ができるかに関する提案。AWSラムダがVPC内のEC2インスタンスにpingできない

from __future__ import print_function 

import json 
import boto3 
import urllib2 

print('Loading function') 

s3 = boto3.client('s3') 


def lambda_handler(event, context): 
    bucket = event['Records'][0]['s3']['bucket']['name'] 
    url = urllib2.urlopen("http://ip-address/API/") 

答えて

2

まず、次のように ラムダ関数のコードは、VPC内のラムダ関数では、必ずEC2インスタンスのプライベートIPを使用します。次に、EC2インスタンスのセキュリティグループでポート80を開き、ラムダ機能に割り当てたセキュリティグループに属するものからの着信接続を許可します。

+0

マーク私には2つの質問があります: ラムダはEC2のVPC内にあるべきですか? もう1つ、セキュリティグループのポート80を開く方法は?私は現在、私のEC2インスタンスにアクセスするセキュリティグループ内の特定のIPに対してポート80を開いています。誰も私のマシンにHTTP経由でアクセスしないように注意してください。 –

+0

Hey Mark、 あなたの答えをありがとう。私には2つの質問がありました。 最初に、ラムダ関数がVPC内にある必要がありますか? もう1つ、私は現在、EC2マシンの特定のIPに対してのみポート80を開いていますが、ラムダのセキュリティグループ内からEC2にアクセスできるようにHTTPポート80を開くべきですか? –

+1

はいLambda機能は、EC2インスタンスと同じVPC内のVPC内に存在する必要があります。セキュリティグループのポートを開くには、インバウンドルールを追加するときに、ソースタイプに「Custom」を選択してから、グループIDをソース値として使用します。このフィールドに "sg"と入力すると、セキュリティグループの一覧がポップアップ表示されます。 –

関連する問題