

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# PySpark modèles d'analyse
<a name="pyspark-analysis-templates"></a>

PySpark les modèles d'analyse nécessitent un script utilisateur Python et un environnement virtuel facultatif pour utiliser des bibliothèques personnalisées et open source. Ces fichiers sont appelés artefacts. 

Avant de créer un modèle d'analyse, vous devez d'abord créer les artefacts, puis les stocker dans un compartiment Amazon S3. AWS Clean Rooms utilise ces artefacts lors de l'exécution de tâches d'analyse. AWS Clean Rooms accède aux artefacts uniquement lors de l'exécution d'une tâche. 

Avant d'exécuter du code sur un modèle d' PySpark analyse, AWS Clean Rooms valide les artefacts en : 
+ Vérification de la version spécifique de l'objet S3 utilisée lors de la création du modèle
+ Vérification du hachage SHA-256 de l'artefact 
+ Échec d'une tâche où des artefacts ont été modifiés ou supprimés

**Note**  
La taille maximale de tous les artefacts combinés pour un modèle d' PySpark analyse donné AWS Clean Rooms est de 1 Go.

## Sécurité pour les modèles PySpark d'analyse
<a name="pyspark-analysis-templates-security"></a>

Pour préserver un environnement informatique sécurisé, AWS Clean Rooms utilise une architecture informatique à deux niveaux pour isoler le code utilisateur des opérations du système. Cette architecture est basée sur la technologie de contrôle d'accès fine sans serveur Amazon EMR, également connue sous le nom de Membrane. Pour plus d'informations, voir [Membrane — Contrôles d'accès aux données sûrs et performants dans Apache Spark en présence de code impératif](https://www.amazon.science/publications/membrane-safe-and-performant-data-access-controls-in-apache-spark-in-the-presence-of-imperative-code).

Les composants de l'environnement informatique sont divisés en un espace utilisateur et un espace système distincts. L'espace utilisateur exécute le PySpark code dans le modèle PySpark d'analyse. AWS Clean Rooms utilise l'espace système pour permettre l'exécution de la tâche, notamment en utilisant les rôles de service fournis par les clients pour lire les données nécessaires à l'exécution de la tâche et en implémentant la liste des colonnes autorisées. En raison de cette architecture, le PySpark code d'un client qui affecte l'espace système, qui peut inclure un petit nombre de Spark SQL PySpark DataFrames APIs, est bloqué.

## PySpark limites dans AWS Clean Rooms
<a name="pyspark-limitations"></a>

Lorsque les clients soumettent un modèle d' PySpark analyse approuvé, il l' AWS Clean Rooms exécute sur son propre environnement informatique sécurisé auquel aucun client ne peut accéder. L'environnement informatique met en œuvre une architecture informatique avec un espace utilisateur et un espace système afin de préserver un environnement informatique sécurisé. Pour de plus amples informations, veuillez consulter [Sécurité pour les modèles PySpark d'analyse](#pyspark-analysis-templates-security).

Tenez compte des limites suivantes avant de PySpark l'utiliser AWS Clean Rooms. 

**Limites**
+ Seules les DataFrame sorties sont prises en charge
+ Une seule session Spark par exécution de tâche

**Fonctions non prises en charge**
+ **Gestion des données**
  + Formats de tableaux Iceberg
  + LakeFormation tables gérées
  + Jeux de données distribués résilients (RDD)
  + Spark Streaming
  + Contrôle d’accès pour les colonnes imbriquées
+ **Fonctions et extensions personnalisées**
  + Fonctions de table définies par l'utilisateur () UDTFs
  + Ruche UDFs
  + Classes personnalisées dans les fonctions définies par l'utilisateur
  + Sources de données personnalisées
  + Fichiers JAR supplémentaires pour :
    + Extensions Spark
    + Connecteurs
    + Configurations de métastore
+ **Surveillance et analyse**
  + Journalisation Spark
  + Interface utilisateur Spark
  + Commandes de l’`ANALYZE TABLE`

**Important**  
Ces limites sont en place pour maintenir l'isolation de sécurité entre les espaces utilisateur et système.  
Toutes les restrictions s'appliquent quelle que soit la configuration de collaboration.  
Les mises à jour futures peuvent ajouter la prise en charge de fonctionnalités supplémentaires en fonction des évaluations de sécurité.

## Bonnes pratiques
<a name="python-best-practices"></a>

Nous recommandons les meilleures pratiques suivantes lors de la création de modèles PySpark d'analyse.
+ Concevez vos modèles d'analyse [PySpark limites dans AWS Clean Rooms](#pyspark-limitations) en gardant cela à l'esprit.
+ Testez d'abord votre code dans un environnement de développement.
+ Utilisez exclusivement les DataFrame opérations prises en charge.
+ Planifiez votre structure de sortie pour qu'elle fonctionne avec DataFrame les limites.

Nous recommandons les meilleures pratiques suivantes pour gérer les artefacts
+ Conservez tous les artefacts du modèle d' PySpark analyse dans un compartiment ou un préfixe S3 dédié.
+ Utilisez un nom de version clair pour les différentes versions d'artefacts.
+ Créez de nouveaux modèles d'analyse lorsque des mises à jour d'artefacts sont nécessaires.
+ Tenez à jour un inventaire des modèles qui utilisent les différentes versions des artefacts.

Pour plus d'informations sur la façon d'écrire du code Spark, consultez ce qui suit : 
+ [Exemples d'Apache Spark](https://spark.apache.org/examples.html)
+ [Écrire une application Spark](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-application.html) dans le guide de mise à *jour d'Amazon EMR*
+ [Tutoriel : Écrire un script AWS Glue pour Spark](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-intro-tutorial.html) dans le *guide de AWS Glue l'utilisateur*

Les rubriques suivantes expliquent comment créer des bibliothèques et des scripts utilisateur Python avant de créer et de réviser le modèle d'analyse. 

**Topics**
+ [Sécurité pour les modèles PySpark d'analyse](#pyspark-analysis-templates-security)
+ [PySpark limites dans AWS Clean Rooms](#pyspark-limitations)
+ [Bonnes pratiques](#python-best-practices)
+ [Création d'un script utilisateur](create-user-script.md)
+ [Utilisation des paramètres dans les modèles PySpark d'analyse](pyspark-parameter-handling.md)
+ [Création d'un environnement virtuel (facultatif)](create-virtual-environment.md)
+ [Stockage d'un script utilisateur et d'un environnement virtuel dans S3](store-artifacts-in-s3.md)
+ [Création d'un modèle PySpark d'analyse](create-pyspark-analysis-template.md)
+ [Révision d'un modèle PySpark d'analyse](review-pyspark-analysis-template.md)

# Création d'un script utilisateur
<a name="create-user-script"></a>

Le script utilisateur doit contenir une fonction de point d'entrée (en d'autres termes, un gestionnaire). Vous pouvez nommer votre fichier de script utilisateur avec n'importe quel nom de fichier Python valide.

La procédure suivante explique comment créer un script utilisateur pour définir les fonctionnalités principales de votre PySpark analyse.

**Conditions préalables**
+ PySpark 1.0 (correspond à Python 3.11 et Spark 3.5.3)
+ Les ensembles de données d'Amazon S3 ne peuvent être lus que sous forme d'associations de tables configurées dans la session Spark que vous définissez. 
+ Votre code ne peut pas appeler directement Amazon S3 et AWS Glue
+ Votre code ne peut pas passer d'appels réseau

**Pour créer un script utilisateur**

1. Ouvrez un éditeur de texte ou un environnement de développement intégré (IDE) de votre choix.

   Vous pouvez utiliser n'importe quel éditeur de texte ou IDE (tel que Visual Studio Code ou Notepad\$1\$1) qui prend en charge les fichiers Python. PyCharm

1. Créez un nouveau fichier Python avec le nom de votre choix (par exemple,**my\$1analysis.py**).

1. Définissez une fonction de point d'entrée qui accepte un paramètre d'objet contextuel.

   ```
   def entrypoint(context)
   ```

   Le paramètre `context` object est un dictionnaire qui donne accès aux composants essentiels de Spark, aux tables référencées et aux paramètres d'analyse. Il contient :

   Accès à la session Spark via `context['sparkSession']`

   Tables référencées via `context['referencedTables']`

   Paramètres d'analyse via `context['analysisParameters']` (si les paramètres sont définis dans le modèle)

1. Définissez les résultats de la fonction entrypoint : 

   ```
   return results
   ```

   Le `results` doit renvoyer un objet contenant un dictionnaire de résultats de noms de fichiers vers une sortie. DataFrame
**Note**  
AWS Clean Rooms écrit automatiquement les DataFrame objets dans le compartiment S3 du récepteur des résultats.

1. Vous êtes maintenant prêt à : 

   1. Stockez ce script utilisateur dans S3. Pour de plus amples informations, veuillez consulter [Stockage d'un script utilisateur et d'un environnement virtuel dans S3](store-artifacts-in-s3.md).

   1. Créez l'environnement virtuel facultatif pour prendre en charge les bibliothèques supplémentaires requises par votre script utilisateur. Pour de plus amples informations, veuillez consulter [Création d'un environnement virtuel (facultatif)](create-virtual-environment.md).

**Example Exemple 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 structure de dossiers de cet exemple est la suivante :   

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

# Utilisation des paramètres dans les modèles PySpark d'analyse
<a name="pyspark-parameter-handling"></a>

Les paramètres augmentent la flexibilité de vos modèles d' PySpark analyse en permettant de fournir différentes valeurs au moment de la soumission des tâches. Les paramètres sont accessibles via l'objet de contexte transmis à votre fonction de point d'entrée.

**Note**  
Les paramètres sont des chaînes fournies par l'utilisateur qui peuvent contenir du contenu arbitraire.  
Passez en revue le code pour vous assurer que les paramètres sont gérés en toute sécurité afin d'éviter tout comportement inattendu dans votre analyse.
Concevez la gestion des paramètres de manière à ce qu'elle fonctionne en toute sécurité, quelles que soient les valeurs des paramètres fournies au moment de la soumission.

## Accès aux paramètres
<a name="accessing-parameters"></a>

Les paramètres sont disponibles dans le `context['analysisParameters']` dictionnaire. Toutes les valeurs des paramètres sont des chaînes de caractères.

**Example Accès aux paramètres en toute sécurité**  

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

## Bonnes pratiques de sécurité pour les paramètres
<a name="parameter-security-best-practices"></a>

**Avertissement**  
Les paramètres sont des chaînes fournies par l'utilisateur qui peuvent contenir du contenu arbitraire. Vous devez gérer les paramètres en toute sécurité pour éviter les failles de sécurité dans votre code d'analyse.

**Modèles de gestion des paramètres non sécurisés à éviter :**
+ **Exécution de paramètres sous forme de code** — Ne jamais utiliser `eval()` ou `exec()` sur des valeurs de paramètres

  ```
  # UNSAFE - Don't do this
  eval(parameters['expression'])  # Can execute arbitrary code
  ```
+ **Interpolation de chaînes SQL** — Ne concaténez jamais de paramètres directement dans des chaînes SQL

  ```
  # UNSAFE - Don't do this
  sql = f"SELECT * FROM table WHERE column = '{parameters['value']}'"  # SQL injection risk
  ```
+ **Opérations de chemin de fichier non sécurisées** : n'utilisez jamais de paramètres directement dans les opérations du système de fichiers sans validation

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

**Modèles de gestion des paramètres sécurisés :**
+ **Utiliser les paramètres dans les DataFrame opérations** — Spark DataFrames gère les valeurs des paramètres en toute sécurité

  ```
  # SAFE - Use parameters in DataFrame operations
  threshold = int(parameters['threshold'])
  filtered_df = input_df.filter(input_df.value > threshold)
  ```
+ **Valider les valeurs des paramètres** — Vérifiez que les paramètres répondent aux formats attendus avant utilisation

  ```
  # 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}")
  ```
+ **Utiliser des listes d'autorisation pour les valeurs des paramètres** : dans la mesure du possible, validez les paramètres par rapport aux bonnes valeurs connues

  ```
  # 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}")
  ```
+ **Conversion de type avec gestion des erreurs** — Convertissez les paramètres de chaîne en types attendus en toute sécurité

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

**Important**  
N'oubliez pas que les paramètres ignorent la révision du code lorsque les exécuteurs de tâches fournissent des valeurs différentes. Concevez votre gestion des paramètres pour qu'elle fonctionne en toute sécurité, quelles que soient les valeurs de paramètres fournies.

## Exemple de paramètre complet
<a name="parameter-examples"></a>

**Example Utilisation sécurisée des paramètres dans 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
```

# Création d'un environnement virtuel (facultatif)
<a name="create-virtual-environment"></a>

Si des bibliothèques supplémentaires sont requises par votre script utilisateur, vous avez la possibilité de créer un environnement virtuel pour stocker ces bibliothèques. Si vous n'avez pas besoin de bibliothèques supplémentaires, vous pouvez ignorer cette étape.

Lorsque vous travaillez avec des bibliothèques dotées d'extensions natives, gardez à l'esprit qu'elles AWS Clean Rooms fonctionnent PySpark sous Linux avec une ARM64 architecture.

La procédure suivante explique comment créer un environnement virtuel à l'aide d'une commande CLI de base.

**Pour créer un environnement virtuel**

1. Ouvrez un terminal ou une invite de commande.

1. Ajoutez le contenu suivant :

   ```
   # 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. Vous êtes maintenant prêt à stocker cet environnement virtuel dans S3. Pour de plus amples informations, veuillez consulter [Stockage d'un script utilisateur et d'un environnement virtuel dans S3](store-artifacts-in-s3.md).

Pour plus d'informations sur l'utilisation de Docker et d'Amazon ECR, consultez le guide [Amazon ECRUser ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/).

# Stockage d'un script utilisateur et d'un environnement virtuel dans S3
<a name="store-artifacts-in-s3"></a>

La procédure suivante explique comment stocker un script utilisateur et un environnement virtuel facultatif dans Amazon S3. Effectuez cette étape avant de créer un modèle d' PySpark analyse. 

**Important**  
Ne modifiez ni ne supprimez d'artefacts (scripts utilisateur ou environnements virtuels) après avoir créé un modèle d'analyse.  
Cela permettra de :  
Faire échouer toutes les futures tâches d'analyse utilisant ce modèle.
Exiger la création d'un nouveau modèle d'analyse avec de nouveaux artefacts.
Pas d'incidence sur les tâches d'analyse effectuées précédemment

**Conditions préalables**
+ Et Compte AWS avec les autorisations appropriées
+ Un fichier de script utilisateur (tel que`my_analysis.py`)
+ (Facultatif, s'il existe) Un package d'environnement virtuel (`.tar.gz`fichier) 
+ Accès pour créer ou modifier des rôles IAM

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

**Pour stocker un script utilisateur et un environnement virtuel dans S3 à l'aide de la console :**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Créez un nouveau compartiment S3 ou utilisez-en un existant.

1. Activez la gestion des versions pour le compartiment.

   1. Sélectionnez votre compartiment.

   1. Choisissez **Propriétés**.

   1. Dans la section **Gestion des versions des** compartiments, choisissez **Modifier**.

   1. Sélectionnez **Activer** et enregistrez les modifications.

1. Téléchargez vos artefacts et activez le hachage SHA-256. 

   1. Accédez à votre compartiment.

   1. Choisissez **Charger**.

   1. Choisissez **Ajouter des fichiers** et ajoutez votre fichier de script utilisateur.

   1. (Facultatif, s'il en existe un) Ajoutez votre **fichier .tar.gz**.

   1. Développez **les propriétés**.

   1. Sous **Checksums**, pour la **fonction Checksum, sélectionnez**. **SHA256**

   1. Choisissez **Charger**.

1. Vous êtes maintenant prêt à créer un modèle d' PySpark analyse.

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

**Pour stocker le script utilisateur et l'environnement virtuel dans S3 à l'aide de AWS CLI :**

1. Exécutez la commande suivante :

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

1. Vous êtes maintenant prêt à créer un modèle d' PySpark analyse.

------

**Note**  
Si vous devez mettre à jour le script ou l'environnement virtuel :   
Téléchargez la nouvelle version en tant qu'objet distinct.
Créez un nouveau modèle d'analyse à l'aide des nouveaux artefacts.
Dépréciez l'ancien modèle.
Conservez les artefacts d'origine dans S3 si l'ancien modèle est toujours nécessaire.

# Création d'un modèle PySpark d'analyse
<a name="create-pyspark-analysis-template"></a>

**Note**  
Les paramètres sont des chaînes fournies par l'utilisateur qui peuvent contenir du contenu arbitraire.  
Passez en revue le code pour vous assurer que les paramètres sont gérés en toute sécurité afin d'éviter tout comportement inattendu dans votre analyse.
Concevez la gestion des paramètres de manière à ce qu'elle fonctionne en toute sécurité, quelles que soient les valeurs des paramètres fournies au moment de la soumission.

**Conditions préalables**

 Avant de créer un modèle d' PySpark analyse, vous devez disposer des éléments suivants :
+ L'adhésion à une AWS Clean Rooms collaboration active
+ Accès à au moins une table configurée dans la collaboration active
+ Autorisations pour créer des modèles d'analyse
+ Un script utilisateur Python et un environnement virtuel créés et stockés dans S3
  + La gestion des versions est activée dans le compartiment S3. Pour plus d'informations, voir [Utilisation de la gestion des versions dans les compartiments S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)
  + Le compartiment S3 peut calculer les sommes de contrôle SHA-256 pour les artefacts téléchargés. Pour plus d'informations, voir [Utilisation des checksums](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html)
+ Autorisations pour lire le code d'un compartiment S3

  Pour plus d'informations sur la création du rôle de service requis, consultez[Création d'un rôle de service pour lire le code d'un compartiment S3 (rôle de modèle d'PySpark analyse)](setting-up-roles.md#create-role-pyspark-analysis-template).

La procédure suivante décrit le processus de création d'un modèle d' PySpark analyse à l'aide de la [AWS Clean Rooms console](https://console.aws.amazon.com/cleanrooms/home). Cela suppose que vous avez déjà créé un script utilisateur et des fichiers d'environnement virtuel et que vous avez stocké votre script utilisateur et vos fichiers d'environnement virtuel dans un compartiment Amazon S3.

**Note**  
Le membre qui crée le modèle PySpark d'analyse doit également être celui qui reçoit les résultats.

Pour plus d'informations sur la création d'un modèle d' PySpark analyse à l'aide du AWS SDKs, consultez la [référence de l'AWS Clean Rooms API](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html).

**Pour créer un modèle PySpark d'analyse**

1. Connectez-vous à la console AWS Management Console et ouvrez-la avec la [AWS Clean Rooms console](https://console.aws.amazon.com/cleanrooms/home) Compte AWS qui fonctionnera en tant que créateur de collaboration.

1. Dans le volet de navigation de gauche, sélectionnez **Collaborations**.

1. Choisissez la collaboration.

1. Dans l'onglet **Modèles**, accédez à la section **Modèles d'analyse que vous avez créés**.

1. Choisissez **Créer un modèle d'analyse**.

1. Sur la page **Créer un modèle d'analyse**, pour **plus de détails**, 

   1. Entrez un **nom** pour le modèle d'analyse.

   1. (Facultatif) Entrez une **description**.

   1. Pour **Format**, choisissez l'**PySpark**option.

1. Pour **la définition**,

   1. Passez en revue **les prérequis** et assurez-vous que chaque condition préalable est remplie avant de continuer.

   1. Pour le **fichier du point d'entrée**, entrez dans le compartiment S3 ou choisissez **Browse S3**.

   1. (Facultatif) Pour **le fichier Libraries**, entrez dans le compartiment S3 ou choisissez **Browse S3**.

1. Pour **les paramètres : facultatif**, si vous souhaitez ajouter des paramètres afin de rendre votre modèle d'analyse réutilisable :

   1. Choisissez **Ajouter un paramètre**.

   1. Entrez un **nom de paramètre**.

      Les noms des paramètres doivent commencer par une lettre ou un trait de soulignement, suivi de caractères alphanumériques ou de traits de soulignement.

   1. Pour **Type**, **STRING** est automatiquement sélectionné comme seul type pris en charge pour les modèles PySpark d'analyse.

   1. (Facultatif) Entrez une **valeur par défaut** pour le paramètre.

      Si vous fournissez une valeur par défaut, les exécuteurs de tâches peuvent utiliser cette valeur lorsqu'ils exécutent des tâches sans fournir explicitement de valeur de paramètre.

   1. Pour ajouter d'autres paramètres, choisissez **Ajouter un autre paramètre** et répétez les étapes précédentes.
**Note**  
Vous pouvez définir jusqu'à 50 paramètres par modèle PySpark d'analyse. Chaque valeur de paramètre peut comporter jusqu'à 1 000 caractères.

1. Pour **les tables référencées dans la définition**, 
   + Si toutes les tables référencées dans la définition ont été associées à la collaboration :
     + Laissez la case **Toutes les tables référencées dans la définition ont été associées à la collaboration** cochée.
     + Sous **Tables associées à la collaboration**, choisissez toutes les tables associées référencées dans la définition. 
   + Si toutes les tables référencées dans la définition n'ont pas été associées à la collaboration :
     + Décochez la case **Toutes les tables référencées dans la définition ont été associées à la collaboration**.
     + Sous **Tables associées à la collaboration**, choisissez toutes les tables associées référencées dans la définition.
     + Sous **Tables qui seront associées ultérieurement**, entrez un nom de table. 
     + Choisissez **Répertorier une autre table** pour répertorier une autre table.

1. Pour la **configuration des messages d'erreur**, choisissez l'une des options suivantes :
   + **Messages d'erreur** de base : renvoie les messages d'erreur de base sans exposer les données sous-jacentes. Recommandé pour les charges de travail de production.
   + **Messages d'erreur détaillés** : renvoie des messages d'erreur détaillés pour accélérer le dépannage. Recommandé dans les environnements de développement et de test. Peut exposer des données sensibles, y compris des informations personnelles identifiables (PII).
**Note**  
Lorsque vous utilisez **des messages d'erreur détaillés**, tous les membres du fournisseur de données doivent approuver ce paramètre pour le modèle.

1. Spécifiez les autorisations **d'accès au service** en sélectionnant un **nom de rôle de service existant** dans la liste déroulante.

   1. La liste des rôles s'affiche si vous êtes autorisé à répertorier les rôles.

      Si vous n'êtes pas autorisé à répertorier les rôles, vous pouvez saisir le nom de ressource Amazon (ARN) du rôle que vous souhaitez utiliser.

   1. Affichez le rôle de service en choisissant le lien externe **Afficher dans IAM**.

      S'il n'existe aucun rôle de service existant, l'option **Utiliser un rôle de service existant** n'est pas disponible.

      Par défaut, AWS Clean Rooms ne tente pas de mettre à jour la politique de rôle existante pour ajouter les autorisations nécessaires. 
**Note**  
AWS Clean Rooms nécessite des autorisations pour effectuer des requêtes conformément aux règles d'analyse. Pour plus d'informations sur les autorisations pour AWS Clean Rooms, voir[AWS politiques gérées pour AWS Clean Rooms](security-iam-awsmanpol.md).
Si le rôle ne dispose pas d'autorisations suffisantes pour AWS Clean Rooms, vous recevez un message d'erreur indiquant que le rôle ne dispose pas d'autorisations suffisantes pour AWS Clean Rooms. La politique de rôle doit être ajoutée avant de continuer.
Si vous ne pouvez pas modifier la politique de rôle, vous recevez un message d'erreur indiquant que AWS Clean Rooms la politique du rôle de service est introuvable.

1. Si vous souhaitez activer les **balises** pour la ressource de table configurée, choisissez **Ajouter une nouvelle balise**, puis entrez la paire ****clé/valeur****.

1. Choisissez **Créer**.

1. Vous êtes maintenant prêt à informer le membre de votre collaboration qu'il peut [réviser un modèle d'analyse](review-analysis-template.md). (Facultatif si vous souhaitez interroger vos propres données.)

**Important**  
Ne modifiez ni ne supprimez d'artefacts (scripts utilisateur ou environnements virtuels) après avoir créé un modèle d'analyse.  
Cela permettra de :  
Faire échouer toutes les futures tâches d'analyse utilisant ce modèle.
Exiger la création d'un nouveau modèle d'analyse avec de nouveaux artefacts.
Cela n'affecte pas les tâches d'analyse effectuées précédemment.

# Révision d'un modèle PySpark d'analyse
<a name="review-pyspark-analysis-template"></a>

Lorsqu'un autre membre crée un modèle d'analyse dans votre collaboration, vous devez le consulter et l'approuver avant de pouvoir l'utiliser. 

La procédure suivante explique comment examiner un modèle d' PySpark analyse, notamment ses règles, ses paramètres et ses tables référencées. En tant que membre de la collaboration, vous évaluerez si le modèle est conforme à vos accords de partage de données et à vos exigences de sécurité.

Une fois le modèle d'analyse approuvé, il peut être utilisé dans une tâche dans AWS Clean Rooms.

**Note**  
Lorsque vous intégrez votre code d'analyse à une collaboration, tenez compte des points suivants :   
AWS Clean Rooms ne valide ni ne garantit le comportement du code d'analyse.   
Si vous devez vous assurer de certains comportements, consultez directement le code de votre partenaire de collaboration ou confiez-le à un auditeur tiers de confiance.
AWS Clean Rooms garantit que les hachages SHA-256 du code répertorié dans le modèle d' PySparkanalyse correspondent au code exécuté dans l' PySpark environnement d'analyse. 
AWS Clean Rooms n'effectue aucun audit ni aucune analyse de sécurité des bibliothèques supplémentaires que vous importez dans l'environnement.
Dans le modèle de sécurité partagé :  
Vous (le client) êtes responsable de la sécurité du code exécuté dans l'environnement.
Vous (le client) êtes responsable de définir la configuration des messages d'erreur appropriée pour l'environnement.
AWS Clean Rooms est responsable de la sécurité de l'environnement, en veillant à ce que  
seul le code approuvé s'exécute 
seules les tables configurées spécifiées sont accessibles 
la seule destination de sortie est le compartiment S3 du récepteur des résultats.

AWS Clean Rooms génère des hachages SHA-256 du script utilisateur et de l'environnement virtuel pour votre examen. Cependant, le script utilisateur et les bibliothèques eux-mêmes ne sont pas directement accessibles depuis AWS Clean Rooms. 

Pour vérifier que le script utilisateur et les bibliothèques partagés sont identiques à ceux référencés dans le modèle d'analyse, vous pouvez créer un hachage SHA-256 des fichiers partagés et le comparer au hachage du modèle d'analyse créé par. AWS Clean Rooms Les hachages du code exécuté figureront également dans les journaux des tâches. 

**Conditions préalables**
+ Système d'exploitation Linux/Unix ou sous-système Windows pour Linux (WSL)
+ Fichier de script utilisateur que vous souhaitez hacher
  + Demandez au créateur du modèle d'analyse de partager le fichier via un canal sécurisé.
+ Le hachage du modèle d'analyse créé par AWS Clean Rooms

**Pour consulter un modèle d' PySpark analyse à l'aide de la AWS Clean Rooms console**

1. Connectez-vous à la console AWS Management Console et ouvrez-la avec la [AWS Clean Rooms console](https://console.aws.amazon.com/cleanrooms/home) Compte AWS qui fonctionnera en tant que créateur de collaboration.

1. Dans le volet de navigation de gauche, sélectionnez **Collaborations**.

1. Choisissez la collaboration.

1. Dans l'onglet **Modèles**, accédez à la section **Modèles d'analyse créés par d'autres membres**.

1. Choisissez le modèle d'analyse dont le **statut Peut être exécuté** est **Non nécessite votre révision**.

1. Choisissez **Examiner**.

1. Consultez la **présentation**, la **définition** et les **paramètres** des règles d'analyse (le cas échéant). 
**Note**  
Les paramètres permettent aux analyseurs de soumettre différentes valeurs au moment de la soumission. Si un modèle d'analyse prend en charge les paramètres, vérifiez comment les valeurs des paramètres sont utilisées dans le code de votre partenaire de collaboration pour vous assurer qu'il répond à vos exigences.

1. Vérifiez que le script utilisateur partagé et les bibliothèques sont identiques à ceux référencés dans le modèle d'analyse.

   1. Créez un hachage SHA-256 des fichiers partagés et comparez-le au hachage du modèle d'analyse créé par. AWS Clean Rooms

      Vous pouvez générer un hachage en accédant au répertoire contenant votre fichier de script utilisateur, puis en exécutant la commande suivante : 

      ```
      sha256sum your_script_filename.py
      ```

      Exemple de sortie :

      ```
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 my_analysis.py
      ```

   1. Vous pouvez également utiliser les fonctionnalités de somme de contrôle d'Amazon S3. Pour plus d'informations, consultez la section [https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html) dans le *guide de l'utilisateur Amazon S3*.

   1. Une autre solution consiste à afficher les hachages du code exécuté dans les journaux des tâches.

1. Passez en revue les tables configurées répertoriées sous **Tables référencées dans la définition**. 

   Le **statut** à côté de chaque table indiquera **Modèle non autorisé**.

1. Choisissez une table .

   1. Pour approuver le modèle d'analyse, choisissez **Autoriser le modèle sur la table**. Confirmez votre approbation en choisissant **Autoriser**.

   1. Pour refuser l'approbation, choisissez **Disallow**.

Si vous avez choisi d'approuver le modèle d'analyse, le membre autorisé à exécuter des tâches peut désormais exécuter une PySpark tâche sur une table configurée à l'aide d'un modèle d' PySpark analyse. Pour de plus amples informations, veuillez consulter [Exécution de PySpark tâches](run-jobs.md).