

**Aviso de fin de soporte:** el 30 de octubre de 2026, AWS finalizará el soporte para Amazon Pinpoint. Después del 30 de octubre de 2026, ya no podrá acceder a la consola de Amazon Pinpoint ni a los recursos de Amazon Pinpoint (puntos de conexión, segmentos, campañas, recorridos y análisis). Para obtener más información, consulte [Fin de soporte de Amazon Pinpoint](https://docs.aws.amazon.com/console/pinpoint/migration-guide). **Nota:** Este cambio no afecta a las API relacionadas con los SMS, los mensajes de voz, las notificaciones push móviles, la OTP y la validación de números de teléfono, por lo que son compatibles con la mensajería para el usuario AWS final.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Fin del soporte de Amazon Pinpoint
<a name="migrate"></a>

Tras considerarlo detenidamente, hemos decidido finalizar el servicio de soporte para Amazon Pinpoint a partir del 30 de octubre de 2026. Amazon Pinpoint dejará de aceptar nuevos clientes a partir del 20 de mayo de 2025. Si tiene una cuenta registrada en el servicio desde antes del 20 de mayo de 2025, puede seguir utilizando las características de Amazon Pinpoint. Después del 30 de octubre de 2026, ya no podrá usar Amazon Pinpoint.

En la actualidad, los clientes utilizan Amazon Pinpoint para sus capacidades de interacción (puntos de enlace, segmentos, campañas, recorridos y análisis) o para las API de sus canales de mensajería (capacidades de SMS, MMS WhatsApp, push y de texto a voz). Hemos creado planes de baja para ambos grupos de clientes.

**Qué significa esto para usted**

Si utiliza las funciones de participación de Amazon Pinpoint (puntos de enlace, segmentos, campañas, recorridos y análisis), le recomendamos que migre a las soluciones de participación proactiva de Connect Customer (por ejemplo, campañas [salientes de clientes de Amazon Connect y perfiles de clientes de Amazon](https://aws.amazon.com/connect/outbound/) [Connect](https://aws.amazon.com/connect/customer-profiles/)) para impulsar una participación personalizada y oportuna en todos los canales con un seguimiento del rendimiento unificado y la capacidad de gestionar las entradas (por ejemplo, la atención al cliente) y las salidas (por ejemplo, las comunicaciones proactivas) de forma unificada solicitud. Si utiliza la recopilación de eventos y el análisis de dispositivos móviles, le recomendamos que utilice [Amazon Kinesis](https://aws.amazon.com/kinesis).

Los canales de comunicación de Amazon Pinpoint (capacidades de SMS, MMS WhatsApp, push y mensajería de texto a voz) pasaron a llamarse en el tercer trimestre de 2024 como [AWS End User Messaging](https://aws.amazon.com/end-user-messaging) y seguirán satisfaciendo las necesidades de los desarrolladores en cuanto a la entrega de mensajes a los clientes. Este cambio no afectará al uso de las API relacionadas con los SMS, los servicios de voz, la inserción en móviles, las OTP y la validación de números de teléfono. Si utiliza Amazon Pinpoint para enviar correos electrónicos, le recomendamos que migre a [Amazon Simple Email Service](https://aws.amazon.com/ses) (SES). Si utiliza el panel de capacidad de entrega de correo electrónico de Amazon Pinpoint, ofreceremos una funcionalidad similar en SES antes del 30 de octubre de 2026.

**Topics**
+ [Elegir la ruta de migración correcta](#choosing-migration-path)
+ [Pasos de migración: transición de las funciones de interacción de Amazon Pinpoint](#migration-steps)
+ [Pasos de baja: exportación de datos a terceros](#offboarding-steps)
+ [Resumen](#migration-summary)
+ [Recursos adicionales](#migration-additional-resources)

## Elegir la ruta de migración correcta
<a name="choosing-migration-path"></a>

Las campañas salientes para clientes de Amazon Connect y la mensajería para usuarios AWS finales (EUM) con Amazon Simple Email Service sirven para diferentes casos de uso. Antes de comenzar la migración, revise las características de la carga de trabajo para determinar el destino correcto.

**Considere la posibilidad de realizar campañas salientes para clientes de Amazon Connect si su carga de trabajo incluye:**
+ Interacción personalizada con los clientes a través de voz, SMS, correo electrónico y WhatsApp
+ AI-driven estrategias de contacto como la marcación predictiva, la marcación progresiva o la segmentación de clientes
+ Agent-assisted llamadas salientes con enrutamiento en tiempo real
+ Interacciones entrantes y salientes coordinadas en una sola aplicación

**Considere la posibilidad de utilizar AWS End User Messaging y Amazon Simple Email Service si su carga de trabajo incluye:**
+ [Requisitos de rendimiento que superan los límites de las campañas salientes de los clientes de Amazon Connect o las necesidades de acuerdos de nivel de servicio de entrega garantizados (consulte las cuotas de servicio)](https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html)
+ No es necesaria la participación de los agentes ni la toma de decisiones AI-driven 
+ No es necesario segmentar los clientes, organizar los contactos ni gestionar los límites de contactos

Para las cargas de trabajo que combinan ambos patrones, puede utilizar Amazon Connect Customer para la interacción asistida por un agente y la mensajería de usuario AWS final con Amazon Simple Email Service para la entrega de grandes volúmenes de transacciones.

Para obtener asistencia de migración automatizada, consulte las [herramientas de migración de Pronetx en](https://aws.amazon.com/marketplace/pp/prodview-zzpgnprbmmnj6) Marketplace. AWS 

## Pasos de migración: transición de las funciones de interacción de Amazon Pinpoint
<a name="migration-steps"></a>

### Clientes que buscan funciones de interacción
<a name="customer-seeking-engagement-features"></a>

Para utilizar las funciones de participación proactiva de Connect Customer, incluidos los segmentos, las plantillas de mensajes, las campañas, los viajes y los análisis, siga esta guía para migrar las capacidades de participación de Amazon Pinpoint a Connect Customer.

#### Migración de los puntos de conexión y los segmentos
<a name="migrate-endpoints-and-segments"></a>

Los puntos de enlace de Amazon Pinpoint se pueden modelar como perfiles de clientes de Connect Customer. Los perfiles de clientes le permiten combinar varios puntos de conexión en un solo perfil; puede modelar hasta 3 direcciones de correo electrónico y 4 números de teléfono como un solo perfil. Para migrar sus puntos de conexión, puede

1. Crear un segmento de Amazon Pinpoint sin filtros que abarque todos sus puntos de conexión.

1. Exportar ese segmento a un bucket de S3 o a su máquina local.

1. Cargar sus puntos de conexión transformados en los perfiles de los clientes y utilizar el conector S3 de Perfiles de clientes para [crear una integración de datos](https://docs.aws.amazon.com/connect/latest/adminguide/integrate-external-apps-customer-profiles.html) allí.

En caso de que desee agregar puntos de conexión a un solo perfil de cliente, puede analizar el segmento de Amazon Pinpoint descargado para recopilar las direcciones de correo electrónico y los números de teléfono en un solo perfil. Este es un ejemplo de script de Python para leer el archivo exportado en formato JSON y crear los perfiles que se pueden importar a Perfiles de clientes.

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

#### Migración de las configuraciones de canal
<a name="migrate-channel-configurations"></a>

Siga los pasos de incorporación para habilitar las comunicaciones por [SMS](https://docs.aws.amazon.com/connect/latest/adminguide/setup-sms-messaging.html) y [correo electrónico](https://docs.aws.amazon.com/connect/latest/adminguide/setup-email-channel.html) en Connect Customer.

#### Migración de las plantillas
<a name="migrate-templates"></a>

Las plantillas de Connect Customer utilizan el mismo motor de representación de mensajes (Handlebars) que Amazon Pinpoint. Sin embargo, los marcadores de posición de los atributos se representan de forma diferente.

1. Puede usar nuestras API de Amazon Pinpoint existentes para buscar una plantilla (por ejemplo, [get-email-template](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-email-template.html) o [get-sms-template](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-sms-template.html)). O también puede seguir [esta guía](https://docs.aws.amazon.com/pinpoint/latest/userguide/message-templates-managing-edit.html) para editar una plantilla y copiar su contenido.

1. Después de obtener la plantilla, actualice sus marcadores de posición. Por ejemplo, sus plantillas de Amazon Pinpoint usaban anteriormente un marcador de posición similar a `{{User.UserAttributes.PurchaseHistory}}`. Ahora se pueden cambiar a `{{Attributes.Customer.Attributes.PurchaseHistory}}`.

1. A continuación, cree plantillas en Q in Connect Customer mediante la API [create-message-template](https://docs.aws.amazon.com/cli/latest/reference/qconnect/create-message-template.html) o utilice [esta guía](https://docs.aws.amazon.com/connect/latest/adminguide/create-message-templates1.html) para crear plantillas de mensajes.

Para mapear sus atributos, siga los mapeos que realizó anteriormente cuando asignó puntos de conexión a perfiles, con el prefijo `Attributes.Customer`.

#### Migre las campañas
<a name="migrate-campaigns"></a>

[Para cada campaña, te recomendamos que utilices la API [get-campaign](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-campaign.html) para obtener su definición y, después, la vuelvas a crear en Connect Customer utilizando la guía de creación de campañas.](https://docs.aws.amazon.com/connect/latest/adminguide/how-to-create-campaigns.html)

#### Migración de los recorridos
<a name="migrate-journeys"></a>

Los viajes ahora se admiten en las campañas salientes de Amazon Connect Customer. Puede recrear sus recorridos de Amazon Pinpoint con las funciones de organización de campañas para clientes de Amazon Connect. Utilice la API [get-journey](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-journey.html) para obtener las definiciones de su recorrido y, a continuación, vuelva a crearlas con la guía de creación de recorridos para [clientes de Amazon Connect](https://docs.aws.amazon.com/connect/latest/adminguide/create-a-multi-step-and-multi-channel-journey.html).

### Clientes de recopilación de eventos y análisis de dispositivos móviles
<a name="events-collectgion-and-mobile-analytics-customers"></a>

#### Clientes del SDK de Amplify
<a name="amplify-sdk-customers"></a>

Si utiliza el SDK de Amplify para enviar eventos a Amazon Pinpoint con el fin de actualizar los puntos de conexión, activar campañas o recorridos, o analizar el uso de la aplicación, puede migrar a Kinesis. Con Kinesis, puede transmitir eventos a la plataforma informática que elija para que ellos envíen actualizaciones a los perfiles de los clientes, lo que puede actualizar el perfil del usuario de la aplicación y activar las campañas de Connect Customer.

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

Si solo usa Amazon Pinpoint para transmitir eventos de su web/mobile aplicación a una transmisión de Kinesis, ahora puede usar Amplify SDK para transmitir directamente los eventos a Kinesis.

#### Funciones no disponibles
<a name="unavailable-features"></a>

Por el momento, las siguientes funciones de interacción de Amazon Pinpoint no están disponibles en Connect Customer.
+ In-App Mensajería
+ Las notificaciones PUSH (GCM, APNS, BAIDU, etc.) no se admiten de forma nativa en las campañas. Sin embargo, puede enviar notificaciones push a través de los viajes mediante una acción de Lambda con las plantillas push para clientes de Amazon Connect.
+ El canal personalizado está disponible para los viajes, pero no para las campañas.

## Pasos de baja: exportación de datos a terceros
<a name="offboarding-steps"></a>

Si desea eliminar todos los datos de Amazon Pinpoint, simplemente elimine la aplicación mediante la API [delete-app](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/delete-app.html). A continuación, elimine las plantillas de mensajes que no utilice siguiendo [esta guía](https://docs.aws.amazon.com/pinpoint/latest/userguide/message-templates-managing-delete.html) sobre la eliminación de plantillas.

O también, si desea extraer todos sus recursos y almacenarlos, siga los pasos que se indican a continuación.

### Puntos de conexión
<a name="migration-endpoints"></a>

Para dar de baja todos sus puntos de conexión, puede
+ Crear un segmento de Amazon Pinpoint sin filtros que abarque todos sus puntos de conexión.
+ Exportar ese segmento a un bucket de S3 o a su máquina local.

### Segmentos, campañas y recorridos
<a name="segments-campaigns-journeys"></a>



Para eliminar sus segmentos, campañas y recorridos, utilice nuestras API o nuestra interfaz de usuario para recuperarlos. Para ello, puede usar nuestras API [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) o [get-journey](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-journey.html).

### Plantillas de mensaje
<a name="migration-message-templates"></a>

Para eliminar sus plantillas, puede usar la API [list-templates](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/list-templates.html) seguida de las API específicas del canal:
+ [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 y análisis de dispositivos móviles
<a name="pinpoint-and-mobile-analytics"></a>

Para dar de baja sus eventos y KPI de Amazon Pinpoint Analytics o Mobile Analytics, puede utilizar las siguientes opciones:

1. Para exportar eventos futuros sin procesar antes de la migración, los clientes pueden incorporarse al flujo de datos de eventos.

1. Para exportar los KPI de los últimos 3 meses, los clientes pueden utilizar los siguientes comandos:
   + [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)

Para los clientes que necesiten eliminar aplicaciones de Mobile Analytics como parte de su migración, pueden usar el siguiente script de Python. Este script utiliza AWS Signature Version 4 para autenticarse con la API de Mobile Analytics y requiere Python 3.11 o posterior (descargar [Python 3.11](https://www.python.org/downloads/release/python-3110/)).

1. Guarde el siguiente script como `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. Asegúrese de tener AWS credenciales válidas configuradas como variables de entorno.

1. Ejecute el script con el ID de la aplicación de Mobile Analytics:

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

Este script realiza una solicitud `DELETE` a la API de Mobile Analytics para eliminar la aplicación especificada. Asegúrese de ejecutar esta opción con cada aplicación de Mobile Analytics que necesite eliminar.

**nota**  
Los clientes de Mobile Analytics activos pueden seguir ingiriendo eventos a través de la API `putEvents` y verlos en Amazon Pinpoint hasta la fecha de finalización del soporte de este servicio.

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

Las organizaciones con una cuenta de Amazon Pinpoint como mínimo pueden seguir utilizando las funciones de interactuación de Amazon Pinpoint, como los segmentos, las campañas, los recorridos, los análisis y el correo electrónico, hasta el 30 de octubre de 2026, fecha en que finalizará el soporte del servicio.

## Recursos adicionales
<a name="migration-additional-resources"></a>

Están disponibles los siguientes recursos adicionales:
+ [Sitio web de Amazon Pinpoint](https://aws.amazon.com/pinpoint/)
+ [Guía del usuario de Amazon Pinpoint](https://docs.aws.amazon.com/pinpoint/latest/userguide/welcome.html)
+ [Campañas salientes para clientes de Amazon Connect](https://aws.amazon.com/connect/outbound/)
+ [Perfiles de clientes de Amazon Connect Customer](https://aws.amazon.com/connect/customer-profiles/)
+ [Sitio web de Amazon Kinesis](https://aws.amazon.com/kinesis/)
+ [AWS Mensajes para el usuario final](https://aws.amazon.com/end-user-messaging/)
+ [Amazon Simple Email Service (SES)](https://aws.amazon.com/ses/)

Si necesita ayuda o tiene feedback, contacte con [AWS Support](https://aws.amazon.com/support/).