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

asked 3 years ago283 views
1 Answer
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.

answered 3 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions