Amazon Pinpoint のサポート終了 - Amazon Pinpoint

サポート終了通知: 2026 年 10 月 30 日、 AWS は Amazon Pinpoint のサポートを終了します。2026 年 10 月 30 日以降、Amazon Pinpoint コンソールまたは Amazon Pinpoint リソース (エンドポイント、セグメント、キャンペーン、ジャーニー、分析) にアクセスできなくなります。詳細については、Amazon Pinpoint のサポート終了」を参照してください。注: SMS、音声、モバイルプッシュ、OTP、電話番号の検証に関連する APIs は、この変更の影響を受けず、 AWS エンドユーザーメッセージングでサポートされています。

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

Amazon Pinpoint のサポート終了

慎重に検討した結果、2026 年 10 月 30 日に Amazon Pinpoint のサポートを終了することにしました。Amazon Pinpoint は、2025 年 5 月 20 日以降、新規顧客を受け入れなくなります。2025 年 5 月 20 日より前にサービスにサインアップしたアカウントを持つ既存のお客様は、引き続き Amazon Pinpoint の機能を使用できます。2026 年 10 月 30 日以降、Amazon Pinpoint を使用することはできません。

現在、お客様はエンゲージメント機能 (エンドポイント、セグメント、キャンペーン、ジャーニー、分析) またはメッセージングチャネル APIs (SMS、MMS、プッシュ、WhatsApp、テキストから音声へのメッセージング機能) に Amazon Pinpoint を使用しています。両方の顧客セットのオフボーディング計画を作成しました。

これが意味すること

Amazon Pinpoint エンゲージメント機能 (エンドポイント、セグメント、キャンペーン、ジャーニー、分析) を使用している場合は、Amazon Connect プロアクティブエンゲージメントソリューション (Amazon Connect アウトバウンドキャンペーンAmazon Connect Customer Profiles など) に移行して、統合されたパフォーマンス追跡と、1 つの統合アプリケーションを使用してインバウンド (カスタマーサポートなど) とアウトバウンド (プロアクティブコミュニケーションなど) を管理する機能を使用して、チャネル間でパーソナライズされたタイムリーなエンゲージメントを促進することをお勧めします。イベントコレクションとモバイル分析を使用している場合は、Amazon Kinesis を使用することをお勧めします。

Amazon Pinpoint 通信チャネル (SMS、MMS、プッシュ、WhatsApp、テキストから音声へのメッセージング機能) は、2024 年Q3 四半期にAWS エンドユーザーメッセージングとして名前が変更され、引き続きお客様とのメッセージ配信に関するデベロッパーのニーズに対応します。SMS、音声、モバイルプッシュ、OTP、電話番号の検証に関連する APIs の使用は、この変更の影響を受けません。Amazon Pinpoint を使用して E メールを送信する場合は、Amazon Simple Email Service (SES) に移行することをお勧めします。Amazon Pinpoint で E メール配信性能ダッシュボードを使用している場合、2026 年 10 月 30 日までに SES で同様の機能が提供されます。

移行ステップ: Amazon Pinpoint エンゲージメントの移行機能

エンゲージメント機能を求めるお客様

セグメント、メッセージテンプレート、キャンペーン、ジャーニー、分析など、Amazon Connect のプロアクティブエンゲージメント機能を使用するには、このガイドに従って Amazon Pinpoint エンゲージメント機能を Amazon Connect に移行してください。

エンドポイントとセグメントの移行

Amazon Pinpoint エンドポイントは、Amazon Connect Customer Profiles としてモデル化できます。Customer Profiles では、複数のエンドポイントを 1 つのプロファイルに結合できるため、最大 3 つの E メールアドレスと 4 つの電話番号を 1 つのプロファイルとしてモデル化できます。エンドポイントを移行するには、

  1. フィルターなしで Amazon Pinpoint セグメントを作成し、すべてのエンドポイントを効果的に包含します。

  2. そのセグメントを S3 バケットまたはローカルマシンにエクスポートします。

  3. 変換されたエンドポイントを Customer Profiles にアップロードし、Customer Profiles の S3 コネクタを使用して Customer Profiles へのデータ統合を作成します

単一の Customer Profile でエンドポイントを集約する場合は、ダウンロードした Amazon Pinpoint セグメントを解析して、単一のプロファイルで E メールアドレスと電話番号を収集できます。エクスポートされたファイルを JSON 形式で読み取るためのサンプル Python スクリプトを次に示します。Customer Profiles にインポートできるプロファイルを作成しました。

from collections import defaultdict import json def process_pinpoint_endpoints(input_file, output_file): # Dictionary to store grouped endpoints by user ID grouped_endpoints = defaultdict(list) endpoints = [] # Read the input file with open(input_file, 'r') as file: for line in file: endpoints.append(json.loads(line)) # Group endpoints by user ID for endpoint in endpoints: user_id = endpoint.get('User', {}).get('UserId') if user_id: grouped_endpoints[user_id].append(endpoint) # Convert grouped endpoints to Customer Profiles format # We will assume the userId is stored as an AccountNumber # since the AccountNumber can be queried customer_profiles = [] for user_id, user_endpoints in grouped_endpoints.items(): profile = { 'AccountNumber': user_id, 'Attributes': {}, 'Address': {} } phone_numbers = set() email_addresses = set() output_dict = {} for endpoint in user_endpoints: # Extract attributes attributes = endpoint.get('Attributes', {}) for key, value_list in attributes.items(): if len(value_list) == 1: output_dict[key] = value_list[0] else: for i, item in enumerate(value_list): output_dict[f"{key}_{i}"] = item demographics = endpoint.get('Demographic') for key, value in demographics.items(): attributes[f"Demographic_{key}"] = value location = endpoint.get('Location', {}) profile['Address']['City'] = location['City'] profile['Address']['Country'] = location['Country'] profile['Address']['PostalCode'] = location['PostalCode'] profile['Address']['County'] = location['Region'] profile['Attributes']['Latitude'] = location['Latitude'] profile['Attributes']['Longitude'] = location['Longitude'] metrics = endpoint.get('Metrics', {}) for key, value in metrics.items(): profile['Attributes'][f"Metrics_{key}"] = str(value) user = endpoint.get('User', {}) user_attributes = user.get('UserAttributes', {}) for key, value_list in user_attributes.items(): if len(value_list) == 1: output_dict[key] = value_list[0] else: for i, item in enumerate(value_list): output_dict[f"UserAttributes.{key}_{i}"] = item profile['Attributes'].update(output_dict) # Extract phone number address = endpoint.get('Address') if (endpoint.get('ChannelType') == 'SMS' or endpoint.get('ChannelType') == 'VOICE') and address: phone_numbers.add(address) # Extract email address if endpoint.get('ChannelType') == 'EMAIL' and address: email_addresses.add(address) # Assigning the phone numbers to the different parameters in the Customer Profile for i, phone_number in enumerate(phone_numbers): if i == 0: profile['PhoneNumber'] = phone_number elif i == 1: profile['HomePhoneNumber'] = phone_number elif i == 2: profile['MobilePhoneNumber'] = phone_number elif i == 3: profile['BusinessPhoneNumber'] = phone_number else: profile['Attributes'][f"PhoneNumber_{i}"] = phone_number # Assigning the email addresses to the different parameters in the Customer Profile for i, email_address in enumerate(email_addresses): if i == 0: profile['EmailAddress'] = email_address elif i == 1: profile['PersonalEmailAddress'] = email_address elif i == 2: profile['BusinessEmailAddress'] = email_address else: profile['Attributes'][f"EmailAddress_{i}"] = email_address customer_profiles.append(profile) # Write the output to a file with open(output_file, 'w') as f: json.dump(customer_profiles, f, indent=2) print(f"Processed {len(endpoints)} endpoints into {len(customer_profiles)} customer profiles.") # Example usage input_file = 'pinpoint_endpoints.json' output_file = 'customer_profiles.json' process_pinpoint_endpoints(input_file, output_file)

チャネル設定の移行

Amazon Connect で SMS および E メール通信を有効にするには、オンボーディングステップに従います。

テンプレートの移行

Amazon Connect のテンプレートは、Amazon Pinpoint と同じメッセージレンダリングエンジン (ハンドルバー) を使用します。ただし、属性プレースホルダーの表現は異なります。

  1. 既存の Amazon Pinpoint APIs を使用してテンプレートを取得できます (getget-email-templateget-sms-template など)。または、このガイドに従ってテンプレートを編集し、その内容をコピーすることもできます。

  2. テンプレートを取得したら、プレースホルダーを更新します。例えば、Amazon Pinpoint テンプレートでは、以前 のようなプレースホルダーが使用されていました{{User.UserAttributes.PurchaseHistory}}。これらは に変更できるようになりました{{Attributes.Customer.Attributes.PurchaseHistory}}

  3. 次に、create-message-template API を使用するか、このガイドを使用して Amazon Connect の Q でテンプレートを作成します。

属性をマッピングするには、エンドポイントをプロファイルにマッピングしたときに前に行ったマッピングに従いますAttributes.Customer

キャンペーンの移行

キャンペーンごとに、get-campaign API を使用して定義を取得し、キャンペーン作成ガイドを使用して Amazon Connect で再作成することをお勧めします。

ジャーニーの移行

Amazon Connect では、ジャーニーはまだ完全にはサポートされていません。Amazon Connect キャンペーンを使用して解決できるジャーニーのユースケースを評価することをお勧めします。「はい」の場合、get-journey API を使用して定義を取得し、キャンペーン作成ガイドを使用して Amazon Connect で再作成します。

イベント収集とモバイル分析の顧客

Amplify SDK のお客様

Amplify SDK を使用して Amazon Pinpoint にイベントを送信し、エンドポイントの更新、キャンペーンやジャーニーのトリガー、アプリケーションの使用状況の分析を行う場合は、Kinesis を使用して に移行できます。Kinesis を使用すると、選択したコンピューティングプラットフォームにイベントをストリーミングして Customer Profiles に更新を送信し、アプリケーションユーザーのプロファイルを更新して Amazon Connect キャンペーンをトリガーできます。

Put-Events のお客様

Amazon Pinpoint を使用してウェブ/モバイルアプリケーションから Kinesis ストリームにイベントのみをストリーミングする場合、Amplify SDK を使用してイベントを Kinesis に直接ストリーミングできるようになりました。

使用できない機能

現時点では、以下の Amazon Pinpoint エンゲージメント機能は Amazon Connect では使用できません。

  • アプリ内メッセージング

  • キャンペーンで通知をプッシュ (GCM、APNS、BAIDU など)

  • カスタムチャネル

  • インポートされたセグメント

  • ジャーニー

オフボーディングステップ: データをサードパーティーにエクスポートする

すべての Amazon Pinpoint データを削除する場合は、delete-app API を使用してアプリケーションを削除してください。その後、テンプレートの削除に関するこのガイドを使用して、未使用のメッセージテンプレートを削除してください。

または、すべてのリソースを抽出して保存する場合は、以下の手順に従います。

エンドポイント

エンドポイントをオフボードするには、

  • フィルターなしで Amazon Pinpoint セグメントを作成し、すべてのエンドポイントを効果的に包含します。

  • そのセグメントを S3 バケットまたはローカルマシンにエクスポートします。

セグメント、キャンペーン、ジャーニー

セグメント、キャンペーン、ジャーニーをオフボードするには、APIsまたは UI を使用してそれらを取得します。そのためには、get-segmentget-campaignget-journey APIsを使用できます。

メッセージテンプレート

テンプレートをオフボードするには、list-templates API の後にチャネル固有の APIs を使用できます。

Amazon Pinpoint とモバイル分析

Amazon Pinpoint Analytics または Mobile Analytics からイベントと KPIs をオフボードするには、次のオプションを使用できます。

  1. 移行前に将来の raw イベントをエクスポートするために、お客様はイベントデータストリームにオンボードできます。

  2. お客様は、次のコマンドを使用して、過去 3 か月間KPIs をエクスポートできます。

移行の一環として Mobile Analytics アプリケーションを削除する必要があるお客様は、次の Python スクリプトを使用できます。このスクリプトは、 AWS 署名バージョン 4 を使用して Mobile Analytics API で認証します。

  1. 次のスクリプトを として保存しますdelete_mobile_analytics_application.py

    # Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # This file is licensed under the Apache License, Version 2.0 (the "License"). # You may not use this file except in compliance with the License. A copy of the # License is located at # # http://aws.amazon.com/apache2.0/ # # This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS # OF ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. # # ABOUT THIS PYTHON SAMPLE: This sample is part of the AWS General Reference # Signing AWS API Requests top available at # https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html # # AWS Version 4 signing example # Delete Mobile Analytics application # See: http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html # This version makes a DELETE request and passes the signature # in the Authorization header. import sys, os, base64, datetime, hashlib, hmac import requests # pip install requests import argparse # Parse command line arguments parser = argparse.ArgumentParser(description='Delete a Mobile Analytics application') parser.add_argument('--appId', type=str, help='Mobile Analytics application ID to be deleted', required=True) args = parser.parse_args() # ************* REQUEST VALUES ************* delimiter = "/" method = 'DELETE' service = 'mobileanalytics' host = 'mobileanalytics.us-east-1.amazonaws.com' region = 'us-east-1' appId = args.appId # Use the appId from command line arguments endpoint = 'https://mobileanalytics.us-east-1.amazonaws.com/2016-07-01/apps' + delimiter + appId request_parameters = '' # Function for signing. Refer the AWS documentation below for more details. # http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html#signature-v4-examples-python def sign(key, msg): return hmac.new(key, msg.encode('utf-8'), hashlib.sha256).digest() # Function for computing signature key. Refer the AWS documentation below for more details. # http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html#signature-v4-examples-python. def getSignatureKey(key, dateStamp, regionName, serviceName): kDate = sign(('AWS4' + key).encode('utf-8'), dateStamp) kRegion = sign(kDate, regionName) kService = sign(kRegion, serviceName) kSigning = sign(kService, 'aws4_request') return kSigning # Read AWS access key from environment variables or configuration file. Best practice is NOT # to embed credentials in code. access_key = os.environ.get('AWS_ACCESS_KEY_ID') secret_key = os.environ.get('AWS_SECRET_ACCESS_KEY') session_token = os.environ.get('AWS_SESSION_TOKEN') if access_key is None or secret_key is None: print('No access key is available.') sys.exit() # Create a date for headers and the credential string t = datetime.datetime.now(datetime.UTC) amzdate = t.strftime('%Y%m%dT%H%M%SZ') datestamp = t.strftime('%Y%m%d') # Date w/o time, used in credential scope # ************* TASK 1: CREATE A CANONICAL REQUEST ************* # http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html # Step 1 is to define the verb (GET, POST, etc.)--already done with defining "method" variable above. # Step 2: Create canonical URI--the part of the URI from domain to query # string (use '/' if no path) canonical_uri = '/2016-07-01/apps' + delimiter + appId # Step 3: Create the canonical query string. In this example (a DELETE request), # request parameters are in the query string. Query string values must # be URL-encoded (space=%20). The parameters must be sorted by name. # For this example, the query string is pre-formatted in the request_parameters variable. canonical_querystring = request_parameters # Step 4: Create the canonical headers and signed headers. Header names # must be trimmed and lowercase, and sorted in code point order from # low to high. Note that there is a trailing \n. canonical_headers = 'host:' + host + '\n' + 'x-amz-date:' + amzdate + '\n' # Step 5: Create the list of signed headers. This lists the headers # in the canonical_headers list, delimited with ";" and in alpha order. # Note: The request can include any headers; canonical_headers and # signed_headers lists those that you want to be included in the # hash of the request. "Host" and "x-amz-date" are always required. signed_headers = 'host;x-amz-date' # Step 6: Create payload hash (hash of the request body content). For GET # requests, the payload is an empty string (""). payload_hash = hashlib.sha256(request_parameters.encode('utf-8')).hexdigest() # Step 7: Combine elements to create canonical request canonical_request = method + '\n' + canonical_uri + '\n' + canonical_querystring + '\n' + canonical_headers + '\n' + signed_headers + '\n' + payload_hash # ************* TASK 2: CREATE THE STRING TO SIGN************* # Match the algorithm to the hashing algorithm you use, either SHA-1 or # SHA-256 (recommended) algorithm = 'AWS4-HMAC-SHA256' credential_scope = datestamp + '/' + region + '/' + service + '/' + 'aws4_request' string_to_sign = algorithm + '\n' + amzdate + '\n' + credential_scope + '\n' + hashlib.sha256( canonical_request.encode('utf-8')).hexdigest() # ************* TASK 3: CALCULATE THE SIGNATURE ************* # Create the signing key using the function defined above. signing_key = getSignatureKey(secret_key, datestamp, region, service) # Compute signature by invoking hmac.new method by passing signingkey, string_to_sign signature = hmac.new(signing_key, string_to_sign.encode('utf-8'), hashlib.sha256).hexdigest() # ************* TASK 4: ADD SIGNING INFORMATION TO THE REQUEST ************* # The signing information can be either in a query string value or in # a header named Authorization. This code shows how to use a header. # Create authorization header and add to request headers authorization_header = algorithm + ' ' + 'Credential=' + access_key + '/' + credential_scope + ', ' + 'SignedHeaders=' + signed_headers + ', ' + 'Signature=' + signature # The request can include any headers, but MUST include "host", "x-amz-date", # and (for this scenario) "Authorization". "host" and "x-amz-date" must # be included in the canonical_headers and signed_headers, as noted # earlier. Order here is not significant. # Python note: The 'host' header is added automatically by the Python 'requests' library. headers = { 'x-amz-date': amzdate, 'accept': 'application/hal+json', 'content-type': 'application/json; charset=UTF-8', 'Authorization': authorization_header} if session_token: headers['X-Amz-Security-Token'] = session_token # ************* SEND THE REQUEST ************* request_url = endpoint + '?' + canonical_querystring print('\nBEGIN REQUEST++++++++++++++++++++++++++++++++++++') print('Request URL = ' + request_url) print('Request Headers = ', headers) r = requests.delete(request_url, data=request_parameters, headers=headers) print('\nRESPONSE++++++++++++++++++++++++++++++++++++') print('Response code: %d\n' % r.status_code) print(r.text)
  2. 有効な AWS 認証情報が環境変数として設定されていることを確認します。

  3. Mobile Analytics アプリケーション ID を使用してスクリプトを実行します。

    python delete_mobile_analytics_application.py --appId <YOUR_MOBILE_ANALYTICS_APP_ID>

このスクリプトは Mobile Analytics API にDELETEリクエストを行い、指定されたアプリケーションを削除します。削除する必要がある Mobile Analytics アプリケーションごとに、必ずこれを実行してください。

注記

Active Mobile Analytics のお客様は、Amazon Pinpoint のサポート終了日まで、putEventsAPI を通じてイベントを引き続き取り込み、Amazon Pinpoint で表示できます。

概要

少なくとも 1 つの Amazon Pinpoint アカウントを持つ組織は、サービスのサポートが終了する 2026 年 10 月 30 日まで、セグメント、キャンペーン、ジャーニー、分析、E メールなど、Amazon Pinpoint エンゲージメント機能を引き続き使用できます。

追加リソース

以下の追加リソースを利用できます。

サポートが必要な場合やフィードバックが必要な場合は、 にお問い合わせくださいAWS サポート