Trabalhar com políticas de bucket 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.

Trabalhar com políticas de bucket do Amazon S3

JavaScript code example that applies to Node.js execution

Este exemplo de código Node.js mostra:

  • Como recuperar a política de buckets de um bucket do Amazon S3.

  • Como adicionar ou atualizar uma política de buckets de um bucket do Amazon S3.

  • Como excluir a política de buckets de um bucket do Amazon S3.

O cenário

Neste exemplo, uma série de módulos do Node.js é usada para recuperar, definir ou excluir uma política de buckets em um bucket do Amazon S3. Os módulos do Node.js usam o SDK para JavaScript para configurar a política de um bucket do Amazon S3 selecionado usando estes métodos na classe de cliente do Amazon S3:

Para obter mais informações sobre políticas de bucket dos buckets do Amazon S3, consulte Uso de políticas de bucket e políticas de usuário 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 política atual de buckets

Crie um módulo do Node.js com o nome de arquivo s3_getbucketpolicy.js. O módulo usa um único argumento de linha de comando que especifica o bucket cuja política você deseja. 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 getBucketPolicy. Se o bucket já tiver uma política, ela será retornada pelo Amazon S3 no parâmetro data transmitido para a função de retorno de chamada.

Se o bucket selecionado ainda não tiver política, 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" }); var bucketParams = { Bucket: process.argv[2] }; // call S3 to retrieve policy for selected bucket s3.getBucketPolicy(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data.Policy); } });

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

node s3_getbucketpolicy.js BUCKET_NAME

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

Definir uma política de bucket simples

Crie um módulo do Node.js com o nome de arquivo s3_setbucketpolicy.js. O módulo usa um único argumento de linha de comando que especifica o bucket cuja política você deseja aplicar. Configure o SDK como mostrado anteriormente.

Crie um objeto de serviço do AWS.S3. As políticas do bucket estão especificadas no JSON. Primeiro, crie um objeto JSON contendo todos os valores para especificar a política, exceto para o valor Resource, que identifica o bucket.

Formate a string Resource exigida pela política, incorporando o nome do bucket selecionado. Insira essa string no objeto JSON. Prepare os parâmetros do método putBucketPolicy, incluindo o nome do bucket e a política JSON convertida em um valor de string.

// 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" }); var readOnlyAnonUserPolicy = { Version: "2012-10-17", Statement: [ { Sid: "AddPerm", Effect: "Allow", Principal: "*", Action: ["s3:GetObject"], Resource: [""], }, ], }; // create selected bucket resource string for bucket policy var bucketResource = "arn:aws:s3:::" + process.argv[2] + "/*"; readOnlyAnonUserPolicy.Statement[0].Resource[0] = bucketResource; // convert policy JSON into string and assign into params var bucketPolicyParams = { Bucket: process.argv[2], Policy: JSON.stringify(readOnlyAnonUserPolicy), }; // set the new policy on the selected bucket s3.putBucketPolicy(bucketPolicyParams, function (err, data) { if (err) { // display error message console.log("Error", err); } else { console.log("Success", data); } });

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

node s3_setbucketpolicy.js BUCKET_NAME

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

Excluir uma política de bucket

Crie um módulo do Node.js com o nome de arquivo s3_deletebucketpolicy.js. O módulo usa um único argumento de linha de comando que especifica o bucket cuja política você deseja excluir. Configure o SDK como mostrado anteriormente.

Crie um objeto de serviço do AWS.S3. O único parâmetro que você precisa passar ao chamar o método deleteBucketPolicy é o nome do bucket selecionado.

// 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" }); var bucketParams = { Bucket: process.argv[2] }; // call S3 to delete policy for selected bucket s3.deleteBucketPolicy(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data); } });

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

node s3_deletebucketpolicy.js BUCKET_NAME

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