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

已提问 3 年前310 查看次数
1 回答
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.

已回答 3 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则