Configurar buckets do Amazon S3 - AWS SDK for JavaScript

Anunciamos o próximo fim do suporte para o AWS SDK for JavaScript v2. Recomendamos migrar para o AWS SDK for JavaScript v3. Para saber as datas e receber detalhes adicionais e informações sobre como migrar, consulte o anúncio vinculado.

Configurar buckets do Amazon S3

JavaScript code example that applies to Node.js execution

Este exemplo de código Node.js mostra:

  • Como configurar as permissões do CORS (cross-origin resource sharing, compartilhamento de recursos de origem cruzada) para um bucket.

O cenário

Neste exemplo, uma série de módulos do Node.js é usada para listar seus buckets do Amazon S3 e configurar o CORS e o registro dos buckets. Os módulos do Node.js usam o SDK para JavaScript para configurar um bucket do Amazon S3 selecionado usando estes métodos na classe de cliente do Amazon S3:

Para obter mais informações sobre a configuração do CORS com um bucket do Amazon S3, consulte Compartilhamento de recursos entre origens (CORS) no Guia do usuário do Amazon Simple Storage Service.

Tarefas de pré-requisito

Para configurar e executar este exemplo, você deve primeiro concluir estas tarefas:

Como configurar o SDK

Configure o SDK para JavaScript criando um objeto de configuração global e definindo a região do código. Neste exemplo, a região é definida como us-west-2.

// Load the SDK for JavaScript var AWS = require('aws-sdk'); // Set the Region AWS.config.update({region: 'us-west-2'});

Recuperar a configuração do CORS de um bucket

Crie um módulo do Node.js com o nome de arquivo s3_getcors.js. O módulo usará um único argumento de linha de comando para especificar o bucket que você deseja para a configuração do CORS. Configure o SDK conforme mostrado anteriormente. Crie um objeto de serviço do AWS.S3.

O único parâmetro que você precisa passar é o nome do bucket selecionado ao chamar o método getBucketCors. Se o bucket atualmente tiver uma configuração do CORS, essa configuração será retornada pelo Amazon S3 como a propriedade CORSRules do parâmetro passado para a função de retorno de chamada.

Se o bucket selecionado ainda não tiver a configuração do CORS, essa informação será retornada para a função de retorno de chamada no parâmetro error.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object s3 = new AWS.S3({ apiVersion: "2006-03-01" }); // Set the parameters for S3.getBucketCors var bucketParams = { Bucket: process.argv[2] }; // call S3 to retrieve CORS configuration for selected bucket s3.getBucketCors(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", JSON.stringify(data.CORSRules)); } });

Para executar o exemplo, digite o seguinte na linha de comando.

node s3_getcors.js BUCKET_NAME

Este código de exemplo pode ser encontrado aqui no GitHub.

Definir a configuração de CORS de um bucket

Crie um módulo do Node.js com o nome de arquivo s3_setcors.js. O módulo leva vários argumentos de linha de comando, sendo que o primeiro especifica o bucket cuja configuração do CORS você deseja definir. Outros argumentos enumeram os métodos HTTP (POST, GET, PUT, PATCH, DELETE, POST) que você deseja permitir para o bucket. Configure o SDK como mostrado anteriormente.

Crie um objeto de serviço do AWS.S3. Em seguida, crie um objeto JSON para armazenar os valores para a configuração do CORS, conforme exigido pelo método putBucketCors do objeto de serviço do AWS.S3. Especifique "Authorization" para o valor AllowedHeaders e "*" para o valor AllowedOrigins. Inicialmente, defina o valor de AllowedMethods como array vazio.

Especifique os métodos permitidos como parâmetros de linha de comando para o módulo Node.js, adicionando cada um dos métodos que correspondem a um dos parâmetros. Adicione a configuração do CORS resultante ao array de configurações contido no parâmetro CORSRules. Especifique o bucket que você deseja configurar para o CORS no parâmetro Bucket.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object s3 = new AWS.S3({ apiVersion: "2006-03-01" }); // Create initial parameters JSON for putBucketCors var thisConfig = { AllowedHeaders: ["Authorization"], AllowedMethods: [], AllowedOrigins: ["*"], ExposeHeaders: [], MaxAgeSeconds: 3000, }; // Assemble the list of allowed methods based on command line parameters var allowedMethods = []; process.argv.forEach(function (val, index, array) { if (val.toUpperCase() === "POST") { allowedMethods.push("POST"); } if (val.toUpperCase() === "GET") { allowedMethods.push("GET"); } if (val.toUpperCase() === "PUT") { allowedMethods.push("PUT"); } if (val.toUpperCase() === "PATCH") { allowedMethods.push("PATCH"); } if (val.toUpperCase() === "DELETE") { allowedMethods.push("DELETE"); } if (val.toUpperCase() === "HEAD") { allowedMethods.push("HEAD"); } }); // Copy the array of allowed methods into the config object thisConfig.AllowedMethods = allowedMethods; // Create array of configs then add the config object to it var corsRules = new Array(thisConfig); // Create CORS params var corsParams = { Bucket: process.argv[2], CORSConfiguration: { CORSRules: corsRules }, }; // set the new CORS configuration on the selected bucket s3.putBucketCors(corsParams, function (err, data) { if (err) { // display error message console.log("Error", err); } else { // update the displayed CORS config for the selected bucket console.log("Success", data); } });

Para executar o exemplo, digite o seguinte na linha de comando, incluindo um ou mais métodos HTTP, como mostrado.

node s3_setcors.js BUCKET_NAME get put

Este código de exemplo pode ser encontrado aqui no GitHub.