개인 서브넷에서 NodeJS 람다 기능을 실행하고 보안 그룹과 NACL 모두에서 수신/송신 정책을 모두 허용합니다 (안전하지는 않지만 작업을 수행함) . 사설 서브넷에는 동일한 VPC의 공용 서브넷에 NAT 게이트웨이가 있으므로 인터넷 연결이 작동합니다.VPC 실행 AWS Lambda가 SQS 메시지를 한 번만 전송합니다.
내 목표는 메시지를 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"
}
그리고 여기에 내가 VPC에 연결되지 않은 기능을 실행하면 완벽 할 때마다 작동
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 외부에서 실행하지 마십시오.
내 생각에이 기능은 함수에서 사용하는 재사용 가능한 컨테이너 (인프라 단위)와 관련이 있지만 일반적으로 AWS 및 Lambda에 대한 나의 경험은 그 영향을 이해하기에는 너무 얕습니다.
sqs
개체가 handler
에 생성되는 "더 따뜻한"버전을 사용해 보았지만 더 이상 작동하지 않았습니다.
내가 잘못하고있는 것에 대해 누구나 생각을 갖고 있습니까?
'sqs = new AWS.SQS()'를'handler' 함수로 옮겨보십시오. AWS SDK가 Lambda 처리기 외부에서 생성 될 때 시간 초과 문제로 실행되는 HTTP 연결 풀을 생성하는 것을 보았습니다. –
컨테이너가 뜨거우면 전역 코드가 다시 실행되지 않습니다. 핸들러 함수에서 전역 변수를 다시 초기화해야합니다. – Asdfg
어떻게 인터넷에 연결되어 있습니까? 믿을 수 없을 정도로 쉽게 nat gw 등을 사용하여 vpc를 잘못 구성하는 것입니다. – Daniel