Lambda in VPC Can't PutObject Despite S3 Endpoint

0

I have a Lambda Node function in a VPC because it has to communicate over a peering connection. That part works fine. Once I get my data, I am trying to use .putObject to push it to S3. This putObject call hangs indefinitely. Code:

const s3 = new aws.S3({
region: 'us-west-1'
});

s3.putObject(
{
Body: fs.createReadStream(tmpDirDoc),
Bucket: s3bucket,
Key: ${s3prefix}/index_doc_${i + 1}.json,
},
(error, data) => {
if (error) {
console.log('Error putting object to s3!');
console.log(error);
reject(error.message);
} else {
accept(data);
}
},
);

It hangs forever at this .putObject call. So I went into the VPC console, Endpoints, Create Endpoint, selected the S3 Interface, assigned it to my VPC. Shouldn't that enable it to work now? This is what fixed timeout hangs when trying to talk to Secrets Manager. Yet, it continues to hang for S3. VPC is so incredibly confusing to get working. Any advice is appreciated. Thank you!

Edited by: johnteamcoco on Apr 30, 2021 11:42 AM

Edited by: johnteamcoco on Apr 30, 2021 11:43 AM
trying to indent properly

feita há 3 anos321 visualizações
1 Resposta
0

Wanted to follow up in case any other lost souls find their way here. The problem was that I created an S3 "Interface" endpoint. Apparently, I should have created a "Gateway" endpoint. No idea what the difference is, but "Interface" S3 endpoints don't work within a VPC apparently. No idea what their purpose is. I also coded the endpoint into my S3 sdk constructor call.

respondido há 3 anos

Você não está conectado. Fazer login para postar uma resposta.

Uma boa resposta responde claramente à pergunta, dá feedback construtivo e incentiva o crescimento profissional de quem perguntou.

Diretrizes para responder a perguntas