【发布时间】:2020-04-20 03:16:59
【问题描述】:
从我的 Angular 8 应用程序中,我想调用托管在 AWS API Gateway 上的 REST 端点。端点的授权是AWS_IAM,表示请求需要签名。
如何在 Angular 中完成签名请求?有一个流行的 JavaScript 包 aws4 (https://www.npmjs.com/package/aws4),这将是我的首选。但是,我无法在我的 Angular 应用程序中使用这个 JS 包。这就是我所做的:
-
npm install aws4在 Angular 项目文件夹中 -
import * as aws4 from '../../../node_modules/aws4/aws4.js';在我的 api.service.ts(这是用于调用 API 的角度服务)中。
在我的 API 服务中使用 sign 方法时
const signedRequest = aws4.sign(opts, {
accessKeyId: accessKey,
secretAccessKey: secretKey,
sessionToken: session})
我收到以下错误:
未捕获的 ReferenceError:缓冲区未定义在 Object../node_modules/core-util-is/lib/util.js at _webpack_require_
我也尝试在我的 API 服务中使用声明 declare var aws4: any而不是导入,但是我总是收到上述错误。
如何将包 aws4 导入 Angular 8,或者如何在 Angular 8 应用程序中为 AWS 生成签名请求而不执行每个步骤(这意味着我想使用库)。
更新: 添加缓冲区后,我收到以下错误:
未捕获的类型错误:无法读取未定义的属性“切片” 在 Object../node_modules/readable-stream/lib/_stream_writable.js (_stream_writable.js:57) 在 webpack_require (bootstrap:79) 在 Object../node_modules/readable-stream/readable-browser.js (可读-browser.js:4) 在 webpack_require (bootstrap:79) 在 Object../node_modules/stream-browserify/index.js (index.js:28) 在 webpack_require (bootstrap:79) 在 Object../node_modules/hash-base/index.js (index.js:3) 在 webpack_require (bootstrap:79) 在 Object../node_modules/md5.js/index.js (index.js:3) 在 webpack_require (bootstrap:79)
【问题讨论】:
-
如果您无法使用当前版本的 aws4 进行这项工作,那么您可以考虑安装不依赖且不依赖 Buffer 的旧版本。跨度>
标签: javascript angular typescript amazon-web-services api