使用 Amazon S3 儲存貯體做為靜態 Web 主機 - AWS SDK for JavaScript

我們宣布了即將推 end-of-support 出的 AWS SDK for JavaScript v2。我們建議您移轉至 AWS SDK for JavaScript v3。有關日期,其他詳細信息以及如何遷移的信息,請參閱鏈接的公告。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon S3 儲存貯體做為靜態 Web 主機

JavaScript code example that applies to Node.js execution

這個 Node.js 程式碼範例會說明:

  • 如何將 Amazon S3 儲存貯體設定為靜態 Web 主機。

使用案例

在此範例中使用一系列的 Node.js 模組以設定任何儲存貯體,並該儲存貯體做為靜態 web 託管。Node.js 模組使用開發套件,使用 Amazon S3 用戶端類別的下列方法 JavaScript 來設定選取的 Amazon S3 儲存貯體:

如需使用 Amazon S3 儲存貯體做為靜態 Web 主機的詳細資訊,請參閱 Amazon 簡單儲存服務使用者指南中的在 Amazon S3 上託管靜態網站

先決條件任務

若要設定和執行此範例,您必須先完成這些任務:

設定軟體開發套件

JavaScript 通過創建全局配置對象,然後為代碼設置區域來配置 SDK。在此範例中,區域會設為 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 模組。該模組採用的單一命令行引數,指定了您要的網站組態之儲存貯體。依前述內容設定軟體開發套件。

建立一個 AWS.S3 服務物件。建立函數,對於儲存貯體清單中所選的儲存貯體,擷取其目前的儲存貯體網站組態。您唯一需要傳遞的參數,就是在呼叫 getBucketWebsite 方法時所選取儲存貯體的名稱。如果儲存貯體目前具有網站組態,Amazon S3 會在傳遞至回呼函data數的參數中傳回該組態。

如果所選的儲存貯體沒有網站組態,則該資訊會在 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 模組。請務必依前述的內容來設定軟體開發套件。建立一個 AWS.S3 服務物件。

建立套用至儲存貯體網站組態的函數。該組態允許所選之儲存貯體用作靜態 web 託管。網站組態於 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 模組。請務必依前述的內容來設定軟體開發套件。建立一個 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。