Я пытаюсь получить базовую аналитику для пула пользователей Cognito. Это казалось достаточно простым: я создал проект в Pinpoint, затем перешел к своему пулу пользователей, перешел в «Общие настройки» > «Аналитика», нажал кнопку «Добавить аналитику», выбрал клиент приложения Amazon Cognito, который использует мое приложение, и указал на Pinpoint. проект, который я только что создал, установил флажок «Поделиться данными профиля пользователя» (хотя я предполагаю, что это не обязательно), и в нем было сообщение о том, будет ли использоваться роль IAM и так далее. Нажал «Сохранить», ошибки нет, я предполагал, что в этот момент я начну видеть Analytics в Pinpoint, но абсолютно ничего не появляется. У меня есть сообщение о том, что я еще не включил какие-либо функции, но я не вижу никаких функций. Мне нужно включить. На данный момент меня не волнуют кампании, а затем в разделе «Аналитика приложений» кажется, что вы вручную обновляете свое мобильное или веб-приложение, чтобы что-то отправлять, но я подумал, что это было, если вам нужно что-то настроить. Я ошибаюсь? Будет ли эта интеграция работать, только если вы измените свое веб-приложение, чтобы явно отправлять данные в Pinpoint? Я просто предположил, что если я подключу Cognito и Pinpoint, аналитика покажет, поскольку Cognito, очевидно, знает, что люди входят в систему, и вам не нужно вручную делать какой-то дополнительный запрос.
@syumaK Я использую веб-приложение, но не Amplify. Я до сих пор не уверен, почему это имеет значение. Если вы подписываете людей или выполняете аутентификацию с помощью Cognito, разве Cognito не сможет сообщить об этом, не используя ничего другого? Ничего страшного, если ответ "нет", просто мне это было непонятно. Казалось, что вы просто сможете соединить их, и данные будут автоматически передаваться из Cognito в Pinpoint.
Из своего исследования я выяснил, что, поскольку вы используете веб-приложение без использования платформы AWS Amplify, вам необходимо добавить в приложение дополнительные строки кода, чтобы отправлять данные аналитики аутентификации Cognito в ваш проект Amazon Pinpoint.
Если вы используете Javascript SDK, вы можете добавить фрагмент кода свойства initate-Auth в ваше внешнее приложение:
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
var params = {
AuthFlow: "USER_PASSWORD_AUTH",
ClientId: 'STRING_VALUE', /* the client ID attached to the Pinpoint project */
AuthParameters: {
'USERNAME': 'STRING_VALUE',
'PASSWORD': 'STRING_VALUE'
},
AnalyticsMetadata: {
AnalyticsEndpointId: 'STRING_VALUE' /* the Pinpoint project ID */
},
};
cognitoidentityserviceprovider.initiateAuth(params, function(err, data) {
if (err) console.info(err, err.stack); // an error occurred
else console.info(data); // successful response
});
Если вы используете интерфейс командной строки (для проверки/тестирования), вы можете выполнить следующую команду AWS CLI инициировать-аутентификацию ниже:
$ aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=STRING_VALUE,PASSWORD=STRING_VALUE --client-id STRING_VALUE --analytics-metadata AnalyticsEndpointId=STRING_VALUE
Суть в том, что:
Интеграция Amazon Cognito с Amazon Pinpoint работает только для приложений (клиентов), которые используют Cognito SDK для мобильных приложений (AMS Mobile SDK или JavaScript — библиотека JavaScript AWS Amplify).
Если я использую идентификатор проекта, он не будет работать правильно. В качестве значения для AnalyticsEndpointId необходимо использовать пользовательский UUID.
Просто примечание к ответу syumaK: да, вам нужно обновить вызов initAuth вашего кода, чтобы включить свойство AnalyticsMetadat. Однако я обнаружил, что AnalyticsEndpointId НЕ ДОЛЖЕН быть идентификатором проекта Pinpoint.
Я полагаю, что, поскольку вы уже настроили Cognito для интеграции с проектом Pinpoint, он знает, в какой проект Pinpoint вы уже отправляете метрики. AnalyticsEndpointId должен быть уникальным идентификатором для входа.
Документация определенно ненадежная здесь. cli от syumaK, похоже, описывает это иначе, чем Cognito API Reference
Что случилось со мной, так это то, что я использовал идентификатор проекта pinpoint, и когда я вхожу в систему с несколькими пользователями, он думает, что это один и тот же. Ежедневное количество активных пользователей остается на уровне единицы. Служба поддержки AWS пояснила, что это должен быть уникальный идентификатор для каждого пользователя. Итак, после изменения идентификатора на адрес электронной почты пользователя я начинаю получать точные цифры для ежедневных активных пользователей.
Также кажется, что это примерно так же полезно, как и для того, чтобы не использовать Cognito SDK для мобильных приложений или Amplify. Вы можете получить только такую информацию, как ежедневные/ежемесячные активные пользователи, показатели аутентификации. У вас нет возможности дальнейшей разбивки по сегментам и т. д.
два импортных вопроса: используете ли вы AWS Amplify или AWS Mobile SDK? и вы используете собственное мобильное приложение или веб-приложение?