0

我在与 mobilehub 项目绑定的离子项目中配置了放大。

api 是使用无服务器框架创建的:

functions:
  device:
      handler: handler.device
      events:
        - http:
            path: devices
            method: get
            authorizer: aws_iam
        - http:
            path: devices
            method: put
            authorizer: aws_iam
        - http:
            path: devices
            method: post
            authorizer: aws_iam
        - http:
            path: devices
            method: delete
            authorizer: aws_iam

API 有效,据我所知,这些 API 与我的 cognito 用户池相关联。事实上,当我在该 API 上调用 get 时,我会收到一条“缺少令牌”消息。

我正在尝试在 Ionic 应用程序中实现 API 调用。该应用程序是 Ionicaws模板,因此它能够毫无问题地登录到 cognito。

我从 mobilehub 页面下载了“aws-exports.js”文件,包含在我的源代码中并导入

import awsmobile from '../../aws-exports';
import Amplify, { API } from 'aws-amplify';

ionViewDidLoad(){

    Amplify.configure(awsmobile);
    console.log(Amplify);

    let apiName = 'dev-parameters';
    let path = '/devices';

    API.get(apiName, path).then(response => {

      debugger;
      console.log(response);
    });

}

但是,我可以从进行的 http 调用中看到,进行OPTIONS了返回 403 的调用。

要求:

:method GET
:authority  cx1smjqtj5.execute-api.eu-west-1.amazonaws.com
:scheme https
:path   /dev/devices
user-agent  Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36     (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 OPR/50.0.2762.67
upgrade-insecure-requests   1
accept      text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=    0.8
accept-encoding gzip, deflate, br
accept-language en-GB,en-US;q=0.9,en;q=0.8

回复:

{
    "message": "Missing Authentication Token"
}

我真的不明白我在这里错过了什么或做错了什么。

4

1 回答 1

0

在这个配置中一切都是正确的。我能够通过在 typescript 中编译 aws-export.js(在将其重命名为 aws-exports.ts 之后)使其工作。之后,API 调用被正确验证。

tsc aws-export.ts生成一个新的 aws-exports.js 并且模块是正确导入的。

于 2018-02-02T17:48:33.540 回答