创建和使用 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 桶的列表。

  • 如何创建 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 上的此处找到。