Login
Login
Atualizado em 19 de March de 2026

O @aws-sdk/client-s3 é a biblioteca oficial da AWS para trabalhar com o serviço S3 em JavaScript. Ela permite enviar e baixar arquivos, listar e excluir objetos, realizar uploads multipart e gerar URLs pré-assinadas.

Instalação

Instale o pacote usando npm ou yarn:

npm install @aws-sdk/client-s3

Ou:

yarn add @aws-sdk/client-s3

Configurar acesso

Ao usar o @aws-sdk/client-s3, as credenciais de acesso podem ser configuradas de várias formas.

Usar ~/.aws/config e ~/.aws/credentials

Ao usar a AWS CLI, um diretório .aws com arquivos de configuração é criado automaticamente no diretório home do usuário. Se necessário, você pode criar esse diretório e os arquivos manualmente, sem instalar a AWS CLI.

O arquivo ~/.aws/credentials deve conter o seguinte:

[default]
aws_access_key_id = <ACCESS_KEY>
aws_secret_access_key = <SECRET_KEY>

E o ~/.aws/config:

[default]
output = json
endpoint_url = https://s3.hmstorage.net
region = us-2

Usar variáveis de ambiente

As credenciais também podem ser fornecidas por meio de variáveis de ambiente:

export AWS_ACCESS_KEY_ID=<ACCESS_KEY>
export AWS_SECRET_ACCESS_KEY=<SECRET_KEY>

Passar credenciais no código

Configuração completa do cliente com todos os parâmetros explicitamente especificados:

const { S3Client } = require("@aws-sdk/client-s3");

const s3 = new S3Client({
  region: "us-2",
  endpoint: "https://s3.hmstorage.net",
  credentials: {
    accessKeyId: "<ACCESS_KEY>",
    secretAccessKey: "<SECRET_KEY>"
  }
});

Usar um perfil da AWS CLI

Se houver vários perfis da AWS CLI configurados, você pode selecionar o perfil necessário usando uma variável de ambiente:

export AWS_PROFILE=myprofile

Nesse caso, o cliente pode ser criado sem passar explicitamente as chaves de acesso:

const s3 = new S3Client({
  region: "us-2",
  endpoint: "https://s3.hmstorage.net"
});

Exemplo

O exemplo abaixo demonstra operações básicas com objetos usando o SDK. O script realiza as seguintes ações:

  • envia um arquivo para um bucket;
  • lista todos os objetos no bucket;
  • baixa o arquivo enviado com outro nome;
  • exclui o objeto do armazenamento.

Antes de executar o script, crie um arquivo chamado example.txt no mesmo diretório do script.

Código de exemplo:

const {
  S3Client,
  ListObjectsV2Command,
  PutObjectCommand,
  GetObjectCommand,
  DeleteObjectCommand
} = require("@aws-sdk/client-s3");

const { createReadStream, createWriteStream, existsSync } = require("fs");
const { pipeline } = require("stream");
const { promisify } = require("util");

const pipe = promisify(pipeline);

const bucketName = "bucket_name";
const region = "us-2";
const endpoint = "https://s3.hmstorage.net";
const localUploadPath = "example.txt";
const s3Key = "example.txt";
const localDownloadPath = "downloaded_example.txt";

// Criar cliente S3
const s3 = new S3Client({
  region,
  endpoint,
});

async function main() {
  // 1. Enviar arquivo
  if (existsSync(localUploadPath)) {
    console.log(`Uploading ${localUploadPath} to the bucket...`);
    await s3.send(new PutObjectCommand({
      Bucket: bucketName,
      Key: s3Key,
      Body: createReadStream(localUploadPath),
    }));
    console.log("Upload completed.");
  } else {
    console.log(`File ${localUploadPath} not found. Skipping upload.`);
  }

  // 2. Listar objetos
  console.log("\nBucket contents:");
  const list = await s3.send(new ListObjectsV2Command({ Bucket: bucketName }));
  (list.Contents || []).forEach((obj) => {
    console.log(`- ${obj.Key}`);
  });

  // 3. Baixar arquivo
  console.log(`\nDownloading ${s3Key} to ${localDownloadPath}...`);
  const { Body } = await s3.send(new GetObjectCommand({
    Bucket: bucketName,
    Key: s3Key,
  }));
  if (Body) {
    await pipe(Body, createWriteStream(localDownloadPath));
    console.log("Download completed.");
  }

  // 4. Excluir arquivo
  console.log(`\nDeleting ${s3Key} from the bucket...`);
  await s3.send(new DeleteObjectCommand({ Bucket: bucketName, Key: s3Key }));
  console.log("Deletion completed.");
}

main().catch((err) => {
  console.error("Error while performing operations:", err);
});
Esta página foi útil?
Atualizado em 19 de March de 2026

Tem perguntas,
comentários ou preocupações?

Nossos profissionais estão disponíveis para ajudá-lo a qualquer momento,
seja para assistência ou apenas se você não souber por onde começar.
Envie-nos um e-mail
Hostman's Support