Uso de un bucket de Amazon S3 como un host web estático - AWS SDK for JavaScript

Anunciamos el próximo fin del soporte para AWS SDK for JavaScript v2. Se recomienda que migre a AWS SDK for JavaScript v3. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el anuncio enlazado.

Uso de un bucket de Amazon S3 como un host web estático

JavaScript code example that applies to Node.js execution

Este ejemplo de código de Node.js muestra:

  • Cómo configurar un bucket de Amazon S3 como host web estático.

El escenario

En este ejemplo, se utilizan una serie de módulos Node.js para configurar cualquiera de los buckets para que funcione como host web estático. Los módulos de Node.js usan el SDK para JavaScript para configurar un bucket de Amazon S3 seleccionado utilizando estos métodos de la clase de cliente de Amazon S3:

Para obtener más información acerca de cómo utilizar un bucket de Amazon S3 como un host web estático, consulte Alojamiento de un sitio web estático en Amazon S3 en la Guía del usuario de Amazon Simple Storage Service.

Tareas previas necesarias

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:

Configuración del SDK

Configure el SDK para JavaScript creando un objeto de configuración global y luego configurando la región para su código. En este ejemplo, la región está establecida en us-west-2.

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

Recuperación de la configuración de sitio web del bucket actual

Cree un módulo de Node.js con el nombre de archivo s3_getbucketwebsite.js. El módulo toma un argumento de línea de comandos único que especifica el bucket cuya configuración de sitio web quiere. Configure el SDK como le hemos mostrado anteriormente.

Cree un objeto de servicio AWS.S3. Cree una función que recupere la configuración de sitio web de bucket actual para el bucket seleccionado en la lista de buckets. El único parámetro que necesita pasar es el nombre del bucket seleccionado al llamar al método getBucketWebsite. Si el bucket tiene actualmente una configuración de sitio web, Amazon S3 devuelve dicha configuración en el parámetro data que se pasa a la función de devolución de llamada.

Si el bucket seleccionado no tiene configuración de sitio web, dicha información se devuelve a la función de devolución de llamada en el 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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node s3_getbucketwebsite.js BUCKET_NAME

Este código de ejemplo se puede encontrar aquí en GitHub.

Establecimiento de la configuración de sitio web de un bucket

Cree un módulo de Node.js con el nombre de archivo s3_setbucketwebsite.js. Configure el SDK como le hemos mostrado anteriormente. Cree un objeto de servicio AWS.S3.

Cree una función que aplica una configuración de sitio web de bucket. La configuración permite que el bucket seleccionado sirva como host web estático. Las configuraciones de sitio web se especifican en JSON. Primero cree un objeto JSON que contenga todos los valores para especificar la configuración del sitio web, excepto el valor Key que identifica el documento de error y el valor Suffix que identifica el documento de índice.

Inserte los valores de los elementos de entrada de texto en el objeto JSON. Prepare los parámetros para el método putBucketWebsite, incluido el nombre del bucket y la configuración de sitio web 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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node s3_setbucketwebsite.js BUCKET_NAME INDEX_PAGE ERROR_PAGE

Este código de ejemplo se puede encontrar aquí en GitHub.

Eliminación de la configuración de sitio web de un bucket

Cree un módulo de Node.js con el nombre de archivo s3_deletebucketwebsite.js. Configure el SDK como le hemos mostrado anteriormente. Cree un objeto de servicio AWS.S3.

Cree una función que elimine la configuración de sitio web del bucket seleccionado. El único parámetro que necesita pasar al llamar al método deleteBucketWebsite es el nombre del bucket seleccionado.

// 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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node s3_deletebucketwebsite.js BUCKET_NAME

Este código de ejemplo se puede encontrar aquí en GitHub.