创建和使用 Amazon S3 存储桶 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

我们已宣布即将终止对 Amazon SDK for JavaScript v2 的支持。建议您迁移到 Amazon 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 模块使用 SDK for JavaScript,通过 Amazon S3 客户端类的以下方法从 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'});

显示 Amazon S3 桶的列表

创建文件名为 s3_listbuckets.js 的 Node.js 模块。确保按前面所示配置开发工具包。要访问 Amazon Simple Storage Service,请创建一个 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 上的此处找到。