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)으로 마이그레이션하여 통합 성능 추적과 하나의 통합 애플리케이션을 사용하여 인바운드(예: 고객 지원) 및 아웃바운드(예: 선제적 커뮤니케이션)를 관리하는 기능을 통해 채널 전반에서 개인화되고 시기 적절한 참여를 유도하는 것이 좋습니다. 이벤트 수집 및 모바일 분석을 사용하는 경우 Amazon Kinesis를 사용하는 것이 좋습니다.

Amazon Pinpoint 통신 채널(SMS, MMS, 푸시, WhatsApp, 텍스트 투 음성 메시징 기능)은 2024년 Q3에 AWS 최종 사용자 메시징으로 이름이 변경되었으며 고객에게 메시지 전송을 위한 개발자 요구 사항을 계속 제공할 예정입니다. SMS, 음성, 모바일 푸시, OTP 및 전화 번호 확인과 관련된 APIs 사용은이 변경의 영향을 받지 않습니다. Amazon Pinpoint를 사용하여 이메일을 보내는 경우 Amazon Simple Email Service(SES)로 마이그레이션하는 것이 좋습니다. Amazon Pinpoint에서 이메일 전송 가능성 대시보드를 사용하는 경우 2026년 10월 30일까지 SES에서 유사한 기능을 제공할 예정입니다.

마이그레이션 단계: Amazon Pinpoint 참여를 위한 전환 기능

참여 기능을 원하는 고객

세그먼트, 메시지 템플릿, 캠페인, 여정, 분석 등 Amazon Connect의 사전 참여 기능을 사용하려면이 안내서에 따라 Amazon Pinpoint 참여 기능을 Amazon Connect로 마이그레이션하세요.

엔드포인트 및 세그먼트 마이그레이션

Amazon Pinpoint 엔드포인트는 Amazon Connect Customer Profiles로 모델링할 수 있습니다. Customer Profiles를 사용하면 여러 엔드포인트를 단일 프로필로 결합하여 최대 3개의 이메일 주소와 4개의 전화번호를 단일 프로필로 모델링할 수 있습니다. 엔드포인트를 마이그레이션하려면

  1. 필터 없이 모든 엔드포인트를 효과적으로 포함하는 Amazon Pinpoint 세그먼트를 생성합니다.

  2. 해당 세그먼트를 S3 버킷 또는 로컬 시스템으로 내보냅니다.

  3. 변환된 엔드포인트를 Customer Profiles에 업로드하고 Customer Profiles의 S3 커넥터를 사용하여 Customer Profiles에 데이터 통합을 생성합니다.

단일 고객 프로필에서 엔드포인트를 집계하려는 경우 다운로드한 Amazon Pinpoint 세그먼트를 구문 분석하여 단일 프로필에서 이메일 주소와 전화번호를 수집할 수 있습니다. 다음은 내보낸 파일을 JSON 형식으로 읽고 Customer Profiles로 가져올 수 있는 프로필을 생성하는 샘플 Python 스크립트입니다.

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이메일 통신을 활성화합니다.

템플릿 마이그레이션

Amazon Connect의 템플릿은 Amazon Pinpoint와 동일한 메시지 렌더링 엔진(핸들바)을 사용합니다. 그러나 속성 자리 표시자는 다르게 표시됩니다.

  1. 기존 Amazon Pinpoint APIs 사용하여 템플릿(예: get-email-template, get-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 Connect에서는 다음 Amazon Pinpoint 참여 기능을 사용할 수 없습니다.

  • 인앱 메시징

  • 캠페인의 PUSH(GCM, APNS, BAIDU 등) 알림

  • 사용자 지정 채널

  • 가져온 세그먼트

  • 여정

오프보딩 단계: 타사로 데이터 내보내기

모든 Amazon Pinpoint 데이터를 삭제하려면 delete-app API를 사용하여 애플리케이션을 삭제하면 됩니다. 그런 다음 템플릿 삭제에 대한 이 가이드를 사용하여 사용하지 않는 메시지 템플릿을 모두 삭제하세요.

또는 모든 리소스를 추출하여 저장하려면 아래 단계를 따르세요.

엔드포인트

엔드포인트를 오프보드하려면 다음을 수행할 수 있습니다.

  • 필터 없이 모든 엔드포인트를 효과적으로 포함하는 Amazon Pinpoint 세그먼트를 생성합니다.

  • 해당 세그먼트를 S3 버킷 또는 로컬 시스템으로 내보냅니다.

세그먼트, 캠페인 및 여정

세그먼트, 캠페인 및 여정을 오프보딩하려면 APIs 또는 UI를 사용하여 검색합니다. 이를 위해 get-segment, get-campaign 또는 get-journey APIs.

메시지 템플릿

템플릿을 오프보드하려면 list-templates API와 채널별 APIs -

Amazon Pinpoint 및 모바일 분석

Amazon Pinpoint Analytics 또는 Mobile Analytics에서 이벤트 및 KPIs를 오프보드하려면 다음 옵션을 사용할 수 있습니다.

  1. 마이그레이션 전에 향후 원시 이벤트를 내보내기 위해 고객은 이벤트 데이터 스트림에 온보딩할 수 있습니다.

  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 지원 종료일까지 putEvents API를 통해 이벤트를 계속 수집하고 Amazon Pinpoint에서 이벤트를 볼 수 있습니다.

요약

Amazon Pinpoint 계정이 하나 이상 있는 조직은 서비스 지원이 종료되는 2026년 10월 30일까지 세그먼트, 캠페인, 여정, 분석 및 이메일을 포함한 Amazon Pinpoint 참여 기능을 계속 사용할 수 있습니다.

추가 리소스

다음과 같은 추가 리소스를 사용할 수 있습니다.

도움이 필요하거나 피드백이 있는 경우에 문의하세요AWS Support.