Node.js 入门 - AWS SDK for JavaScript

我们已宣布即将终止对 AWS SDK for JavaScript v2 的支持。建议您迁移到 AWS SDK for JavaScript v3。有关日期、其他详细信息以及如何迁移的信息,请参阅链接的公告。

Node.js 入门

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何为您的项目创建 package.json 清单。

  • 如何安装和包括项目所用的模块。

  • 如何通过 AWS.S3 客户端类创建 Amazon Simple Storage Service(Amazon S3)服务对象。

  • 如何创建 Amazon S3 桶并将对象上传到该桶。

情景

示例演示如何设置和运行简单 Node.js 模块,该模块创建 Amazon S3 桶,然后将文本对象添加到该桶。

由于 Amazon S3 中的桶名称必须全局唯一,此示例包括了第三方 Node.js 模块,用于生成您可纳入桶名称的唯一 ID 值。此额外的模块名为 uuid

先决条件任务

要设置和运行此示例,您必须先完成以下任务:

  • 创建用于开发 Node.js 模块的工作目录。将此目录命名为 awsnodesample。请注意,必须在应用程序可更新的位置中创建该目录。例如,在 Windows 中,请勿在“C:\Program Files”下创建该目录。

  • 安装 Node.js。有关更多信息,请参阅 Node.js 网站。您可在 https://nodejs.org/en/download/current/ 中查找和下载适用于各种操作系统的 Node.js 最新版本和 LTS 版本。

步骤 1:安装 SDK 和依赖项

使用 npm(Node.js 包管理器)安装 SDK for JavaScript 包:

从程序包中的 awsnodesample 目录,在命令行中键入以下内容。

npm install aws-sdk

此命令在项目中安装 SDK for JavaScript,并更新 package.json 以将该 SDK 作为项目依赖项列出。您可以在 npm 网站上通过搜索“aws-sdk”找到有关此程序包的信息。

接下来,通过在命令行中键入以下内容,在项目中安装 uuid 模块,这会安装模块并更新 package.json。有关 uuid 的更多信息,请参阅位于 https://www.npmjs.com/package/uuid 的模块页面。

npm install uuid

这些程序包及其关联的代码将安装在项目的 node_modules 子目录中。

有关安装 Node.js 包的更多信息,请参阅 npm(Node.js 包管理器)网站上的 Downloading and installing packages locallyCreating Node.js Modules。有关下载和安装AWS SDK for JavaScript的信息,请参阅安装 SDK for JavaScript

步骤 2:配置凭证

您需要向 AWS 提供凭证,这样只有您的账户及其资源可由 SDK 访问。有关获取您的账户凭证的更多信息,请参阅使用 AWS 进行 SDK 身份验证

要保存此信息,我们建议您创建一个共享凭证文件。要了解如何操作,请参阅 从共享凭证文件加载 Node.js 中的凭证。您的凭证文件应该类似于下例所示。

[default] aws_access_key_id = YOUR_ACCESS_KEY_ID aws_secret_access_key = YOUR_SECRET_ACCESS_KEY

您可以通过在 Node.js 中执行以下代码来确定是否已正确设置您的凭证:

var AWS = require("aws-sdk"); AWS.config.getCredentials(function(err) { if (err) console.log(err.stack); // credentials not loaded else { console.log("Access key:", AWS.config.credentials.accessKeyId); } });

同样,如果您已在 config 文件中正确设置了区域,您可以通过将 AWS_SDK_LOAD_CONFIG 环境变量设置为任何值并使用以下代码来显示该值:

var AWS = require("aws-sdk"); console.log("Region: ", AWS.config.region);

步骤 3:为项目创建包 JSON

创建 awsnodesample 项目目录之后,您可以创建和添加 package.json 文件用于保存 Node.js 项目的元数据。有关在 Node.js 项目中使用 package.json 的详细信息,请参阅 Creating a package.json file

在项目目录中,创建名为 package.json 的新文件。然后将此 JSON 添加到文件。

{ "dependencies": {}, "name": "aws-nodejs-sample", "description": "A simple Node.js application illustrating usage of the SDK for JavaScript.", "version": "1.0.1", "main": "sample.js", "devDependencies": {}, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "NAME", "license": "ISC" }

保存该文件。在您安装所需的模块时,文件的 dependencies 部分将完成。您可以在 GitHub 上的此处找到显示这些依赖项的示例的 JSON 文件。

步骤 4:编写 Node.js 代码

创建名为 sample.js 的新文件以包含示例代码。首先,添加 require 函数调用以包括 SDK for JavaScript 和 uuid 模块,使其可供您使用。

通过将唯一 ID 值附加到可识别的前缀(在本例中为 'node-sdk-sample-'),生成用于创建 Amazon S3 桶的唯一桶名称。您可以通过调用 uuid 模块来生成唯一 ID。然后为用于将对象上传到存储桶的 Key 参数创建名称。

创建 promise 对象以调用 AWS.S3 服务对象的 createBucket 方法。收到成功响应时,创建将文本上传到新创建存储桶所需的参数。使用另一个 promise,调用 putObject 方法来将文本对象上传到存储桶。

// Load the SDK and UUID var AWS = require("aws-sdk"); var uuid = require("uuid"); // Create unique bucket name var bucketName = "node-sdk-sample-" + uuid.v4(); // Create name for uploaded object key var keyName = "hello_world.txt"; // Create a promise on S3 service object var bucketPromise = new AWS.S3({ apiVersion: "2006-03-01" }) .createBucket({ Bucket: bucketName }) .promise(); // Handle promise fulfilled/rejected states bucketPromise .then(function (data) { // Create params for putObject call var objectParams = { Bucket: bucketName, Key: keyName, Body: "Hello World!", }; // Create object upload promise var uploadPromise = new AWS.S3({ apiVersion: "2006-03-01" }) .putObject(objectParams) .promise(); uploadPromise.then(function (data) { console.log( "Successfully uploaded data to " + bucketName + "/" + keyName ); }); }) .catch(function (err) { console.error(err, err.stack); });

此示例代码可在 GitHub 上的此处找到。

步骤 5:运行示例

键入以下命令以运行示例。

node sample.js

如果上传成功,您将在命令行中看到一条确认消息。您还可在 Amazon S3 控制台中找到存储桶和上传的文本对象。