7

我正在使用:https ://github.com/aws-amplify/amplify-js

是否有任何工作示例如何使用经过身份验证的 AWS 访问?我正在使用这个:

Amplify.configure({
        Auth: {
            identityPoolId: configs.broker.identityPoolId,
            region: configs.broker.aws_pubsub_region,
            userPoolId: configs.broker.userPoolId,
            userPoolWebClientId: configs.broker.userPoolWebClientId,
        }
});

Amplify.addPluggable(new AWSIoTProvider(configs.broker));

Auth.signIn(configs.broker.username, configs.broker.password)
    .then(user => {                
        resolve({ code: 200, message: 'Authorized access to AWS is used' })
    })
    .catch(singInErr => resolve({ code: 500, message: singInErr.message }));

如果没问题(没问题):

    PubSub.publish(configs.broker.topic, JSON.stringify(data))
         .then(res => resolve({
              code: 200,
              message: 'OK'
         }))
         .catch(err => resolve({
              code: 500,
              message: err.toString()
         }));

但我不断得到:

[未处理的承诺拒绝:NotAuthorizedException:此身份池不支持未经身份验证的访问。]

4

1 回答 1

7

您是否设置了身份验证amplify-cli?我对 graphql 和 cognito 有类似的问题。通过转到身份池设置并设置Unauthenticated role和来解决它Authenticated role。我刚刚使用了通过放大 cli 创建的那些。

我正在尝试从记忆中回忆这一点,因此可能缺少某些部分。但粗略的步骤是:

  1. 转到https://eu-west-1.console.aws.amazon.com/cognito/federated
  2. 从顶部栏中选择您所在的区域。
  3. 如果您有身份池,您应该看到一个表格。在它上方有一个指向其设置的链接。点击那个。
  4. 在右上角,下面SupportEdit Identity Pool。点击那个。
  5. 您应该会看到一个带有两个选项Unauthenticated role和的屏幕Authenticated role。单击选择框并选择适当的角色。如果您创建了放大堆栈,它应该有两个角色,其中包含单词unauthdRoleauthRole选择那些。

它现在应该可以工作了。这是假设您拥有正确的身份池和用户池设置。

于 2018-09-07T08:14:37.077 回答