プライベートサブネットでNodeJSラムダ機能を実行しており、セキュリティグループとNACL(安全ではありませんが、ジョブを実行します) 。プライベートサブネットには、同じVPCのパブリックサブネットにあるNATゲートウェイがあるため、インターネット接続が機能します。VPC実行AWS LambdaはSQSメッセージを1回だけ送信します
私の目標は、メッセージをSQSキューに送信することです。
ラムダコードはこれです:何らかの理由
const AWS = require('aws-sdk')
const sqs = new AWS.SQS()
exports.handler = (event, context, callback) => {
sqs.sendMessage({
MessageBody: JSON.stringify(event),
QueueUrl: 'https://sqs.eu-west-1.amazonaws.com/000000000000/queue-name'
}, function(err, data) {
console.log(err, data);
return callback(err, data);
});
};
、この関数は、私はそれを置く各プライベートサブネット内の最初の時間を実行します。その後、ただ時間切れになります。
{
"errorMessage": "2017-10-23T17:07:01.675Z 903aaabc-b814-11e7-a727-19816eaa468a Task timed out after 10.00 seconds"
}
そして、ここでログ
START RequestId: 903aaabc-b814-11e7-a727-19816eaa468a Version: $LATEST
END RequestId: 903aaabc-b814-11e7-a727-19816eaa468a
REPORT RequestId: 903aaabc-b814-11e7-a727-19816eaa468a Duration: 10002.46 ms Billed Duration: 10000 ms Memory Size: 128 MB Max Memory Used: 32 MB
2017-10-23T17:07:01.675Z 903aaabc-b814-11e7-a727-19816eaa468a Task timed out after 10.00 seconds
私はVPCにアタッチされていない機能を実行すると、「それは完璧にするたびに動作しますが、私はそこにいくつかの民間のリソースへのアクセス・ロジックを追加する必要がありますので、私のことが可能ですそれをVPCの外で実行しないでください。
この機能は、この機能が使用する再利用可能なコンテナ(インフラストラクチャユニット)と関係がありますが、一般的なAWSやラムダの経験は、それがどのように影響を受けるか把握するには浅すぎます。
sqs
オブジェクトがhandler
で構築される「より暖かい」バージョンを試しましたが、これはうまくいきませんでした。
私が間違っていることを知っている人はいますか?
'sqs = new AWS.SQS()'を 'handler'関数に移動してみてください。私は、AWS SDKがLambdaハンドラの外で作成されたときにタイムアウトの問題に遭遇するHTTP接続プールを作成するのを見ました。 –
コンテナが熱い場合は、グローバルコードが再度実行されません。ハンドラ関数でグローバル変数を再初期化する必要があります。 – Asdfg
どのようにインターネットに接続できますか?あなたのvpcをnat gwなどで間違って設定するのは信じられないほど簡単です。 – Daniel