AWS Pinpoint не получает события - PullRequest
0 голосов
/ 20 февраля 2020

Я создал собственное приложение, которое использует AWS User pool в eu-central-1 для аутентификации. Теперь я хочу добавить аналитику в свое приложение. Я создал Pinpoint проект в us-east-1 регионе (потому что он поддерживается только в этом регионе), а в User pool -> General setting -> Analytics я создал отображение между My User pool и моим Pinpoint проектом. Я отметил " Обмен данными профиля пользователя с Amazon Pinpoint " и предоставил Role с этим Policy:

    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "mobiletargeting:PutEvents"
            ],
            "Resource": [
                "arn:aws:mobiletargeting:us-east-1:ACCOUNT_ID:apps/PINPOINT_APP_ID/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "mobiletargeting:UpdateEndpoint"
            ],
            "Resource": [
                "arn:aws:mobiletargeting:us-east-1:ACCOUNT_ID:apps/PINPOINT_APP_ID/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "mobileanalytics:PutEvents"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

Я также создал Identity Pool (Федеративные удостоверения) в eu-central-1, который разрешает неаудированную учетную запись, и использовал тот же Role, как описано для сопоставления между User pool и Pinpoint проектом. В моем приложении я использую его следующим образом:

import Amplify, { Auth, Analytics } from "aws-amplify";

Amplify.configure({
  // To get the AWS Credentials, you need to configure
  // the Auth module with your Cognito Federated Identity Pool
  Auth: {
    // identityPoolId: "eu-central-1:IDENTITY_POOL_ID",
    region: "eu-central-1",
    userPoolId: "USER_POLL_ID",
    userPoolWebClientId: "USER_POOL_CLIENT_ID"
  },
  Analytics: {
    disabled: false,
    autoSessionRecord: true,

    AWSPinpoint: {
      appId: "PINPOINT_APP_ID",
      region: "us-east-1",
      mandatorySignIn: false,
    }
  }
});

export default class App extends Component {
  onPress() {
     Analytics.record({ name: "BUY" });
  }
  render() {
    return (
      <View style={styles.container}>
        <Button title={"Push me"} onPress={this.onPress} />
      </View>
    );
  }
}

При предоставлении идентификатора Identity Pool в Amplify.configure() я вижу на графике Identity Pool новую неаутентифицированную сущность для каждого pu sh из кнопка, но нет событий в Pinpoint. Если я не предоставлю Identity Pool id в Amplify.configure(), я получу AWSPinpointProvider - событие записи не выполнено. CredetialsError: Отсутствуют учетные данные в конфигурации.

Как я могу заставить эту работу работать?

...