Anunciamos
Configurar buckets do Amazon S3
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:
-
Instale o Node.js. Para obter mais informações sobre como instalar Node.js, consulte o website de Node.js
. -
Crie um arquivo de configurações compartilhado com as credenciais de usuário. Para obter mais informações sobre como fornecer um arquivo de credenciais compartilhadas, consulte Carregar credenciais em Node.js do arquivo de credenciais compartilhado.
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