Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

Amazon Pinpoint が推奨モデルを呼び出すための Lambda 関数を作成する

フォーカスモード
Amazon Pinpoint が推奨モデルを呼び出すための Lambda 関数を作成する - Amazon Pinpoint

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Lambda 関数の作成方法については、『AWS Lambda デベロッパーガイド』の「開始方法」を参照してください。関数を設計および開発する際には、次の要件とガイドラインに留意してください。

入力イベントデータ

Amazon Pinpoint が推奨モデルの Lambda 関数を呼び出すと、メッセージを送信しているキャンペーンまたはジャーニーの構成およびその他の設定を含むペイロードが送信されます。ペイロードには、Endpoints オブジェクトが含まれます。このオブジェクトは、エンドポイント ID をメッセージ受信者のエンドポイント定義に関連付けるマップです。

エンドポイント定義は、Amazon Pinpoint API のエンドポイントリソースで定義された構造を使用します。ただし、RecommendationItems という名前の動的な推奨属性のフィールドも含まれます。この RecommendationItems フィールドには、Amazon Personalize キャンペーンから返された、エンドポイントに対する推奨商品が 1 つ以上含まれます。このフィールドの値は、1~5 の推奨項目の順序付き配列(文字列)です。配列内の商品数は、エンドポイントまたはユーザーごとに取得するよう Amazon Pinpoint を設定した推奨商品の数によって異なります。

例:

"Endpoints": { "endpointIDexample-1":{ "ChannelType":"EMAIL", "Address":"sofiam@example.com", "EndpointStatus":"ACTIVE", "OptOut":"NONE", "EffectiveDate":"2020-02-26T18:56:24.875Z", "Attributes":{ "AddressType":[ "primary" ] }, "User":{ "UserId":"SofiaMartínez", "UserAttributes":{ "LastName":[ "Martínez" ], "FirstName":[ "Sofia" ], "Neighborhood":[ "East Bay" ] } }, "RecommendationItems":[ "1815", "2009", "1527" ], "CreationDate":"2020-02-26T18:56:24.875Z" }, "endpointIDexample-2":{ "ChannelType":"EMAIL", "Address":"alejandror@example.com", "EndpointStatus":"ACTIVE", "OptOut":"NONE", "EffectiveDate":"2020-02-26T18:56:24.897Z", "Attributes":{ "AddressType":[ "primary" ] }, "User":{ "UserId":"AlejandroRosalez", "UserAttributes":{ "LastName ":[ "Rosalez" ], "FirstName":[ "Alejandro" ], "Neighborhood":[ "West Bay" ] } }, "RecommendationItems":[ "1210", "6542", "4582" ], "CreationDate":"2020-02-26T18:56:24.897Z" } }

上記の例では、関連する Amazon Pinpoint 設定は次のとおりです。

  • 推奨モデルは、エンドポイントまたはユーザーごとに 3 つの推奨商品を取得するよう設定されています (RecommendationsPerMessage プロパティの値は 3 に設定されます)。この設定では、Amazon Pinpoint は、各エンドポイントまたはユーザーの 1 番目、2 番目、および 3 番目の推奨商品のみを取得して追加します。

  • プロジェクトは、各ユーザーの名、姓、およびユーザーの住んでいる近辺を保存するカスタムユーザー属性を使用するよう設定されます (UserAttributes オブジェクトには、これらの属性の値が含まれます)。

  • プロジェクトは、エンドポイントがプロジェクトからメッセージを受信するためのユーザーの優先アドレス (チャネル) かどうかを示すカスタムエンドポイント属性 (AddressType) を使用するよう設定されます (Attributes オブジェクトには、この属性の値が含まれます)。

Amazon Pinpoint が Lambda 関数を呼び出し、このペイロードをイベントデータとして送信すると、AWS Lambda は処理のためにそのデータを Lambda 関数に渡します。

各ペイロードには、最大 50 のエンドポイントのデータを含めることができます。セグメントに 50 以上のエンドポイントが含まれる場合、Amazon Pinpoint はすべてのデータが処理されるまで、繰り返し関数を呼び出します (最大で一度に 50 のエンドポイント)。

レスポンスデータと要件

Lambda 関数を設計および開発する際には、「機械学習モデルのクォータ」に注意してください。関数がこれらのクォータで定義された条件を満たしていない場合、Amazon Pinpoint はメッセージを処理して送信できません。

また、次の要件にも注意してください。

  • 関数は、更新されたエンドポイント定義を、入力イベントデータによって提供されたものと同じ形式で返す必要があります。

  • 更新された各エンドポイント定義には、エンドポイントまたはユーザーに対する 1~10 のカスタム推奨属性を含めることができます。これらの属性の名前は、Amazon Pinpoint で推奨モデルを設定するときに指定した属性名と一致する必要があります。

  • すべてのカスタム推奨属性は、エンドポイントまたはユーザーごとに 1 つの Recommendations オブジェクトに返す必要があります。この要件は、名前の競合が発生しないようにするのに役立ちます。Recommendations オブジェクトは、エンドポイント定義の任意の場所に追加できます。

  • 各カスタム推奨属性の値は、文字列 (1 つの値) または文字列の配列 (複数の値) である必要があります。値が文字列の配列である場合は、 RecommendationItems フィールドに示されているように、Amazon Personalize が返した推奨商品の順序を維持することをお勧めします。そうでない場合は、エンドポイントまたはユーザーに対するモデルの予測がコンテンツに反映されないことがあります。

  • 関数は、エンドポイントまたはユーザーの他の属性値を含む、イベントデータ内の他の要素を変更しないようにします。カスタム推奨属性の値のみを追加し、返すようにする必要があります。Amazon Pinpoint は、関数のレスポンスに含まれる他の値の更新を受け付けません。

  • 関数は、関数を呼び出している Amazon Pinpoint プロジェクトと同じ AWS リージョンでホストされている必要があります。関数とプロジェクトが同じリージョンにない場合、Amazon Pinpoint はイベントデータを関数に送信できません。

上記の要件のいずれかが満たされていない場合、Amazon Pinpoint はメッセージを処理して 1 つ以上のエンドポイントに送信できません。これにより、キャンペーンやジャーニーアクティビティが失敗する可能性があります。

最後に、関数に対して 256 回の同時実行数を予約することをお勧めします。

全体として、Lambda 関数は Amazon Pinpoint によって送信されたイベントデータを処理し、変更されたエンドポイント定義を返す必要があります。関数は、これを行うために Endpoints オブジェクト内の各エンドポイントを反復処理し、各エンドポイントに対して、使用するカスタム推奨属性の値を作成して設定します。Python で記述され、前述の入力イベントデータの例を続行する次の例のハンドラーで、これを示します。

import json import string def lambda_handler(event, context): print("Received event: " + json.dumps(event)) print("Received context: " + str(context)) segment_endpoints = event["Endpoints"] new_segment = dict() for endpoint_id in segment_endpoints.keys(): endpoint = segment_endpoints[endpoint_id] if supported_endpoint(endpoint): new_segment[endpoint_id] = add_recommendation(endpoint) print("Returning endpoints: " + json.dumps(new_segment)) return new_segment def supported_endpoint(endpoint): return True def add_recommendation(endpoint): endpoint["Recommendations"] = dict() customTitleList = list() customGenreList = list() for i,item in enumerate(endpoint["RecommendationItems"]): item = int(item) if item == 1210: customTitleList.insert(i, "Hanna") customGenreList.insert(i, "Action") elif item == 1527: customTitleList.insert(i, "Catastrophe") customGenreList.insert(i, "Comedy") elif item == 1815: customTitleList.insert(i, "Fleabag") customGenreList.insert(i, "Comedy") elif item == 2009: customTitleList.insert(i, "Late Night") customGenreList.insert(i, "Drama") elif item == 4582: customTitleList.insert(i, "Agatha Christie\'s The ABC Murders") customGenreList.insert(i, "Crime") elif item == 6542: customTitleList.insert(i, "Hunters") customGenreList.insert(i, "Drama") endpoint["Recommendations"]["Title"] = customTitleList endpoint["Recommendations"]["Genre"] = customGenreList return endpoint

前述の例では、AWS Lambda はイベントデータを event パラメータとしてハンドラーに渡します。ハンドラーは、Endpoints オブジェクトの各エンドポイントを反復処理し、Recommendations.Title および Recommendations.Genre という名前のカスタム推奨属性の値を設定します。return ステートメントは、更新された各エンドポイント定義を Amazon Pinpoint に返します。

前述の入力イベントデータの例を続行して、更新されたエンドポイント定義は次のとおりです。

"Endpoints":{ "endpointIDexample-1":{ "ChannelType":"EMAIL", "Address":"sofiam@example.com", "EndpointStatus":"ACTIVE", "OptOut":"NONE", "EffectiveDate":"2020-02-26T18:56:24.875Z", "Attributes":{ "AddressType":[ "primary" ] }, "User":{ "UserId":"SofiaMartínez", "UserAttributes":{ "LastName":[ "Martínez" ], "FirstName":[ "Sofia" ], "Neighborhood":[ "East Bay" ] } }, "RecommendationItems":[ "1815", "2009", "1527" ], "CreationDate":"2020-02-26T18:56:24.875Z", "Recommendations":{ "Title":[ "Fleabag", "Late Night", "Catastrophe" ], "Genre":[ "Comedy", "Comedy", "Comedy" ] } }, "endpointIDexample-2":{ "ChannelType":"EMAIL", "Address":"alejandror@example.com", "EndpointStatus":"ACTIVE", "OptOut":"NONE", "EffectiveDate":"2020-02-26T18:56:24.897Z", "Attributes":{ "AddressType":[ "primary" ] }, "User":{ "UserId":"AlejandroRosalez", "UserAttributes":{ "LastName ":[ "Rosalez" ], "FirstName":[ "Alejandro" ], "Neighborhood":[ "West Bay" ] } }, "RecommendationItems":[ "1210", "6542", "4582" ], "CreationDate":"2020-02-26T18:56:24.897Z", "Recommendations":{ "Title":[ "Hanna", "Hunters", "Agatha Christie\'s The ABC Murders" ], "Genre":[ "Action", "Drama", "Crime" ] } } }

前述の例では、関数は受け取った Endpoints オブジェクトを変更し、結果を返しています。各エンドポイントの Endpoint オブジェクトに、Title フィールドと Genre フィールドを含む新しい Recommendations オブジェクトが含まれています。これらの各フィールドには、3 つの値の順序付き配列 (文字列として) が保存されます。各値により、RecommendationItems フィールド内の対応する推奨商品の強化されたコンテンツが提供されます。

このページの内容

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.