您在哪里为React Native项目中的AWS Pinpoint设置凭证配置?

时间:2019-07-15 21:58:41

标签: react-native aws-amplify aws-pinpoint

当我尝试启动我的react-native项目时,出现以下错误: AWSPinpointProvider记录事件失败:凭证错误缺少配置中的凭证。我尚未使用记录功能,因此我认为这是来自configure函数。我是React Native和AWS的新手,所以我应该在哪里配置凭证?我有一个〜/ .aws / credentials和〜/ .aws / config文件,并且我可以连接到cognito,这只是导致问题的原因。当然,我正在使用aws放大。任何帮助将不胜感激。

import { withAuthenticator } from 'aws-amplify-react-native';  
import Auth from '@aws-amplify/auth';
import Analytics from '@aws-amplify/analytics';
import awsconfig from './aws-exports';
Auth.configure(awsconfig);
Analytics.configure(awsconfig);

我希望能在Pinpoint中看到诸如应用启动之类的事件。我至少希望它不会使应用程序崩溃。

2 个答案:

答案 0 :(得分:0)

首次使用AWS Amplify配置React-Native项目时(即使用命令“ amplify init” ),您可能会在终端上看到以下内容: “?您要使用AWS配置文件吗?(是/否)”

*如果选择“ Y” ,则在“ amplify / .config” 文件夹中,一个名为“ local-aws-info.json”的JSON文件将会被创建,您的凭证将从中获取。对于此选项,此“ local-aws-info.json” 文件的结构类似于以下内容:

{
    "dev": {
        "configLevel": "project",
        "useProfile": true,
        "profileName": "syumaK"
    }
}

对于此选项,放大在配置awscli时将使用指定的AWS配置文件。

如果选择“ n” ,系统将提示您输入 “访问密钥” “秘密密钥” “区域” 。在“ amplify / .config” 文件夹中,将创建一个名为“ local-aws-info.json” 的JSON文件,从中可以获取您的凭据。对于此选项,此“ local-aws-info.json” 文件的结构类似于以下内容:

{
    "dev": {
        "configLevel": "project",
        "useProfile": false,
        "awsConfigFilePath": "/Users/syumaK/.amplify/awscloudformation/AjWphtMBs0"
    }
}

另外,我的“ App.js” 文件导入语句如下所示:

import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { withAuthenticator } from 'aws-amplify-react-native';
import Amplify from '@aws-amplify/core';
import { Analytics } from 'aws-amplify'; 
import aws_exports from './aws-exports'; 
Amplify.configure(aws_exports); Analytics.configure(aws_exports);
window.LOG_LEVEL = 'DEBUG';

我已使用以下环境规范测试了上述建议:

  • 操作系统:Mac High Sierra v10.13.6
  • “ aws-amplify”:“ ^ 1.1.28”
  • “ aws-amplify-react-native”:“ ^ 2.1.12”
  • “反应”:“ 16.8.3” “本机”:“ 0.59.9”

答案 1 :(得分:0)

查看调试日志后,这是由于您的身份验证配置不允许未经身份验证的应用程序使用所致。解决方法是将您的auth设置在amplify cli中,以允许未经身份验证的使用,并且使用例如withAuthenticator hoc禁止未经身份验证进入您的应用程序。