什么是AWS SDK for JavaScript? - AWS SDK for JavaScript

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

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

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

什么是AWS SDK for JavaScript?

欢迎阅读 AWS SDK for JavaScript 开发人员指南。本指南提供有关设置和配置AWS SDK for JavaScript。它还将引导您完成运行各种AWS服务使用AWS SDK for JavaScript。

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


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

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

有关维护和支持开发工具包主要版本及其基础依赖关系的信息,请参阅AWS开发工具包和工具引用指南中的以下内容:

版本 3 中的新增功能

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

模块化的软件包

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

新建中间件堆栈

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

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

模块化的软件包

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

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

如果您的应用程序正在使用许多AWS服务。但是,如果您只需要使用几个AWS服务,这意味着使用不需要或使用的代码来增加应用程序的大小。

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

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

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

const { DynamoDBClient, ListTablesCommand } = require('@aws-sdk/client-dynamodb')
重要

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

const {CognitoIdentity} = require("@aws-sdk/client-cognito-identity/CognitoIdentity")

下面是正确的代码。

const {CognitoIdentity} = require("@aws-sdk/client-cognito-identity")

比较代码大小

在版本 2 (V2) 中,一个简单的代码示例列出了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 看上去与以下内容类似。

(async function () { const { DynamoDBClient, ListTablesCommand }= require('@aws-sdk/client-dynamodb'); 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 添加到您的应用程序。正在替换varAWS = require("aws-sdk")替换为const {DynamoDB} = require("@aws-sdk/client-dynamodb")将开销减少到约 3 MB。将导入限制为仅限于 DynamoDB 客户端和ListTablesCommand命令将开销降低到 100 KB 以下。

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

在 V3 中调用命令

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

要使用 V2 命令,您可以导入所需的AWS服务包,并使用回调或异步/等待模式直接在软件包中运行 V2 命令。

使用 V3 命令

V3 为每个AWS服务包,使您能够执行该操作AWS服务 。在安装AWS服务中,您可以浏览工程的node-modules/@aws-sdk/client-PACKAGE_NAME/commands folder.

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

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

要在推荐的异步/等待模式中调用这些命令,请使用以下语法。

CLIENT.send(newXXXCommand)

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

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

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

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

要以推荐的异步/等待模式调用 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 应用程序。您可以在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上设置 Node.js,以在服务器上运行。您还可以使用 Node.js 来编写按需 AWS Lambda 函数。

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

将开发工具包与AWS Cloud9

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

将开发工具包与AWS Amplify

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

注意

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

将开发工具包与 Web 浏览器结合使用

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

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

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

在 V3 中使用浏览器

V3 使您能够在浏览器中仅绑定和包含所需 JavaScript 文件的 SDK,从而减少开销。

要在 HTML 页面中使用适用于 JavaScript 的开发工具包的 V3,您必须使用 Webpack 将所需的客户端模块和所有必需的 JavaScript 函数捆绑到一个 JavaScript 文件中,然后将其添加到<head>你的 HTML 页面。例如:

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

有关 Webpack 的更多信息,请参阅。将应用程序与 webpack 捆绑

要使用适用于 JavaScript 的软件开发工具包的 V2,您可以添加一个指向最新版本的 V2 软件开发工具包的脚本标记。有关更多信息,请参阅 。https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/getting-started-browser.html#getting-started-browser-run-sample适用于 JavaScript 的开发工具包 v2 开发工具包开发工具包

常见使用案例

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

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

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

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

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

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

关于示例

您可以浏览软件开发工具包中的AWS代码示例存储库

Resources

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