bugfix> amazon-web-services > 投稿

Cognitoユーザープールの基本的な分析を取得しようとしています。簡単そうに見えました。Pinpointでプロジェクトを作成してから、ユーザープールに移動し、[一般設定]>[Analytics]に移動し、[Analyticsの追加]ボタンをクリックして、アプリが使用するAmazon Cognitoアプリクライアントを選択し、Pinpointをポイントしました。作成したばかりのプロジェクトで、[ユーザープロファイルデータを共有する]チェックボックスをオンにすると(絶対に必要というわけではないと思いますが)、IAMロールを使用するかどうかなどのメッセージが表示されました。 [保存]をクリックしましたが、エラーは発生しませんでした。この時点で、PinpointでAnalyticsが表示されると思いましたが、何も表示されません。まだ機能を有効にしていないというメッセージが表示されますが、機能が表示されません。有効にする必要があります。今のところキャンペーンは気にしないので、アプリケーション分析では、モバイルアプリやウェブアプリを手動で更新して何かを送信するようになっているようですが、それは何かをカスタマイズする必要がある場合だと思いました。私は間違っていますか?この統合は、Webアプリを変更してPinpointに明示的に送信する場合にのみ機能しますか? Cognitoを接続してPinpointを接続すると、手動で追加のリクエストを行う必要がなく、ユーザーがログインしていることをCognitoが明らかに認識しているため、分析が表示されると思いました。

回答 2 件
  • 私の調査から、AWS Amplifyフレームワークを使用せずにWebアプリケーションを使用しているため、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.log(err, err.stack); // an error occurred
       else     console.log(data);           // successful response
     });
    
    

    上記のコードスニペットでは、Pinpointプロジェクト/アプリケーションIDが「」の一部として追加されています。AnalyticsMetadataクライアントがCognitoユーザープールに対してAPI呼び出し(サインイン、サインアップなど)を行うときのパラメーター。したがって、API呼び出しにはピンポイントプロジェクトIDが添付され、Cognitoはその情報を使用して送信できます。データをPinpointプロジェクトに送信します。この重要な手順がないと、分析データはPinpointに送信されず、説明した動作になります。

    CLIを使用している場合(検証/テストの目的で)、以下のAWSCLIinitiate-authコマンドを実行できます。

    $ 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 integration with Amazon Pinpoint only works for apps (clients) that are using Cognito SDK for Mobile Apps (AWS Mobile SDKs or JavaScript - AWS Amplify JavaScript library).

  • syumaKの応答に注意してください。はい、AnalyticsMetadatプロパティを含めるようにコードのinitAuth呼び出しを更新する必要があります。ただし、AnalyticsEndpointIdをPinpointプロジェクトIDにするべきではないことがわかりました。

    ピンポイントプロジェクトと統合するようにCognitoを既に構成しているので、メトリックを送信しているピンポイントプロジェクトがすでにわかっていると思います。 AnalyticsEndpointIdは、ログインの一意の識別子である必要があります。

    ここのドキュメントは間違いなく不安定です。 syumaKのclioneは、CognitoAPIリファレンスとは異なる方法で説明しているようです。

    私に起こったことは、ピンポイントのプロジェクトIDを使用したことでした。複数のユーザーでログインすると、同じものだと思います。毎日のアクティブユーザーは1人のままです。 AWSサポートは、各ユーザーの一意の識別子である必要があることを明確にしました。そのため、IDをユーザーの電子メールに変更した後、毎日アクティブなユーザーの正確な数値を取得し始めています。

    また、これは、Cognito SDK for MobileAppsまたはAmplifyを使用しない場合とほぼ同じくらい便利なようです。毎日/毎月のアクティブユーザー、認証メトリックなどの情報のみを取得できます。セグメントなどでさらに細かく分類することはできません。

あなたの答え