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年前321ビュー
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年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ