Я создал собственное приложение, которое использует 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: Отсутствуют учетные данные в конфигурации.
Как я могу заставить эту работу работать?