5

ラムダから自分のRDSインスタンスに接続しようとしています。私はラムダをローカルに書いて、ローカルでテストしました。そしてすべてがピーチになりました。私はラムダに展開し、突然動作しません。以下は私が実行しているコードですが、助けがあれば、私はキネシスストリームを介してラムダを呼び出しています。ここでAWS LambdaはRDSインスタンスに接続できませんが、ローカルにできますか?

'use strict'; 

exports.handler = (event, context, handlerCallback) => { 
    console.log('Recieved request for kinesis events!'); 
    console.log(event); 
    console.log(context); 

    const connectionDetails = { 
     host:  RDS_HOST, 
     port:  5432, 
     database: RDS_DATABASE, 
     user:  RDS_USER, 
     password: RDS_PASSWORD 
    }; 

    const db = require('pg-promise')({promiseLib: require('bluebird')})(connectionDetails); 

    db 
      .tx(function() { 
       console.log('Beginning query'); 

       return this.query("SELECT 'foobar'") 
          .then(console.log) 
          .catch(console.log) 
          .finally(console.log); 
      }) 
      .finally(() => handlerCallback()); 
}; 

それが助け場合、クラウドからのログを見ている:マイケル・sqlbot @

START RequestId: *********-****-****-****-********* Version: $LATEST 
2016-05-31T20:58:25.086Z *********-****-****-****-********* Recieved request for kinesis events! 
2016-05-31T20:58:25.087Z *********-****-****-****-********* { Records: [ { kinesis: [Object], eventSource: 'aws:kinesis', eventVersion: '1.0', eventID: 'shardId-000000000000:**********************************', eventName: 'aws:kinesis:record', invokeIdentityArn: 'arn:aws:iam::******************:role/lambda_kinesis_role', awsRegion: 'us-east-1', eventSourceARN: 'arn:aws:kinesis:us-east-1:****************:stream/route-registry' } ] } 
2016-05-31T20:58:25.283Z *********-****-****-****-********* { callbackWaitsForEmptyEventLoop: [Getter/Setter], done: [Function], succeed: [Function], fail: [Function], logGroupName: '/aws/lambda/apiGatewayRouteRegistry-development', logStreamName: '2016/05/31/[$LATEST]******************', functionName: 'apiGatewayRouteRegistry-development', memoryLimitInMB: '128', functionVersion: '$LATEST', getRemainingTimeInMillis: [Function], invokeid: '*********-****-****-****-*********', awsRequestId: '*********-****-****-****-*********', invokedFunctionArn: 'arn:aws:lambda:us-east-1:*************:function:apiGatewayRouteRegistry-development' } 
END RequestId: *********-****-****-****-********* 
REPORT RequestId: *********-****-****-****-********* Duration: 20003.70 ms Billed Duration: 20000 ms Memory Size: 128 MB Max Memory Used: 22 MB 
2016-05-31T20:58:45.088Z *********-****-****-****-********* Task timed out after 20.00 seconds 
+0

ラムダ関数のVPCアクセスを有効にしましたか? –

+0

@マークBノープ。私は "No VPC"に設定されているドロップダウンを持っています – LordZardeck

+0

あなたはあなたのRDSインスタンスでパブリックアクセスを有効にしており、RDSインスタンスのセキュリティグループは世界中に開いていますか? –

答えて

9

@MarkBはコメントで正解だった、それはセキュリティグループの問題でした。

最終的に、RDSセキュリティグループが実際に特定のIPに対してプライベートであったことを指摘するAWSサポートの回答を得ました。私はこれを設定していないので、これは意味をなさない。ローカルマシンと弾力のあるbeanstalkからデータベースにアクセスできる。セキュリティグループに0.0.0.0/0を追加したところ、ラムダが接続できるようになりました。助けてくれてありがとう!

+0

こんにちは、詳しく説明できますか?どこに0.0.0.0/0を追加しましたか? – UncleAdam

+2

セキュリティグループのインバウンドに0.0.0.0/0を追加することは、世界との接続を開くことを意味します。あなたはそれを恐れていないのですか? – Nativ

+1

@Nativ開発とテスト目的でした。その後、正しいセキュリティグループにロックダウンされます。はい、世界への接続を開くことは、プロダクションでの使用には適していません。 – LordZardeck

関連する問題