问题标签 [aws-sdk-nodejs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
29980 浏览

amazon-web-services - 从 AWS Lambda 调用 aws-cli

有什么方法可以在 AWS Lambda 中执行 aws-cli 吗?好像没有预装。(我已经通过Node.js子进程检查了“which aws”,它不存在。)</p>

0 投票
9 回答
211372 浏览

javascript - 如何从 Node.js 中的 S3 getObject 获得响应?

在 Node.js 项目中,我试图从 S3 取回数据。

当我使用getSignedURL时,一切正常:

我的参数是:

如果我将 URL 输出到控制台并将其粘贴到 Web 浏览器中,它会下载我需要的文件。

但是,如果我尝试使用getObject我会得到各种奇怪的行为。我相信我只是使用不正确。这是我尝试过的:

输出:

所以看起来这工作正常。但是,当我在其中一个 s 上放置断点时console.log,我的 IDE (NetBeans) 会引发错误并拒绝显示数据的值。虽然这可能只是 IDE,但我决定尝试其他方式来使用getObject.

这不会输出任何东西。放一个断点表明代码永远不会到达任何一个console.logs。我也试过:

但是,这也不会输出任何内容,并且放置断点表明console.log永远不会到达。

我究竟做错了什么?

0 投票
4 回答
10327 浏览

amazon-web-services - 尝试使用 KMS 在 Lambda 函数中解密密文会导致超时

使用 AWS CLI 从命令行解密密文时,密文被解密而不会出现问题:

当尝试从 js 脚本执行此操作时,此解密操作也可以在本地工作:

但是,当尝试在 AWS Lambda 函数的上下文中使用与上述几乎完全相同的代码执行此操作时,函数的调用会导致超时:

超时日志:

笔记:

  • 如果我注释掉对的调用kms.decrypt并尝试对console.logparams任何东西,那么这些值将毫无问题地输出。调用似乎存在某种问题kms.decrypt,并且没有返回超出超时的实际错误。
  • 附加到调用 lambda 函数的角色的策略包含附加的策略AWSLambdaVPCAccessExecutionRole,以及以下附加的内联策略:

policygen-lambda_basic_execution_and_kms_decrypt-201611131221

  • 我已经编辑了代码中的任何识别信息。
0 投票
0 回答
704 浏览

javascript - S3.getSignedUrl 异步调用大量对象的策略?

我需要从 S3 向用户显示大量(几千张)图像。

由于我使用的是 EC2 实例凭证,因此我必须getSignedUrl异步调用。

目前,我有 2 个解决方案,但它们提供的性能大致相同。

  1. new Promise我为每个getSignedUrl电话创建一个。
  2. 我使用原子计数器来跟踪异步回调并setInterval定期检查计数器直到完成。

这两种方法都没有明显的性能差异(在 Node 6.9.1 中),大约需要 15 秒才能完成大约 8k 次getSignedUrl调用。

我想知道是否有更好的方法来解决这个问题?有没有办法getSignedUrl使用 EC2 实例配置文件凭证同步(快速)调用?或者获得一个可以签署我所有图像的签名密钥?

0 投票
2 回答
1476 浏览

aws-sdk - 如何在 AWS API Getaway 中将 API 密钥添加到使用计划

我在创建与 AWS API Getaway 中的使用计划关联的API 密钥时遇到问题(使用 AWS SDK for node.js)。

在 AWS 控制台中,您可以通过此按钮将 API 密钥附加到使用计划: 在此处输入图像描述

但是我在AWS SDK 文档中找不到类似的功能

0 投票
1 回答
2449 浏览

node.js - 如何收听 AWS IOT Thing Shadow 更新

我有一个 THING 和一个 APP 使用 AWS IOT 连接在一起,两者都使用AWS IOT SDK for Node.js。THING 有一个set_temp可以设置的温度 ( ) 和一个温度传感器 ( actual_temp)。

THING 监听$aws/things/THING_ID/shadow/updates/delta/MQTT 主题。$aws/things/THING_ID/shadow/updates/APP使用以下消息发布主题:

此 MQTT 消息传播到事物影子,然后传播到事物本身。但是,当 THING 报告有关该$aws/things/THING_ID/shadow/updates/主题的以下内容时:

... Thing Shadow 收到它,但它不会将消息传播到 APP。这对 来说很好set_temp,因为它实际上并不需要传播回 APP。但是当actual_temp变化时,它应该传播回APP,但它永远不会。

根据AWS IOT 文档,这应该可行。他们甚至说在 THING 的消息中发送包含“ desired: null”。

你怎么能在不投票的情况下“倾听”Thing Shadow?要么我做错了,要么 AWS 在他们的 IOT 平台上有一个大漏洞。

更新(包括实际代码):

App.js:

Device.js:

0 投票
1 回答
586 浏览

angularjs - AWS S3 NodeJS 禁止或连接休息

我的本地机器上有一个 NodeJS 应用程序。我正在尝试使用 Amazon S3 服务对其进行设置,但不幸的是,它不起作用。我能够获得签名的 URL,但是在上传文件时,AWS 返回 Forbidden 403(它多次断开连接,但在我从 CORS 中删除超时选项后停止)

到目前为止我做了什么:

  1. 使用休闲策略创建了新用户:

    /li>
  2. 为该用户创建了新的访问密钥

  3. 将存储桶的 CORS 更新为

    /li>
  4. 更新了存储桶策略

    /li>
  5. 在 NodeJS 中创建调用以签名 url(使用 Express)

    /li>
  6. 上传文件

    /li>

还有一件事我不明白:我创建了一个用户并授予它对 s3 的访问权限,但我无法将用户分配给存储桶中的存储桶权限。访问策略中是否缺少某些内容?

提前感谢您的任何提示!

0 投票
1 回答
183 浏览

node.js - 如何使用 doClient.scan() 获取保存在 dynamo db 中的节点中的元素计数

在 doClient.scan() 中是否有任何方法可以设置存储在特定节点中的元素计数?

根据下面的示例,我需要在下面的结果中添加一个新节点“ questionCount ”,该结果应包含节点questionList中的reference_id总数。除了迭代结果并添加新节点之外,还有其他方法吗?

预期产出

0 投票
1 回答
846 浏览

amazon-web-services - 是否可以使用 AWS 用户池同步触发器?

问题

当有人通过在 dynamodb 表中创建条目的联合身份注册时,我触发了一个 lambda 函数。

我希望当用户通过关联的用户池注册(我正在考虑发布确认)时发生相同的功能(或类似功能)。

背景(我尝试过的)

我已将联合身份链接到用户池,但链接到 Cognito 触发器的 lambda 不会被用户池调用。我认为它可能不支持相同的流程(是这种情况吗?)并尝试将自定义工作流触发器添加到用户池以进行后期确认。尽管用户在 Cognito 中显示为已确认,但我只是收到一条错误消息(错误请求 400),说明“{“__type”:“NotAuthorizedException”,“消息”:“用户无法确认。”}。

我查看了文档,但没有看到很多清晰的示例。我发现最好的是一封邮件确认邮件,我对其进行了修改以包含一个基本的发电机调用,如下所示:

我查看了类似的问题,我发现最接近的是这个 先前的问题 ,尽管它不包含工作代码片段。我尝试了一些变化,但没有运气!

正如那里所说,我还看到了其他示例中使用的回调,因此最好弄清楚首选和工作代码应该是什么样子!

我还想知道它是否应该在 context.done 中以特定格式返回数据,因为我看到了一些设置响应,如下所示:

非常感谢!

0 投票
1 回答
209 浏览

node.js - 使用 JS SDK 以编程方式生成临时 AWS API 密钥

我正在使用AWS Javascript SDK创建 API 密钥。我现在想在短时间内创建 API 密钥,比如 15 天,并且需要在那段时间之后删除/禁用密钥。

有没有最好的方法以编程方式最好使用他们的 JavaScript SDK 的功能?