静的ウェブホストとして Amazon S3 バケットを使用する - AWS SDK for JavaScript

AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表されています。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

静的ウェブホストとして Amazon S3 バケットを使用する

JavaScript code example that applies to Node.js execution

この Node.js コード例は以下を示しています。

  • 静的ウェブホストとして Amazon S3 バケットを設定する方法。

シナリオ

この例では、一連の Node.js モジュールを使用して、バケットのいずれかを静的ウェブホストとして機能するように設定します。Node.js モジュールは SDK for JavaScript を使用し、Amazon S3 クライアントクラスのこれらのメソッドを使用して、選択した Amazon S3 バケットを設定します。

Amazon S3 バケットを静的ウェブホストとして使用する方法の詳細については、Amazon Simple Storage Service ユーザーガイドAmazon S3 での静的ウェブサイトのホスティングを参照してください。

前提条件タスク

この例をセットアップして実行するには、まず次のタスクを完了する必要があります。

SDK の設定

グローバル設定オブジェクトを作成してからコードのリージョンを設定することで、SDK for JavaScript を設定します。この例では、リージョンは us-west-2 に設定されています。

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

現在のバケットウェブサイト設定を取得する

s3_getbucketwebsite.js というファイル名で Node.js モジュールを作成します。モジュールは単一のコマンドライン引数を取り、必要なウェブサイト設定があるバケットを指定します。前に示したように SDK を設定します。

AWS.S3 サービスオブジェクトを作成します。バケットリストで選択したバケットの現在のバケットウェブサイト設定を取得する関数を作成します。渡す必要がある唯一のパラメータは、getBucketWebsite メソッドを呼び出すときに選択したバケットの名前です。バケットに現在ウェブサイト設定がある場合、その設定はコールバック関数に渡される data パラメータで Amazon S3 によって返されます。

選択したバケットにウェブサイト設定がない場合、その情報は 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); } });

この例を実行するには、コマンドラインに次のように入力します。

node s3_getbucketwebsite.js BUCKET_NAME

このサンプルコードは、このGitHubにあります。

バケットウェブサイト設定をセットする

s3_setbucketwebsite.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。AWS.S3 サービスオブジェクトを作成します。

バケットのウェブサイト設定を適用する関数を作成します。この設定により、選択したバケットは静的ウェブホストとして機能します。ウェブサイト設定は JSON で指定されます。まず、エラードキュメントを特定する Key 値と、インデックスドキュメントを識別する Suffix 値を除くすべての値を含む JSON オブジェクトを作成し、ウェブサイトの設定を指定します。

テキスト入力要素の値を JSON オブジェクトに挿入します。putBucketWebsite メソッドのパラメータを準備します。これには、バケットの名前と 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); } });

この例を実行するには、コマンドラインに次のように入力します。

node s3_setbucketwebsite.js BUCKET_NAME INDEX_PAGE ERROR_PAGE

このサンプルコードは、このGitHubにあります。

バケットのウェブサイト設定を削除する

s3_deletebucketwebsite.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。AWS.S3 サービスオブジェクトを作成します。

選択したバケットのウェブサイト設定を削除する関数を作成します。deleteBucketWebsite メソッドを呼び出すときに渡す必要がある唯一のパラメータは、選択したバケットの名前です。

// 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); } });

この例を実行するには、コマンドラインに次のように入力します。

node s3_deletebucketwebsite.js BUCKET_NAME

このサンプルコードは、このGitHubにあります。