Node.js 入门 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

我们已宣布即将终止对 Amazon SDK for JavaScript v2 的支持。建议您迁移到 Amazon 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。有关下载和安装Amazon SDK for JavaScript的信息,请参阅安装 SDK for JavaScript

步骤 2:配置凭证

您需要向 Amazon 提供凭证,这样只有您的账户及其资源可由 SDK 访问。有关获取您的账户凭证的更多信息,请参阅使用 Amazon 进行 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 控制台中找到存储桶和上传的文本对象。