什么是Amazon SDK for JavaScript? - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

帮助我们改进Amazon SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub.

这些区域有:Amazon SDK for JavaScriptV3 API 参考指南详细描述了Amazon SDK for JavaScript版本 3 (V3)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

什么是Amazon SDK for JavaScript?

欢迎阅读 Amazon SDK for JavaScript 开发人员指南。本指南提供了有关设置和配置Amazon SDK for JavaScript. 它还引导你了解运行各种各样的示例和教程Amazon使用服务Amazon SDK for JavaScript.

这些区域有:Amazon SDK for JavaScriptV3 API 参考指南提供 JavaScript 适用于 的 APIAmazon服务。您可以使用 JavaScript 用于构建库或应用程序的 APINode.js或浏览器。


      之间的关系 JavaScript 环境、开发工具包和 Amazon Web Services

开发工具包主要版本的维护和支持

有关维护和支持 SDK 主要版本及其基础依赖关系的信息,请参阅 Amazon SDK 和工具参考指南中的以下内容:

版本 3 中的新增功能

适用于的开发工具包版本 3 JavaScript (V3) 包含以下新功能。

模块化的软件包

用户现在可以为每项服务使用单独的软件包。

新的中间件堆栈

用户现在可以使用中间件堆栈来控制操作调用的生命周期。

此外,SDK 是用 TypeScript 编写的,它有许多优点,例如静态类型。

重要

本指南中 V3 的代码示例用 ECMAScript 6 (ES6) 编写。ES6 带来了新的语法和新功能,使你的代码更加现代化和可读性,并做更多工作。ES6 要求你使用 Node.js 版本 13.x 或更高版本。要下载并安装最新版本的 Node.js,请参阅Node.js 下载. 有关更多信息,请参阅 JavaScript ES6/常用JS 语法

模块化的软件包

适用于的开发工具包版本 2 JavaScript (V2) 要求你使用整个AmazonSDK,如下所示。

var AWS = require("aws-sdk");

如果你的应用程序使用多个 SDK,加载整个 SDK 不是问题Amazon服务。但是,如果你只需要使用几个Amazon服务,这意味着使用不需要或不使用的代码来增加应用程序的规模。

在 V3 中,你只能加载和使用个人Amazon你需要的服务。下面的示例显示了这一点,该示例允许您访问 Amazon DynamoDB (DynamoDB)。

import {DynamoDB} from "@aws-sdk/client-dynamodb";

你不仅可以加载和使用个人Amazon服务,但是你也可以只加载和使用所需的服务命令。以下示例显示了这一点,它允许您访问 DynamoDB 客户端和ListTablesCommand命令。

import { DynamoDBClient, ListTablesCommand } from @aws-sdk/client-dynamodb"
重要

你不应该将子模块导入到模块中。例如,以下代码可能会导致错误。

import {CognitoIdentity} from "@aws-sdk/client-cognito-identity/CognitoIdentity";

以下是正确的代码。

import {CognitoIdentity} from "@aws-sdk/client-cognito-identity";

比较代码大小

在版本 2 (V2) 中,一个简单的代码示例 Amazon DynamoDB 它列出了us-west-2区域可能与以下内容类似。

var AWS = require("aws-sdk"); // Set the Region AWS.config.update({region: "us-west-2"}); // Create DynamoDB service object var ddb = new AWS.DynamoDB({apiVersion: "2006-03-01"}); // Call DynamoDB to retrieve the list of tables ddb.listTables({Limit:10}, function(err, data) { if (err) { console.log("Error", err.code); } else { console.log("Tables names are ", data.TableNames); } });

V3 看起来与以下内容类似。

import { DynamoDBClient, ListTablesCommand } from "@aws-sdk/client-dynamodb"; (async function () { const dbclient = new DynamoDBClient({ region: 'us-west-2'}); try { const results = await dbclient.send(new ListTablesCommand); results.Tables.forEach(function (item, index) { console.log(item.Name); }); } catch (err) { console.error(err) } })();

这些区域有:aws-sdk软件包为您的应用程序增加了大约 40 MB。替换var AWS = require("aws-sdk")import {DynamoDB} from "@aws-sdk/client-dynamodb"将开销减少到大约 3 MB。将导入限制为仅限于 DynamoDB 客户端和ListTablesCommand命令将开销减少到 100 KB 以下。

// Load the DynamoDB client and ListTablesCommand command for Node.js import { DynamoDBClient, ListTablesCommand } from "@aws-sdk/client-dynamodb"; const dbclient = new DynamoDBClient({});

在 V3 中调用命令

您可以使用 V2 或 V3 命令在 V3 中执行操作。要使用 V3 命令,您可以导入命令和所需的Amazon服务包客户端,然后使用.send方法使用 async/await 模式。

要使用 V2 命令,请导入必需的Amazon服务包,然后使用回调或 async/await 模式直接在软件包中运行 V2 命令。

使用 V3 命令

V3 为每个命令提供了一组命令Amazon使您能够为此执行操作的服务包Amazon服务 。安装之后Amazon服务,您可以浏览项目中的可用命令node-modules/@aws-sdk/client-PACKAGE_NAME/commands folder.

您必须导入要使用的命令。例如,以下代码将加载 DynamoDB 服务,并CreateTableCommand命令。

import {DynamoDB, CreateTableCommand} from "@aws-sdk/client-dynamodb";

要在推荐的 async/await 模式中调用这些命令,请使用以下语法。

CLIENT.send(new XXXCommand)

例如,以下示例使用推荐的 async/await 模式创建 DynamoDB 表。

import {DynamoDB, CreateTableCommand} from "@aws-sdk/client-dynamodb"; const dynamodb = new DynamoDB({region: 'us-west-2'}); var tableParams = { Table : TABLE_NAME }; (async function () => { try{ const data = await dynamodb.send(new CreateTableCommand(tableParams)); console.log("Success", data); } catch (err) { console.log("Error", err); } })();
使用 V2 命令

要在适用于 JavaScript 的开发工具包中使用 V2 命令,请导入完整的Amazon服务包,如下面的代码中所示。

const {DynamoDB} = require('@aws-sdk/client-dynamodb');

要使用推荐的 async/await 模式调用 V2 命令,请使用以下语法。

client.command(parameters)

以下示例使用 V2createTable命令使用推荐的异步/等待模式创建 DynamoDB 表。

const {DynamoDB} = require('@aws-sdk/client-dynamodb'); const dymamoDB = new DynamoDB({region: 'us-west-2'}); var tableParams = { TableName : TABLE_NAME }; async function run() => { try { const data = await dymamoDB.createTable(tableParams); console.log("Success", data); } catch (err) { console.log("Error", err); } }; run();

以下示例使用 V2createBucket使用命令,使用回调模式创建 Amazon S3 存储桶。

const {S3} = require('@aws-sdk/client-s3'); const s3 = new S3({region: 'us-west-2'}); var bucketParams = { Bucket : BUCKET_NAME }; function run(){ s3.createBucket(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Location); } }) };

新的中间件堆栈

SDK 的 V2 使您能够通过将事件侦听器附加到请求的请求的整个生命周期的多个阶段修改请求。这种方法可能会使调试请求生命周期中出错的问题变得困难。

在 V3 中,您可以使用新的中间件堆栈来控制操作调用的生命周期。这种方法提供了一些好处。在对请求对象进行任何更改之后,堆栈中的每个中间件阶段都调用下一个中间件阶段。这也使堆栈中的调试问题变得容易得多,因为你可以准确地看到导致错误的调用了哪些中间件阶段。

以下示例使用中间件向 Amazon DynamoDB 客户端(我们之前创建并展示了该客户端)添加了自定义标头。第一个参数是接受的函数next,这是堆栈中要调用的下一个中间件阶段,context,这是一个包含有关被调用操作的一些信息的对象。该函数会返回一个接受的函数args,该对象包含传递给操作和请求的参数。它返回调用下一个中间件的结果args.

dbclient.middlewareStack.add( (next, context) => args => { args.request.headers["Custom-Header"] = "value"; return next(args); }, { step: "build" } ); dbclient.send(new PutObjectCommand(params));

将 SDK 与 Node.js 结合使用

Node.js 是运行服务器端的跨平台运行时 JavaScript 应用程序。您可在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上设置 Node.js 以在服务器上运行。您还可以使用 Node.js 来编写按需 Amazon Lambda 函数。

针对 Node.js 使用不同于使用适用于的开发工具包 JavaScript 在 Web 浏览器中。差别在于后者,您加载开发工具包以及获取访问特定 Web 服务所需凭证的方法都有所不同。如果在 Node.js 与浏览器之间使用特定 API 存在差别时,我们说明这些差别。

将开发工具包与Amazon Cloud9

您还可以使用适用于的开发工具包开发工具包 Node.js JavaScript 中的Amazon Cloud9IDE。有关使用的更多信息Amazon Cloud9使用适用于 JavaScript 的 SDK,请参阅将 Amazon Cloud9 与 Amazon SDK for JavaScript 结合使用.

将开发工具包与Amazon Amplify

对于基于浏览器的 Web、移动和混合应用程序,您还可以使用Amazon AmplifyGitHub 上的库. 它扩展了适用于 JavaScript 的开发工具包,提供了声明性接口。

注意

Amplify 等框架可能无法提供与适用于 JavaScript 的开发工具包相同的浏览器支持。有关详细信息,请参阅框架的文档。

将 SDK 与 Web 浏览器结合使用

所有主流 Web 浏览器支持 JavaScript 的执行。 JavaScript 在 Web 浏览器中运行的代码通常被称为客户端 JavaScript.

有关支持的浏览器列表Amazon SDK for JavaScript,请参阅支持的 Web 浏览器.

将开发工具包用于 JavaScript 在 Web 浏览器中不同于你在 Node.js 中使用它的方式。差别在于后者,您加载开发工具包以及获取访问特定 Web 服务所需凭证的方法都有所不同。如果在 Node.js 与浏览器之间使用特定 API 存在差别时,我们说明这些差别。

在 V3 中使用浏览器

V3 允许您捆绑并在浏览器中仅包含适用于的 SDK JavaScript 您需要的文件,减少开销。

要将 SDK 的 V3 用于 JavaScript 在你的 HTML 页面中,你必须捆绑所需的客户端模块和所有必需的 JavaScript 函数变成单个 JavaScript 文件使用 Webpack,然后将其添加到<head>你的 HTML 页面。例如:

<script src="./main.js"></script>
注意

有关 Webpack 的更多信息,请参阅使用 webpack 捆绑应用程序.

要将 SDK 的 V2 用于 JavaScript 而是添加一个指向 V2 SDK 的最新版本的脚本标签。有关更多信息,请参阅 。https://docs.amazonaws.cn/sdk-for-javascript/v2/developer-guide/getting-started-browser.html#getting-started-browser-run-sample适用于的 SDK JavaScript V2 开发人员指南。

常见用例

将开发工具包用于 JavaScript 在浏览器脚本中,实现了多种颇具吸引力的使用案例。此处介绍了几个想法,您可在浏览器应用程序中纳入这些想法,使用适用于 JavaScript 访问各种 Web 服务。

  • 构建自定义控制台Amazon在此服务中,您可以跨区域和服务访问并组合功能,从而最好地满足您的组织或项目需求。

  • 使用 Amazon Cognito Identity 允许对您的浏览器应用程序和网站的经身份验证用户的访问,包括使用来自 Facebook 和其他提供商的第三

  • 使用 Amazon Kinesis 实时处理点击流或其他营销数据。

  • 使用 Amazon DynamoDB 实现无服务器数据持久性,例如针对网站访客或应用程序用户的单独用户首选项。

  • 使用 Amazon Lambda 封装专有逻辑,您可以从浏览器脚本调用逻辑而无需下载和向用户泄露您的知识产权。

关于示例

您可以浏览开发工具包 JavaScript 中的示例Amazon代码示例存储库.

资源

除了本指南外,还有以下适用于的开发工具包的在线资源: JavaScript 开发人员: