@aws-sdk/client-s3 new SDK version v3 - Region is missing error

1.2k views Asked by At

I am migrating S3 client on node.js from v2 to v3. And getting error: Region is missing, when using any command: s3Client.send(\\any command\\);
I have the latest libraries v3.405.0 and initialise S3 with this code:

import { S3Client, ListObjectsV2Command } from "@aws-sdk/client-s3";

async function getData() {
  const s3Client = new S3Client([
    {
      region: "eu-central-1",
      accessKeyId: "xx",
      secretAccessKey: "xx"
    }
  ]);

  const command = new ListObjectsV2Command({
    Bucket: "dev-env",
    Delimiter: "/",
    Prefix: "orders/2022-02/2021000382-284/28/"
  });
  const data = await s3Client.send(command);
  console.log(JSON.stringify(data));
}

getData();

I have tried also in sandbox only the library and getting same error.
Any idea?

2

There are 2 answers

2
Filippo Testini On BEST ANSWER

There's an extra array in input of your S3 client instantiation.

Here's the correct syntax:

const s3Client = new S3Client({
    region:'eu-central-1',
    credentials: {
        accessKeyId: ACCESS_KEY_ID,
        secretAccessKey: ACCESS_KEY_SECRET
    }
});

I've integrated this correction in your code, tested with the same library version and it works:

import { S3Client, ListObjectsV2Command } from "@aws-sdk/client-s3";

async function getData() {
  const s3Client = new S3Client({
    region:'eu-central-1',
    credentials: {
        accessKeyId: "xxx",
        secretAccessKey: "xxx"
    }
  });

  const command = new ListObjectsV2Command({
    Bucket: "dev-env",
    Delimiter: "/",
    Prefix: "orders/2022-02/2021000382-284/28/"
  });
  const data = await s3Client.send(command);
  console.log(JSON.stringify(data));
}

getData();
0
Michal Červenka On

I found out the problem. I placed S3Client configuration into array (because WS show me with intellisence, that it is an array). But it is not :).