

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.

# PySpark plantillas de análisis
<a name="pyspark-analysis-templates"></a>

PySpark las plantillas de análisis requieren un script de usuario de Python y un entorno virtual opcional para utilizar bibliotecas personalizadas y de código abierto. Estos archivos se denominan artefactos. 

Antes de crear una plantilla de análisis, primero debe crear los artefactos y, a continuación, almacenarlos en un bucket de Amazon S3. AWS Clean Rooms utiliza estos artefactos al ejecutar trabajos de análisis. AWS Clean Rooms solo accede a los artefactos cuando se ejecuta un trabajo. 

Antes de ejecutar cualquier código en una plantilla de PySpark análisis, AWS Clean Rooms valida los artefactos de la siguiente manera: 
+ Comprobar la versión específica del objeto S3 utilizada al crear la plantilla
+ Verificación del hash SHA-256 del artefacto 
+ Falló cualquier trabajo en el que se hayan modificado o eliminado artefactos

**nota**  
El tamaño máximo de todos los artefactos combinados para una plantilla de PySpark análisis determinada AWS Clean Rooms es de 1 GB.

## Seguridad para las plantillas PySpark de análisis
<a name="pyspark-analysis-templates-security"></a>

Para preservar un entorno informático seguro, AWS Clean Rooms utiliza una arquitectura informática de dos niveles para aislar el código de usuario de las operaciones del sistema. Esta arquitectura se basa en la tecnología Amazon EMR Serverless Fine Grained Access Control, también conocida como Membrane. Para obtener más información, consulte [Membrane: controles de acceso a datos seguros y eficaces en Apache Spark en presencia de código imperativo](https://www.amazon.science/publications/membrane-safe-and-performant-data-access-controls-in-apache-spark-in-the-presence-of-imperative-code).

Los componentes del entorno informático se dividen en un espacio de usuario y un espacio de sistema independientes. El espacio de usuario ejecuta el PySpark código de la plantilla de PySpark análisis. AWS Clean Rooms utiliza el espacio del sistema para permitir la ejecución del trabajo, lo que incluye el uso de las funciones de servicio proporcionadas por los clientes para leer los datos a fin de ejecutar el trabajo y la implementación de la lista de columnas permitidas. Como resultado de esta arquitectura, el PySpark código de un cliente que afecta al espacio del sistema, que podría incluir una pequeña cantidad de Spark SQL PySpark DataFrames APIs, queda bloqueado.

## PySpark limitaciones en AWS Clean Rooms
<a name="pyspark-limitations"></a>

Cuando los clientes envían una plantilla de PySpark análisis aprobada, AWS Clean Rooms la ejecutan en su propio entorno informático seguro al que ningún cliente puede acceder. El entorno informático implementa una arquitectura informática con un espacio de usuario y un espacio de sistema para preservar un entorno informático seguro. Para obtener más información, consulte [Seguridad para las plantillas PySpark de análisis](#pyspark-analysis-templates-security).

Tenga en cuenta las siguientes limitaciones antes PySpark de usarlo AWS Clean Rooms. 

**Limitaciones**
+ Solo se admiten las DataFrame salidas
+ Una sola sesión de Spark por ejecución de trabajo

**Características no admitidas**
+ **Administración de datos**
  + Formatos de tablas Iceberg
  + LakeFormation tablas gestionadas
  + Conjuntos de datos distribuidos resilientes (RDD)
  + Streaming de Spark
  + Control de acceso para columnas anidadas
+ **Funciones y extensiones personalizadas**
  + Funciones de tabla definidas por el usuario () UDTFs
  + Colmena UDFs
  + Clases personalizadas en funciones definidas por el usuario
  + Orígenes de datos personalizados
  + Archivos JAR adicionales para:
    + Extensiones Spark
    + Connectors
    + Configuraciones de Metastore
+ **Monitorización y análisis**
  + Registro de chispas
  + IU de Spark
  + Comandos de `ANALYZE TABLE`

**importante**  
Estas limitaciones se han establecido para mantener el aislamiento de seguridad entre los espacios del usuario y del sistema.  
Todas las restricciones se aplican independientemente de la configuración de colaboración.  
Es posible que las actualizaciones futuras añadan compatibilidad con funciones adicionales en función de las evaluaciones de seguridad.

## Prácticas recomendadas
<a name="python-best-practices"></a>

Recomendamos las siguientes prácticas recomendadas a la hora de crear plantillas de PySpark análisis.
+ Diseñe sus plantillas de análisis teniendo esto [PySpark limitaciones en AWS Clean Rooms](#pyspark-limitations) en cuenta.
+ Pruebe primero su código en un entorno de desarrollo.
+ Utilice exclusivamente DataFrame las operaciones compatibles.
+ Planifique su estructura de salida para que funcione con DataFrame limitaciones.

Recomendamos las siguientes prácticas recomendadas para gestionar los artefactos
+ Guarde todos los artefactos de la plantilla de PySpark análisis en un prefijo o depósito de S3 específico.
+ Utilice nombres de versión claros para las diferentes versiones de los artefactos.
+ Crea nuevas plantillas de análisis cuando necesites actualizar los artefactos.
+ Mantenga un inventario de qué plantillas utilizan qué versiones de artefactos.

Para obtener más información sobre cómo escribir el código de Spark, consulta lo siguiente: 
+ [Ejemplos de Apache Spark](https://spark.apache.org/examples.html)
+ [Escribe una aplicación de Spark](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-application.html) en la guía de *versiones de Amazon EMR*
+ [Tutorial: Cómo escribir un script AWS Glue para Spark](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-intro-tutorial.html) en la guía del *AWS Glue usuario*

En los temas siguientes se explica cómo crear scripts y bibliotecas de usuario de Python antes de crear y revisar la plantilla de análisis. 

**Topics**
+ [Seguridad para las plantillas PySpark de análisis](#pyspark-analysis-templates-security)
+ [PySpark limitaciones en AWS Clean Rooms](#pyspark-limitations)
+ [Prácticas recomendadas](#python-best-practices)
+ [Crear un script de usuario](create-user-script.md)
+ [Trabajar con parámetros en plantillas PySpark de análisis](pyspark-parameter-handling.md)
+ [Crear un entorno virtual (opcional)](create-virtual-environment.md)
+ [Almacenamiento de un script de usuario y un entorno virtual en S3](store-artifacts-in-s3.md)
+ [Crear una plantilla PySpark de análisis](create-pyspark-analysis-template.md)
+ [Revisión de una plantilla PySpark de análisis](review-pyspark-analysis-template.md)

# Crear un script de usuario
<a name="create-user-script"></a>

El script de usuario debe contener una función de punto de entrada (en otras palabras, un controlador). Puede asignar un nombre a su archivo de script de usuario con cualquier nombre de archivo de Python válido.

El siguiente procedimiento describe cómo crear un script de usuario para definir la funcionalidad principal del PySpark análisis.

**Requisitos previos**
+ PySpark 1.0 (corresponde a Python 3.11 y Spark 3.5.3)
+ Los conjuntos de datos de Amazon S3 solo se pueden leer como asociaciones de tablas configuradas en la sesión de Spark que defina. 
+ Su código no puede llamar directamente a Amazon S3 y AWS Glue
+ Su código no puede realizar llamadas de red

**Para crear un script de usuario**

1. Abra el editor de texto o el entorno de desarrollo integrado (IDE) de su elección.

   Puede usar cualquier editor de texto o IDE (como Visual Studio Code o Notepad\$1\$1) que admita archivos de Python. PyCharm

1. Cree un nuevo archivo de Python con el nombre que desee (por ejemplo,**my\$1analysis.py**).

1. Defina una función de punto de entrada que acepte un parámetro de objeto de contexto.

   ```
   def entrypoint(context)
   ```

   El parámetro de `context` objeto es un diccionario que proporciona acceso a los componentes esenciales de Spark, a las tablas referenciadas y a los parámetros de análisis. Contiene:

   Acceda a la sesión de Spark mediante `context['sparkSession']`

   Tablas referenciadas mediante `context['referencedTables']`

   Parámetros de análisis mediante `context['analysisParameters']` (si los parámetros están definidos en la plantilla)

1. Defina los resultados de la función de punto de entrada: 

   ```
   return results
   ```

   `results`Debe devolver un objeto que contenga un diccionario de resultados con nombres de archivos a una salida. DataFrame
**nota**  
AWS Clean Rooms escribe automáticamente los DataFrame objetos en el depósito S3 del receptor de resultados.

1. Ya puede hacer lo siguiente: 

   1. Guarde este script de usuario en S3. Para obtener más información, consulte [Almacenamiento de un script de usuario y un entorno virtual en S3](store-artifacts-in-s3.md).

   1. Cree el entorno virtual opcional para admitir cualquier biblioteca adicional que necesite su script de usuario. Para obtener más información, consulte [Crear un entorno virtual (opcional)](create-virtual-environment.md).

**Example Ejemplo 1**  

```
# File name: my_analysis.py

def entrypoint(context):
    try:
        # Access Spark session
        spark = context['sparkSession']

        # Access input tables
        input_table1 = context['referencedTables']['table1_name']
        input_table2 = context['referencedTables']['table2_name']

        # Example data processing operations
        output_df1 = input_table1.select("column1", "column2")
        output_df2 = input_table2.join(input_table1, "join_key")
        output_df3 = input_table1.groupBy("category").count()
    
        # Return results - each key creates a separate output folder
        return {
            "results": {
                "output1": output_df1,        # Creates output1/ folder
                "output2": output_df2,        # Creates output2/ folder
                "analysis_summary": output_df3 # Creates analysis_summary/ folder
            }
        }
   
    except Exception as e:
        print(f"Error in main function: {str(e)}")
        raise e
```
La estructura de carpetas de este ejemplo es la siguiente:   

```
analysis_results/
│
├── output1/ # Basic selected columns
│ ├── part-00000.parquet
│ └── _SUCCESS
│
├── output2/ # Joined data
│ ├── part-00000.parquet
│ └── _SUCCESS
│
└── analysis_summary/ # Aggregated results
├── part-00000.parquet
└── _SUCCESS
```

**Example Ejemplo 2**  

```
def entrypoint(context):
    try:
        # Get DataFrames from context
        emp_df = context['referencedTables']['employees']
        dept_df = context['referencedTables']['departments']

        # Apply Transformations
        emp_dept_df = emp_df.join(
            dept_df,
            on="dept_id",
            how="left"
        ).select(
            "emp_id",
            "name",
            "salary",
            "dept_name"
        )

        # Return Dataframes
        return {
            "results": {
                "outputTable": emp_dept_df
            }
        }

    except Exception as e:
        print(f"Error in entrypoint function: {str(e)}")
        raise e
```

# Trabajar con parámetros en plantillas PySpark de análisis
<a name="pyspark-parameter-handling"></a>

Los parámetros aumentan la flexibilidad de sus plantillas de PySpark análisis al permitir que se proporcionen diferentes valores en el momento de enviar los trabajos. Se puede acceder a los parámetros a través del objeto de contexto que se pasa a la función de punto de entrada.

**nota**  
Los parámetros son cadenas proporcionadas por el usuario que pueden contener contenido arbitrario.  
Revise el código para asegurarse de que los parámetros se gestionen de forma segura y evitar comportamientos inesperados en el análisis.
Diseñe el manejo de los parámetros para que funcione de forma segura, independientemente de los valores de los parámetros que se proporcionen en el momento del envío.

## Acceder a los parámetros
<a name="accessing-parameters"></a>

Los parámetros están disponibles en el `context['analysisParameters']` diccionario. Todos los valores de los parámetros son cadenas.

**Example Acceso seguro a los parámetros**  

```
def entrypoint(context):
    # Access parameters from context
    parameters = context['analysisParameters']
    threshold = parameters['threshold']
    table_name = parameters['table_name']
    
    # Continue with analysis using parameters
    spark = context['sparkSession']
    input_df = context['referencedTables'][table_name]
    
    # Convert threshold value
    threshold_val = int(threshold)
    
    # Use parameter in DataFrame operation
    filtered_df = input_df.filter(input_df.amount > threshold_val)
    
    return {
        "results": {
            "output": filtered_df
        }
    }
```

## Prácticas recomendadas de seguridad de parámetros
<a name="parameter-security-best-practices"></a>

**aviso**  
Los parámetros son cadenas proporcionadas por el usuario que pueden contener contenido arbitrario. Debe gestionar los parámetros de forma segura para evitar vulnerabilidades de seguridad en el código de análisis.

**Patrones de manejo de parámetros inseguros para evitar:**
+ **Ejecutar parámetros como código**: nunca utilice `eval()` ni `exec()` sobre los valores de los parámetros

  ```
  # UNSAFE - Don't do this
  eval(parameters['expression'])  # Can execute arbitrary code
  ```
+ **Interpolación de cadenas SQL**: nunca concatene los parámetros directamente en cadenas SQL

  ```
  # UNSAFE - Don't do this
  sql = f"SELECT * FROM table WHERE column = '{parameters['value']}'"  # SQL injection risk
  ```
+ Operaciones de **rutas de archivos no seguras: nunca utilice los parámetros directamente en las operaciones** del sistema de archivos sin validarlos

  ```
  # UNSAFE - Don't do this
  file_path = f"/data/{parameters['filename']}"  # Path traversal risk
  ```

**Patrones de manejo seguro de parámetros:**
+ **Utilice los parámetros en DataFrame las operaciones**: DataFrames maneje los valores de los parámetros de forma segura

  ```
  # SAFE - Use parameters in DataFrame operations
  threshold = int(parameters['threshold'])
  filtered_df = input_df.filter(input_df.value > threshold)
  ```
+ **Valide los valores de los parámetros**: compruebe que los parámetros cumplen con los formatos esperados antes de usarlos

  ```
  # SAFE - Validate parameters before use
  def validate_date(date_str):
      try:
          from datetime import datetime
          datetime.strptime(date_str, '%Y-%m-%d')
          return True
      except ValueError:
          return False
  
  date_param = parameters['date_filter'] or '2024-01-01'
  if not validate_date(date_param):
      raise ValueError(f"Invalid date format: {date_param}")
  ```
+ **Utilice listas de valores permitidos para los valores de los parámetros**: siempre que sea posible, valide los parámetros comparándolos con valores válidos conocidos

  ```
  # SAFE - Use allowlists
  allowed_columns = ['column1', 'column2', 'column3']
  column_param = parameters['column_name']
  if column_param not in allowed_columns:
      raise ValueError(f"Invalid column: {column_param}")
  ```
+ **Conversión de tipos con gestión de errores**: convierta los parámetros de cadena en los tipos esperados de forma segura

  ```
  # SAFE - Convert with error handling
  try:
      batch_size = int(parameters['batch_size'] or '1000')
      if batch_size <= 0 or batch_size > 10000:
          raise ValueError(f"Batch size must be between 1 and 10000")
  except ValueError as e:
      print(f"Invalid parameter: {e}")
      raise
  ```

**importante**  
Recuerde que los parámetros omiten la revisión del código cuando los ejecutores de tareas proporcionan valores diferentes. Diseñe el manejo de los parámetros para que funcione de forma segura, independientemente de los valores de los parámetros que se proporcionen.

## Ejemplo completo de parámetros
<a name="parameter-examples"></a>

**Example Utilizar los parámetros de forma segura en un PySpark script**  

```
def entrypoint(context):
    try:
        # Access Spark session and tables
        spark = context['sparkSession']
        input_table = context['referencedTables']['sales_data']
        
        # Access parameters - fail fast if analysisParameters missing
        parameters = context['analysisParameters']
        
        # Validate and convert numeric parameter (handles empty strings with default)
        try:
            threshold = int(parameters['threshold'] or '100')
            if threshold <= 0:
                raise ValueError("Threshold must be positive")
        except (ValueError, TypeError) as e:
            print(f"Invalid threshold parameter: {e}")
            raise
        
        # Validate date parameter (handles empty strings with default)
        date_filter = parameters['start_date'] or '2024-01-01'
        from datetime import datetime
        try:
            datetime.strptime(date_filter, '%Y-%m-%d')
        except ValueError:
            raise ValueError(f"Invalid date format: {date_filter}")
        
        # Use parameters safely in DataFrame operations
        filtered_df = input_table.filter(
            (input_table.amount > threshold) &
            (input_table.date >= date_filter)
        )
        
        result_df = filtered_df.groupBy("category").agg(
            {"amount": "sum"}
        )
        
        return {
            "results": {
                "filtered_results": result_df
            }
        }
    
    except Exception as e:
        print(f"Error in analysis: {str(e)}")
        raise
```

# Crear un entorno virtual (opcional)
<a name="create-virtual-environment"></a>

Si su script de usuario requiere bibliotecas adicionales, tiene la opción de crear un entorno virtual para almacenar esas bibliotecas. Si no necesita bibliotecas adicionales, puede omitir este paso.

Cuando trabajes con bibliotecas que tienen extensiones nativas, ten en cuenta que PySpark AWS Clean Rooms funciona en Linux con ARM64 arquitectura.

El siguiente procedimiento muestra cómo crear un entorno virtual mediante un comando CLI básico.

**Para crear un entorno virtual**

1. Abra una terminal o una línea de comandos.

1. Añada el siguiente contenido:

   ```
   # create and activate a python virtual environment
   python3 -m venv pyspark_venvsource
   source pyspark_venvsource/bin/activate
   
   # install the python packages
   pip3 install pandas # add packages here
   
   # package the virtual environment into an archive
   pip3 install venv-pack
   venv-pack -f -o pyspark_venv.tar.gz
   
   
   # optionally, remove the virtual environment directory
   deactivate
   rm -fr pyspark_venvsource
   ```

1. Ahora está listo para almacenar este entorno virtual en S3. Para obtener más información, consulte [Almacenamiento de un script de usuario y un entorno virtual en S3](store-artifacts-in-s3.md).

Para obtener más información sobre cómo trabajar con Docker y Amazon ECR, consulta la Guía de [Amazon ECRUser ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/).

# Almacenamiento de un script de usuario y un entorno virtual en S3
<a name="store-artifacts-in-s3"></a>

El siguiente procedimiento explica cómo almacenar un script de usuario y un entorno virtual opcional en Amazon S3. Complete este paso antes de crear una plantilla de PySpark análisis. 

**importante**  
No modifique ni elimine artefactos (scripts de usuario o entornos virtuales) después de crear una plantilla de análisis.  
Si lo hace, hará lo siguiente:  
Provoca que todos los futuros trabajos de análisis que utilicen esta plantilla fallen.
Requiere la creación de una nueva plantilla de análisis con nuevos artefactos.
No afecta a los trabajos de análisis completados anteriormente

**Requisitos previos**
+ Y Cuenta de AWS con los permisos adecuados
+ Un archivo de script de usuario (como`my_analysis.py`)
+ (Opcional, si existe) Un paquete (`.tar.gz`archivo) de entorno virtual 
+ Acceso para crear o modificar funciones de IAM

------
#### [ Console ]

**Para almacenar un script de usuario y un entorno virtual en S3 mediante la consola:**

1. Inicie sesión en la consola de Amazon S3 Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Cree un nuevo bucket de S3 o utilice uno existente.

1. Habilite el control de versiones para el bucket.

   1. Seleccione su depósito.

   1. Seleccione **Propiedades**.

   1. En la sección **Control de versiones de** buckets, selecciona **Editar**.

   1. Seleccione **Activar** y guardar los cambios.

1. Carga tus artefactos y activa el hash SHA-256. 

   1. Navega hasta tu bucket.

   1. Seleccione **Cargar**.

   1. Selecciona **Añadir archivos** y añade tu archivo de script de usuario.

   1. (Opcional, si existe) Añada su **archivo.tar.gz.**

   1. **Amplíe Propiedades.**

   1. En **Sumas de comprobación**, para la **función de suma de comprobación, seleccione**. **SHA256**

   1. Seleccione **Cargar**.

1. Ahora está listo para crear una plantilla de PySpark análisis.

------
#### [ CLI ]

**Para almacenar el script de usuario y el entorno virtual en S3 mediante AWS CLI:**

1. Use el siguiente comando:

   ```
   aws s3 cp --checksum-algorithm sha256 pyspark_venv.tar.gz s3://ARTIFACT-BUCKET/EXAMPLE-PREFIX/
   ```

1. Ahora está listo para crear una plantilla PySpark de análisis.

------

**nota**  
Si necesita actualizar el script o el entorno virtual:   
Cargue la nueva versión como un objeto independiente.
Cree una nueva plantilla de análisis con los nuevos artefactos.
Elimine la plantilla anterior.
Guarde los artefactos originales en S3 si la plantilla anterior pudiera seguir siendo necesaria.

# Crear una plantilla PySpark de análisis
<a name="create-pyspark-analysis-template"></a>

**nota**  
Los parámetros son cadenas proporcionadas por el usuario que pueden contener contenido arbitrario.  
Revise el código para asegurarse de que los parámetros se gestionen de forma segura y evitar comportamientos inesperados en el análisis.
Diseñe el manejo de los parámetros para que funcione de forma segura, independientemente de los valores de los parámetros que se proporcionen en el momento del envío.

**Requisitos previos**

 Antes de crear una plantilla de PySpark análisis, debe tener:
+ Ser miembro de una AWS Clean Rooms colaboración activa
+ Acceso a al menos una tabla configurada en la colaboración activa
+ Permisos para crear plantillas de análisis
+ Un script de usuario de Python y un entorno virtual creados y almacenados en S3
  + El bucket de S3 tiene activado el control de versiones. Para obtener más información, consulte [Uso del control de versiones en buckets de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)
  + El bucket de S3 puede calcular las sumas de comprobación del SHA-256 para los artefactos cargados. [Para obtener más información, consulte Uso de sumas de comprobación](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html)
+ Permisos para leer el código de un bucket de S3

  Para obtener información sobre cómo crear el rol de servicio necesario, consulte[Cree un rol de servicio para leer el código de un bucket de S3 (rol de plantilla de PySpark análisis)](setting-up-roles.md#create-role-pyspark-analysis-template).

El siguiente procedimiento describe el proceso de creación de una plantilla de PySpark análisis mediante la [AWS Clean Rooms consola](https://console.aws.amazon.com/cleanrooms/home). Se supone que ya ha creado un script de usuario y archivos de entorno virtual y que ha almacenado el script de usuario y los archivos del entorno virtual en un bucket de Amazon S3.

**nota**  
El miembro que crea la plantilla de PySpark análisis también debe ser el miembro que reciba los resultados.

Para obtener información sobre cómo crear una plantilla de PySpark análisis mediante la AWS SDKs, consulte la [referencia de la AWS Clean Rooms API](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html).

**Para crear una plantilla PySpark de análisis**

1. Inicie sesión en la [AWS Clean Rooms consola Consola de administración de AWS y ábrala](https://console.aws.amazon.com/cleanrooms/home) con la Cuenta de AWS que funcionará como creador de la colaboración.

1. En el panel de navegación izquierdo, elija **Colaboraciones**.

1. Seleccione la colaboración.

1. En la pestaña **Plantillas**, vaya a la sección **Plantillas de análisis creadas por usted**.

1. Seleccione **Crear plantilla de análisis**.

1. En la página **Crear plantilla de análisis**, en **Detalles**, 

   1. Introduzca un **nombre** para la plantilla de análisis.

   1. (Opcional) Introduzca una **Descripción**.

   1. En **Formato**, elija la **PySpark**opción.

1. En **Definición**,

   1. Revise los **requisitos previos** y asegúrese de que se cumplen todos los requisitos previos antes de continuar.

   1. Para el **archivo de puntos de entrada**, introduzca el bucket de S3 o seleccione **Browse S3**.

   1. (Opcional) Para el **archivo de bibliotecas**, introduzca el depósito de S3 o seleccione **Browse S3**.

1. Para **los parámetros: opcional**, si desea añadir parámetros para que la plantilla de análisis sea reutilizable:

   1. Elija **Add parameter (Añadir parámetro)**.

   1. Introduzca un **nombre de parámetro**.

      Los nombres de los parámetros deben empezar con una letra o un guión bajo, seguidos de caracteres alfanuméricos o guiones bajos.

   1. En **Tipo**, **STRING** se selecciona automáticamente como el único tipo compatible para PySpark las plantillas de análisis.

   1. (Opcional) Introduzca un **valor predeterminado** para el parámetro.

      Si proporciona un valor predeterminado, los ejecutores de tareas pueden usar este valor al ejecutar tareas sin proporcionar explícitamente un valor de parámetro.

   1. Para añadir más parámetros, elija **Añadir otro parámetro** y repita los pasos anteriores.
**nota**  
Puede definir hasta 50 parámetros por plantilla PySpark de análisis. El valor de cada parámetro puede tener un máximo de 1000 caracteres.

1. Para **las tablas a las que se hace referencia en la definición**, 
   + Si todas las tablas a las que se hace referencia en la definición se han asociado a la colaboración:
     + Deje seleccionada la casilla de verificación **Todas las tablas a las que se hace referencia en la definición se han asociado a la colaboración**.
     + En **Tablas asociadas a la colaboración**, seleccione todas las tablas asociadas a las que se hace referencia en la definición. 
   + Si todas las tablas a las que se hace referencia en la definición no se han asociado a la colaboración:
     + Desactive la casilla de verificación **Todas las tablas a las que se hace referencia en la definición se han asociado a la colaboración**.
     + En **Tablas asociadas a la colaboración**, seleccione todas las tablas asociadas a las que se hace referencia en la definición.
     + En **Tablas que se asociarán más adelante**, introduzca un nombre de tabla. 
     + Seleccione **Mostrar otra tabla** para mostrar otra tabla.

1. Para **configurar los mensajes de error**, elija una de las siguientes opciones:
   + **Mensajes de error básicos**: devuelve los mensajes de error básicos sin exponer los datos subyacentes. Recomendado para cargas de trabajo de producción.
   + **Mensajes de error detallados: devuelve mensajes** de error detallados para una solución de problemas más rápida. Se recomienda en entornos de desarrollo y pruebas. Puede exponer datos confidenciales, incluida la información de identificación personal (PII).
**nota**  
Al utilizar **mensajes de error detallados**, todos los miembros del proveedor de datos deben aprobar esta configuración para la plantilla.

1. Especifique los permisos **de acceso al servicio** seleccionando el **nombre de un rol de servicio existente** en la lista desplegable.

   1. Si tiene permisos de listas de roles, se mostrará la lista de roles.

      Si no tiene permisos de listas de roles, puede ingresar el nombre de recurso de Amazon (ARN) del rol que desea usar.

   1. Consulte el rol de servicio mediante la elección del enlace externo **Ver en IAM**.

      Si no hay ningún rol de servicio existente, la opción **Usar un rol de servicio existente** no estará disponible.

      De forma predeterminada, AWS Clean Rooms no intenta actualizar la política de roles existente para añadir los permisos necesarios. 
**nota**  
AWS Clean Rooms requiere permisos para realizar consultas de acuerdo con las reglas de análisis. Para obtener más información sobre los permisos para AWS Clean Rooms, consulte[AWS políticas gestionadas para AWS Clean Rooms](security-iam-awsmanpol.md).
Si el rol no tiene permisos suficientes AWS Clean Rooms, recibirá un mensaje de error que indica que el rol no tiene permisos suficientes AWS Clean Rooms. Debe agregar la política de rol antes de continuar.
Si no puede modificar la política de rol, recibirá un mensaje de error que indica que AWS Clean Rooms no ha podido encontrar la política del rol de servicio.

1. Si desea habilitar la opción de **Etiquetas** para el recurso de tabla configurada, seleccione **Añadir nueva etiqueta** y, a continuación, introduzca el par de **Clave** y **Valor**.

1. Seleccione **Crear**.

1. Ahora puede informar a su miembro de la colaboración de que puede [revisar una plantilla de análisis](review-analysis-template.md). (opcional si desea consultar sus propios datos).

**importante**  
No modifique ni elimine artefactos (scripts de usuario o entornos virtuales) después de crear una plantilla de análisis.  
Si lo hace, hará lo siguiente:  
Provoca que todos los futuros trabajos de análisis que utilicen esta plantilla fallen.
Requiere la creación de una nueva plantilla de análisis con nuevos artefactos.
No afecta a los trabajos de análisis completados anteriormente.

# Revisión de una plantilla PySpark de análisis
<a name="review-pyspark-analysis-template"></a>

Cuando otro miembro crea una plantilla de análisis en su colaboración, usted debe revisarla y aprobarla antes de poder utilizarla. 

El siguiente procedimiento muestra cómo revisar una plantilla de PySpark análisis, incluidas sus reglas, parámetros y tablas a las que se hace referencia. Como miembro de la colaboración, evaluará si la plantilla se ajusta a sus acuerdos de intercambio de datos y a sus requisitos de seguridad.

Una vez aprobada la plantilla de análisis, se puede utilizar en un trabajo en AWS Clean Rooms.

**nota**  
Cuando incorpore su código de análisis a una colaboración, tenga en cuenta lo siguiente:   
AWS Clean Rooms no valida ni garantiza el comportamiento del código de análisis.   
Si necesita garantizar un comportamiento determinado, revise directamente el código de su socio colaborador o póngase en contacto con un auditor externo de confianza para que lo revise.
AWS Clean Rooms garantiza que los hashes SHA-256 del código que figuran en la plantilla de PySpark análisis coincidan con el código que se ejecuta en el PySpark entorno de análisis. 
AWS Clean Rooms no realiza ninguna auditoría ni análisis de seguridad de las bibliotecas adicionales que incorpore al entorno.
En el modelo de seguridad compartida:  
Usted (el cliente) es responsable de la seguridad del código que se ejecuta en el entorno.
Usted (el cliente) es responsable de establecer la configuración adecuada de los mensajes de error para el entorno.
AWS Clean Rooms es responsable de la seguridad del medio ambiente y garantiza que  
solo se ejecuta el código aprobado 
solo se puede acceder a las tablas configuradas especificadas 
el único destino de salida es el depósito S3 del receptor de resultados.

AWS Clean Rooms genera hashes SHA-256 del script de usuario y del entorno virtual para su revisión. Sin embargo, no se puede acceder directamente al script de usuario ni a las bibliotecas en sí. AWS Clean Rooms

Para validar que el script de usuario y las bibliotecas compartidas son los mismos que los referenciados en la plantilla de análisis, puede crear un hash SHA-256 de los archivos compartidos y compararlo con el hash de la plantilla de análisis creado por. AWS Clean Rooms Los hashes del código ejecutado también estarán en los registros de trabajos. 

**Requisitos previos**
+ Sistema operativo Linux/Unix o subsistema Windows para Linux (WSL)
+ Archivo de script de usuario que desea cifrar
  + Solicite al creador de la plantilla de análisis que comparta el archivo a través de un canal seguro.
+ El hash de la plantilla de análisis creado por AWS Clean Rooms

**Para revisar una plantilla de PySpark análisis mediante la AWS Clean Rooms consola**

1. Inicie sesión en la [AWS Clean Rooms consola Consola de administración de AWS y ábrala](https://console.aws.amazon.com/cleanrooms/home) con la Cuenta de AWS que funcionará como creador de colaboraciones.

1. En el panel de navegación izquierdo, elija **Colaboraciones**.

1. Seleccione la colaboración.

1. En la pestaña **Plantillas**, vaya a la sección **Plantillas de análisis creadas por usted**.

1. Elija la plantilla de análisis cuyo estado **Se puede ejecutar** sea **No precisa su revisión**.

1. Elija **Revisar**.

1. Revise la **Descripción general**, la **definición** y los **Parámetros** de la regla de análisis (si procede). 
**nota**  
Los parámetros permiten a los analizadores enviar valores diferentes en el momento del envío. Si una plantilla de análisis admite parámetros, revise cómo se utilizan los valores de los parámetros en el código de su socio colaborador para asegurarse de que cumple sus requisitos.

1. Compruebe que el script de usuario compartido y las bibliotecas sean los mismos a los que se hace referencia en la plantilla de análisis.

   1. Cree un hash SHA-256 de los archivos compartidos y compárelo con el hash de la plantilla de análisis creado por. AWS Clean Rooms

      Para generar un hash, diríjase al directorio que contiene el archivo de script de usuario y, a continuación, ejecute el siguiente comando: 

      ```
      sha256sum your_script_filename.py
      ```

      Ejemplo de código de salida:

      ```
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 my_analysis.py
      ```

   1. Como alternativa, puede utilizar las funciones de suma de comprobación de Amazon S3. Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html) en la *Guía del usuario de Amazon S3*.

   1. Otra alternativa es ver los hashes del código ejecutado en los registros de trabajos.

1. Revise las tablas configuradas que se enumeran en **Tablas a las que se hace referencia en la definición**. 

   El **Estado** que aparece junto a cada tabla indicará **Plantilla no permitida**.

1. Elija una tabla.

   1. Para aprobar la plantilla de análisis, elija **Permitir la plantilla en la tabla.** Para confirmar su aprobación, seleccione **Permitir**.

   1. Para rechazar la aprobación, seleccione **No permitir**.

Si ha decidido aprobar la plantilla de análisis, el miembro que puede ejecutar los trabajos ahora puede ejecutar un PySpark trabajo en una tabla configurada mediante una plantilla de PySpark análisis. Para obtener más información, consulte [Ejecutando PySpark trabajos](run-jobs.md).