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

Amazon SDK for JavaScriptV3 API 参考指南详细描述了Amazon SDK for JavaScript版本 3 (V3) 的所有 API 操作。

从 2022 年 10 月 1 日起,Amazon SDK for JavaScript(v3) 将终止对 Internet Explorer 11(IE 11)的支持。有关详细信息,请参阅 Amazon SDK for JavaScript(v3) 中宣布终止对 Internet Explorer 11 的支持

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

什么是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)

例如,以下示例使用推荐的异步/等待模式创建一个 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 命令

在 SDK 中使用 V2 命令 JavaScript,你导入完整的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));

将软件开发工具包与 Node.js 一起使用

Node.js 是一个用于运行服务器端的跨平台运行库 JavaScript 应用程序。您可以在亚马逊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,请参阅将 Amazon Cloud9 与 Amazon SDK for JavaScript 结合使用.

将开发工具包与Amazon Amplify

对于基于浏览器的 Web、移动和混合应用程序,您还可以使用Amazon Amplify上的库 GitHub. 它扩展了 SDK JavaScript,提供声明式接口。

注意

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

将开发工具包与 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适用于的开发工具包 JavaScript v2 开发人员指南的第一个版本。

常见用例

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

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

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

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

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

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

关于示例

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

资源

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