

**终止支持通知：** AWS 将于 2026 年 10 月 30 日终止对亚马逊 Pinpoint 的支持。2026 年 10 月 30 日之后，您将不再能够访问 Amazon Pinpoint 控制台或 Amazon Pinpoint 资源（端点、分段、活动、旅程和分析）。有关更多信息，请参阅 [Amazon Pinpoint 终止支持](https://docs.aws.amazon.com/console/pinpoint/migration-guide)。**注意：**与短信、语音、移动推送、OTP 和电话号码验证相关的 API 不受此变更的影响， AWS 最终用户消息支持这些接口。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon Pinpoint 支持终止
<a name="migrate"></a>

经过深思熟虑，我们决定终止对 Amazon Pinpoint 的支持，自 2026 年 10 月 30 日起生效。自 2025 年 5 月 20 日起，Amazon Pinpoint 将不再接受新客户。作为在 2025 年 5 月 20 日之前注册该服务的账户的现有客户，您可以继续使用 Amazon Pinpoint 功能。2026 年 10 月 30 日之后，您将无法再使用 Amazon Pinpoint。

如今，客户将 Amazon Pinpoint 用于其参与功能（终端节点、细分市场、营销活动、旅程和分析），要么用于其消息渠道 API（短信、彩信 WhatsApp、推送和文字转语音消息功能）。我们已经为这两组客户制定了注销计划。

**这对您意味着什么**

如果您使用的是 Amazon Pinpoint 参与功能（终端节点、细分、活动、旅程和分析），我们建议您迁移到 Connect 客户主动参与解决方案（例如 [Amazon Connect 客户出站活动](https://aws.amazon.com/connect/outbound/)和 [Amazon Connect 客户档案](https://aws.amazon.com/connect/customer-profiles/)），通过统一的绩效跟踪以及使用统一应用程序管理入站（例如客户支持）和出站（例如主动沟通）的能力，推动跨渠道的个性化、及时互动。如果您使用的是事件收集和移动分析，我们建议您使用 [Amazon Kinesis](https://aws.amazon.com/kinesis)。

Amazon Pinpoint 通信渠道（短信、彩信 WhatsApp、推送和文字转语音消息功能）于 2024 年第三季度更名为[AWS 最终用户消息，并将继续满足开发者向客户传送消息](https://aws.amazon.com/end-user-messaging)的需求。此变更不会影响与短信、语音、移动推送、OTP 和电话号码验证相关的 API 的使用。如果您使用 Amazon Pinpoint 发送电子邮件，我们建议您迁移到 [Amazon Simple Email Service](https://aws.amazon.com/ses)（SES）。如果您目前在 Amazon Pinpoint 中使用电子邮件送达率控制面板，我们将在 2026 年 10 月 30 日之前在 SES 中提供类似功能。

**Topics**
+ [选择正确的迁移路径](#choosing-migration-path)
+ [迁移步骤：Amazon Pinpoint 参与的过渡功能](#migration-steps)
+ [注销步骤：将数据导出到第三方](#offboarding-steps)
+ [Summary](#migration-summary)
+ [其他资源](#migration-additional-resources)

## 选择正确的迁移路径
<a name="choosing-migration-path"></a>

Amazon Connect 客户出站活动和使用亚马逊简单电子邮件服务 AWS 的最终用户消息 (EUM) 有不同的用例。在开始迁移之前，请检查您的工作负载特征以确定正确的目标。

**如果您的工作量包括：**
+ 通过语音、短信、电子邮件和 WhatsApp
+ AI-driven 联系策略，例如预测拨号、渐进式拨号或客户细分
+ Agent-assisted 具有实时路由功能的出站呼叫
+ 在单个应用程序中协调入站和出站互动

**如果您的工作负载包括： AWS **
+ 超出 Amazon Connect 客户出站活动限制的吞吐量要求或保证配送 SLA 的需求（参见[服务配额](https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html)）
+ 无需代理人参与或 AI-driven 做出决定
+ 无需客户细分、联系人编排或联系人限制管理

对于结合了这两种模式的工作负载，您可以使用 Amazon Connect Customer 进行代理辅助互动，使用 Amazon Simple Email Service 进行 AWS 最终用户消息传递以进行大批量交易传送。

如需自动迁移帮助，请参阅 Mar AWS ketplace 上的 [Pronetx 迁移工具](https://aws.amazon.com/marketplace/pp/prodview-zzpgnprbmmnj6)。

## 迁移步骤：Amazon Pinpoint 参与的过渡功能
<a name="migration-steps"></a>

### 寻求参与功能的客户
<a name="customer-seeking-engagement-features"></a>

要使用 Connect Customer 的主动互动功能，包括细分、消息模板、活动、旅程、分析，请按照本指南将 Amazon Pinpoint 参与功能迁移到 Connect Customer。

#### 迁移端点和客户细分
<a name="migrate-endpoints-and-segments"></a>

Amazon Pinpoint 终端节点可以建模为 Connect 客户档案。使用 Customer Profiles 可以将多个端点组合成单个配置文件，还可以将多达 3 个电子邮件地址和 4 个电话号码建模为单个配置文件。要迁移您的端点，您可以

1. 创建不带筛选条件的 Amazon Pinpoint 客户细分，有效地涵盖您的所有端点。

1. 将该客户细分导出到 S3 存储桶或本地计算机。

1. 将转换后的端点上传到 Customer Profiles，然后使用 Customer Profiles 的 S3 连接器在 Customer Profiles 中[创建数据集成](https://docs.aws.amazon.com/connect/latest/adminguide/integrate-external-apps-customer-profiles.html)。

如果您想将端点聚合到单个客户配置文件下，则可以解析下载的 Amazon Pinpoint 客户细分，以便在单个配置文件下收集电子邮件地址和电话号码。这是一个 Python 脚本示例，用于读取 JSON 格式的导出文件并创建可以导入到 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)
```

#### 迁移频道配置
<a name="migrate-channel-configurations"></a>

按照入门步骤在 Connect Customer 中启用[短信](https://docs.aws.amazon.com/connect/latest/adminguide/setup-sms-messaging.html)和[电子邮件](https://docs.aws.amazon.com/connect/latest/adminguide/setup-email-channel.html)通信。

#### 迁移模板
<a name="migrate-templates"></a>

Connect Customer 中的模板使用与 Amazon Pinpoint 相同的消息呈现引擎（Handlebars）。但是，属性占位符的表示方式有所不同。

1. 您可以使用我们现有的 Amazon Pinpoint API 来提取模板（例如，[get-email-template](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-email-template.html)、[get-sms-template](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-sms-template.html)）。或者，您可以按照[本指南](https://docs.aws.amazon.com/pinpoint/latest/userguide/message-templates-managing-edit.html)编辑模板，以便复制其内容。

1. 提取模板后，更新其占位符。例如，您之前的 Amazon Pinpoint 模板使用了类似 `{{User.UserAttributes.PurchaseHistory}}` 的占位符。现在可以将这些占位符更改为 `{{Attributes.Customer.Attributes.PurchaseHistory}}`。

1. 接下来，使用创建消息模板 API 或使用[本指南](https://docs.aws.amazon.com/connect/latest/adminguide/create-message-templates1.html)[创建消息模板，在 Connect Customer 中的 Q 中创建模板](https://docs.aws.amazon.com/cli/latest/reference/qconnect/create-message-template.html)。

要映射您的属性，请遵循之前将端点映射到配置文件时所做的映射（前缀为 `Attributes.Customer`）。

#### 迁移营销活动
<a name="migrate-campaigns"></a>

[对于每个广告活动，我们建议您使用 [get-campaign API 来获取其定义，然后使用广告活动](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-campaign.html)创建指南在 Connect Customer 中重新创建该定义。](https://docs.aws.amazon.com/connect/latest/adminguide/how-to-create-campaigns.html)

#### 迁移旅程
<a name="migrate-journeys"></a>

Amazon Connect 客户出站活动现在支持旅程。您可以使用 Amazon Connect 客户活动编排功能重现您的 Amazon Pinpoint 旅程。使用 [get-jou](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-journey.html) rney API 获取您的旅程定义，然后使用 [Amazon Connect 客户旅程](https://docs.aws.amazon.com/connect/latest/adminguide/create-a-multi-step-and-multi-channel-journey.html)创建指南重新创建这些定义。

### 事件收集和移动分析客户
<a name="events-collectgion-and-mobile-analytics-customers"></a>

#### Amplify SDK 客户
<a name="amplify-sdk-customers"></a>

如果您使用 Amplify SDK 向 Amazon Pinpoint 发送事件以更新端点、触发营销活动或旅程或者分析应用程序的使用情况，则可以迁移到使用 Kinesis。使用 Kinesis，您可以将事件流式传输到您选择的计算平台，让他们向客户档案发送更新，从而更新应用程序用户的个人资料并触发 Connect Customer 活动。

#### Put-Events 客户
<a name="put-events-customers"></a>

如果您仅使用 Amazon Pinpoint 将事件从您的 web/mobile 应用程序流式传输到 Kinesis 流，那么您现在可以使用 Amplify SDK 将事件直接流式传输到 Kinesis。

#### 不可用的功能
<a name="unavailable-features"></a>

截至目前，以下亚马逊 Pinpoint 参与功能在 Connect Customer 中尚不可用。
+ In-App 消息传递
+ 广告系列本身不支持推送（GCM、APNS、BAIDU 等）通知。但是，您可以使用带有 Amazon Connect 客户推送模板的 Lambda 操作通过旅程发送推送通知。
+ 自定义渠道适用于旅程，但不适用于广告系列。

## 注销步骤：将数据导出到第三方
<a name="offboarding-steps"></a>

如果您想删除所有 Amazon Pinpoint 数据，请随时直接使用 [delete-app](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/delete-app.html) API 删除应用程序。之后，请遵循关于删除模板的[本指南](https://docs.aws.amazon.com/pinpoint/latest/userguide/message-templates-managing-delete.html)来删除所有未使用的消息模板。

或者，如果要提取所有资源并进行存储，请按照以下步骤操作。

### 端点
<a name="migration-endpoints"></a>

要注销端点，您可以
+ 创建不带筛选条件的 Amazon Pinpoint 客户细分，有效地涵盖您的所有端点。
+ 将该客户细分导出到 S3 存储桶或本地计算机。

### 客户细分、营销活动和旅程
<a name="segments-campaigns-journeys"></a>



要将您的客户细分、营销活动和旅程排除在外，请使用我们的 API 或 UI 对它们进行检索。为此，您可以使用我们的 [get-segment](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-segment.html)、[get-campaign](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-campaign.html) 或 [get-journey](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-journey.html) API。

### 消息模板
<a name="migration-message-templates"></a>

要注销模板，您可以使用 [list-templates](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/list-templates.html) API，然后使用特定于渠道的 API：
+ [get-email-template](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-email-template.html)
+ [get-in-app-template](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-in-app-template.html)
+ [get-push-template](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-push-template.html)
+ [get-sms-template](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-sms-template.html)

### Amazon Pinpoint 和移动分析
<a name="pinpoint-and-mobile-analytics"></a>

要从 Amazon Pinpoint Analytics 或 Mobile Analytics 中注销您的事件和 KPI，您可以使用以下选项：

1. 要在迁移之前导出将来的原始事件，客户可以加入事件数据流。

1. 客户可以使用以下命令导出过去 3 个月的 KPI：
   + [get-application-date-range-kpi](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-application-date-range-kpi.html)
   + [get-journey-date-range-kpi](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-journey-date-range-kpi.html)
   + [get-campaign-date-range-kpi](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-campaign-date-range-kpi.html)
   + [get-journey-execution-activity-metrics](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-journey-execution-activity-metrics.html)
   + [get-journey-execution-metrics](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-journey-execution-metrics.html)
   + [get-journey-run-execution-activity-metrics](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-journey-run-execution-activity-metrics.html)
   + [get-journey-run-execution-metrics](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-journey-run-execution-metrics.html)

对于需要在迁移过程中删除 Mobile Analytics 应用程序的客户，您可以使用以下 Python 脚本。此脚本使用 AWS 签名版本 4 通过 Mobile Analytics API 进行身份验证，需要使用 Python 3.11 或更高版本（[下载 Python 3.11](https://www.python.org/downloads/release/python-3110/)）。

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)
   ```

1. 确保将有效的 AWS 凭据设置为环境变量。

1. 使用您的 Mobile Analytics 应用程序 ID 运行脚本：

   ```
   python delete_mobile_analytics_application.py --appId {{<YOUR_MOBILE_ANALYTICS_APP_ID>}}
   ```

此脚本向 Mobile Analytics API 发出移除指定应用程序的 `DELETE` 请求。请务必为需要删除的每个 Mobile Analytics 应用程序运行此脚本。

**注意**  
在 Amazon Pinpoint 终止支持日期之前，活跃的 Mobile Analytics 客户可以继续通过 `putEvents` API 摄取事件，并在 Amazon Pinpoint 中查看事件。

## Summary
<a name="migration-summary"></a>

拥有至少一个 Amazon Pinpoint 账户的组织可以继续使用 Amazon Pinpoint 参与功能，包括客户细分、营销活动、旅程、分析和电子邮件，直到 2026 年 10 月 30 日该服务的支持终止时为止。

## 其他资源
<a name="migration-additional-resources"></a>

还提供有以下资源：
+ [Amazon Pinpoint 网站](https://aws.amazon.com/pinpoint/)
+ [Amazon Pinpoint 用户指南](https://docs.aws.amazon.com/pinpoint/latest/userguide/welcome.html)
+ [Amazon Connect 客户出站活动](https://aws.amazon.com/connect/outbound/)
+ [Amazon Connect Customer Profiles](https://aws.amazon.com/connect/customer-profiles/)
+ [Amazon Kinesis 网站](https://aws.amazon.com/kinesis/)
+ [AWS 最终用户消息](https://aws.amazon.com/end-user-messaging/)
+ [亚马逊简单电子邮件服务 (SES) Simple Service](https://aws.amazon.com/ses/)

如果您需要协助或有反馈，请联系 [AWS 支持](https://aws.amazon.com/support/)。