Usar um bucket do Amazon S3 como um host estático da Web - 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.

Usar um bucket do Amazon S3 como um host estático da Web

JavaScript code example that applies to Node.js execution

Este exemplo de código Node.js mostra:

  • Como configurar um bucket do Amazon S3 como web host estático.

O cenário

Neste exemplo, uma série de módulos do Node.js é usada para configurar qualquer um dos seus buckets para atuar como um web host estático. 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 como usar um bucket do Amazon S3 como host estático da Web, consulte Como hospedar um site estático no Amazon S3 no Guia de 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 de site do bucket atual

Crie um módulo do Node.js com o nome de arquivo s3_getbucketwebsite.js. O módulo usa um único argumento de linha de comando que especifica o bucket do qual você deseja a configuração do website. Configure o SDK como mostrado anteriormente.

Crie um objeto de serviço do AWS.S3. Crie uma função que recupera a configuração do site do bucket atual para o bucket selecionado na lista de buckets. O único parâmetro que você precisa passar é o nome do bucket selecionado ao chamar o método getBucketWebsite. Se o bucket já tiver uma configuração do site, ela será retornada pelo Amazon S3 no parâmetro data passado para a função de retorno de chamada.

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

// 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 the website configuration for selected bucket s3.getBucketWebsite(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_getbucketwebsite.js BUCKET_NAME

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

Definir uma configuração de site do bucket

Crie um módulo do Node.js com o nome de arquivo s3_setbucketwebsite.js. Configure o SDK conforme mostrado anteriormente. Crie um objeto de serviço do AWS.S3.

Crie uma função que aplica uma configuração do site do bucket. A configuração permite que o bucket selecionado sirva como web host estático. As configurações do site são especificadas no JSON. Primeiro, crie um objeto JSON que contenha todos os valores para especificar a configuração do site, exceto para o valor Key, que identifica o documento de erro e o valor Suffix que identifica o documento de índice.

Insira os valores dos elementos de entrada de texto no objeto JSON. Prepare os parâmetros para o método putBucketWebsite, incluindo o nome do bucket e a configuração do site JSON.

// 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 JSON for putBucketWebsite parameters var staticHostParams = { Bucket: "", WebsiteConfiguration: { ErrorDocument: { Key: "", }, IndexDocument: { Suffix: "", }, }, }; // Insert specified bucket name and index and error documents into params JSON // from command line arguments staticHostParams.Bucket = process.argv[2]; staticHostParams.WebsiteConfiguration.IndexDocument.Suffix = process.argv[3]; staticHostParams.WebsiteConfiguration.ErrorDocument.Key = process.argv[4]; // set the new website configuration on the selected bucket s3.putBucketWebsite(staticHostParams, function (err, data) { if (err) { // display error message console.log("Error", err); } else { // update the displayed website configuration for the selected bucket console.log("Success", data); } });

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

node s3_setbucketwebsite.js BUCKET_NAME INDEX_PAGE ERROR_PAGE

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

Excluir uma configuração do site de um bucket

Crie um módulo do Node.js com o nome de arquivo s3_deletebucketwebsite.js. Configure o SDK conforme mostrado anteriormente. Crie um objeto de serviço do AWS.S3.

Crie uma função que exclui a configuração de site do bucket selecionado. O único parâmetro que você precisa passar ao chamar o método deleteBucketWebsite é 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 website configuration for selected bucket s3.deleteBucketWebsite(bucketParams, function (error, data) { if (error) { console.log("Error", err); } else if (data) { console.log("Success", data); } });

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

node s3_deletebucketwebsite.js BUCKET_NAME

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