建立與使用 Amazon S3 儲存貯體 - AWS SDK for JavaScript

我們宣布即將推出 end-of-support 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 儲存貯體的清單。

  • 如何建立 Amazon S3 儲存貯體。

  • 如何上傳物件至指定的儲存貯體。

使用案例

在此範例中,使用一系列 Node.js 模組來取得現有 Amazon S3 儲存貯體的清單、建立儲存貯體,以及將檔案上傳到指定的儲存貯體。這些 Node.js 模組使用開發套件,使用 JavaScript Amazon S3 用戶端類別的下列方法,從 Amazon S3 儲存貯體取得資訊,並將檔案上傳到 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'});

顯示 Amazon S3 存儲桶列表

以檔名 s3_listbuckets.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。要訪問 Amazon 簡單存儲服務,請創建一個AWS.S3服務對象。呼叫 Amazon S3 服務物件的listBuckets方法以擷取儲存貯體清單。回呼函數的 data 參數具有一個包含映射陣列的 Buckets 屬性以代表儲存貯體。透過將其記錄至主控台以顯示儲存貯體清單。

// 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" }); // Call S3 to list the buckets s3.listBuckets(function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Buckets); } });

若要執行範例,請在命令列中輸入以下內容。

node s3_listbuckets.js

您可以在這裡找到此範例程式碼 GitHub。

建立 Amazon S3 儲存貯體

以檔名 s3_createbucket.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。建立一個 AWS.S3 服務物件。該模組將採用單一命令行引數以指定新儲存貯體的名稱。

新增變數以保存用於呼叫 Amazon S3 服務物件createBucket方法的參數,包括新建立儲存貯體的名稱。Amazon S3 成功建立新儲存貯體後,回呼函數會將新儲存貯體的位置記錄到主控台。

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

若要執行範例,請在命令列中輸入以下內容。

node s3_createbucket.js BUCKET_NAME

您可以在這裡找到此範例程式碼 GitHub。

將文件上傳到 Amazon S3 存儲桶

以檔名 s3_upload.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。建立一個 AWS.S3 服務物件。該模組將採用兩條命令行引數,第一個用來指定目的地儲存貯體,第二個指定要上傳的檔案。

使用呼叫 Amazon S3 服務物件方upload法所需的參數建立變數。在 Bucket 參數中提供目標儲存貯體的名稱。Key 參數設為所選檔案的名稱,您可使用 Node.js path 模組來取得該名稱。Body 參數設為該檔案的內容,您可使用 Node.js fs 模組的 createReadStream 來取得該內容。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object var s3 = new AWS.S3({ apiVersion: "2006-03-01" }); // call S3 to retrieve upload file to specified bucket var uploadParams = { Bucket: process.argv[2], Key: "", Body: "" }; var file = process.argv[3]; // Configure the file stream and obtain the upload parameters var fs = require("fs"); var fileStream = fs.createReadStream(file); fileStream.on("error", function (err) { console.log("File Error", err); }); uploadParams.Body = fileStream; var path = require("path"); uploadParams.Key = path.basename(file); // call S3 to retrieve upload file to specified bucket s3.upload(uploadParams, function (err, data) { if (err) { console.log("Error", err); } if (data) { console.log("Upload Success", data.Location); } });

若要執行範例,請在命令列中輸入以下內容。

node s3_upload.js BUCKET_NAME FILE_NAME

您可以在這裡找到此範例程式碼 GitHub。

在 Amazon S3 存儲桶中列出對象

以檔名 s3_listobjects.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。建立一個 AWS.S3 服務物件。

新增變數以保存用於呼叫 Amazon S3 服務物件listObjects方法的參數,包括要讀取的儲存貯體名稱。回呼函數會記錄物件 (檔案) 清單或故障訊息。

// 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 the parameters for calling listObjects var bucketParams = { Bucket: "BUCKET_NAME", }; // Call S3 to obtain a list of the objects in the bucket s3.listObjects(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

若要執行範例,請在命令列中輸入以下內容。

node s3_listobjects.js

您可以在這裡找到此範例程式碼 GitHub。

刪除 Amazon S3 存儲桶

以檔名 s3_deletebucket.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。建立一個 AWS.S3 服務物件。

新增變數以保存用於呼叫 Amazon S3 服務物件createBucket方法的參數,包括要刪除的儲存貯體名稱。儲存貯體必須為空後始可將其刪除。回呼函數會記錄成功或故障訊息。

// 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 params for S3.deleteBucket var bucketParams = { Bucket: "BUCKET_NAME", }; // Call S3 to delete the bucket s3.deleteBucket(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

若要執行範例,請在命令列中輸入以下內容。

node s3_deletebucket.js

您可以在這裡找到此範例程式碼 GitHub。