

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# PySpark Analysevorlagen
<a name="pyspark-analysis-templates"></a>

PySpark Analysevorlagen erfordern ein Python-Benutzerskript und eine optionale virtuelle Umgebung, um benutzerdefinierte Bibliotheken und Open-Source-Bibliotheken verwenden zu können. Diese Dateien werden Artefakte genannt. 

Bevor Sie eine Analysevorlage erstellen, erstellen Sie zuerst die Artefakte und speichern sie dann in einem Amazon S3 S3-Bucket. AWS Clean Rooms verwendet diese Artefakte bei der Ausführung von Analyseaufträgen. AWS Clean Rooms greift nur bei der Ausführung eines Jobs auf die Artefakte zu. 

Bevor Code auf einer PySpark Analysevorlage ausgeführt wird, werden Artefakte wie AWS Clean Rooms folgt validiert: 
+ Überprüfung der spezifischen S3-Objektversion, die bei der Erstellung der Vorlage verwendet wurde
+ Überprüfung des SHA-256-Hashs des Artefakts 
+ Fehler bei einem Job, bei dem Artefakte geändert oder entfernt wurden

**Anmerkung**  
Die maximale Größe aller kombinierten Artefakte für eine bestimmte PySpark Analysevorlage AWS Clean Rooms beträgt 1 GB.

## Sicherheit für PySpark Analysevorlagen
<a name="pyspark-analysis-templates-security"></a>

Um eine sichere Datenverarbeitungsumgebung zu gewährleisten, AWS Clean Rooms verwendet es eine zweistufige Rechenarchitektur, um Benutzercode vom Systembetrieb zu isolieren. Diese Architektur basiert auf der Amazon EMR Serverless Fine Grained Access Control-Technologie, auch bekannt als Membrane. Weitere Informationen finden Sie unter [Membrane — Sichere und leistungsstarke Datenzugriffskontrollen in Apache Spark bei Vorhandensein von imperativem](https://www.amazon.science/publications/membrane-safe-and-performant-data-access-controls-in-apache-spark-in-the-presence-of-imperative-code) Code.

Die Komponenten der Rechenumgebung sind in einen separaten Benutzerbereich und einen Systembereich unterteilt. Der Benutzerbereich führt den PySpark Code in der PySpark Analysevorlage aus. AWS Clean Rooms verwendet den Systemspeicher, um die Ausführung des Jobs zu ermöglichen, einschließlich der Verwendung von Servicerollen, die von Kunden bereitgestellt werden, um Daten zur Ausführung des Jobs zu lesen und die Spalte Allowlist zu implementieren. Aufgrund dieser Architektur wird der PySpark Code eines Kunden, der sich auf den Systemspeicher auswirkt und der eine geringe Anzahl von Spark-SQL und enthalten könnte PySpark DataFrames APIs, blockiert.

## PySpark Einschränkungen in AWS Clean Rooms
<a name="pyspark-limitations"></a>

Wenn Kunden eine genehmigte PySpark Analysevorlage einreichen, AWS Clean Rooms wird diese in einer eigenen sicheren Computerumgebung ausgeführt, auf die kein Kunde zugreifen kann. Die Rechenumgebung implementiert eine Rechenarchitektur mit einem Benutzerbereich und einem Systembereich, um eine sichere Computerumgebung zu gewährleisten. Weitere Informationen finden Sie unter [Sicherheit für PySpark Analysevorlagen](#pyspark-analysis-templates-security).

Beachten Sie die folgenden Einschränkungen, bevor Sie PySpark in verwenden AWS Clean Rooms. 

**Einschränkungen**
+ Es werden nur DataFrame Ausgaben unterstützt
+ Eine einzige Spark-Sitzung pro Jobausführung

**Nicht unterstützte Funktionen**
+ **Datenverwaltung**
  + Iceberg-Tabellenformate
  + LakeFormation verwaltete Tabellen
  + Resilient Distributed Datasets (RDD)
  + Spark-Streaming
  + Zugriffskontrolle für verschachtelte Spalten
+ **Benutzerdefinierte Funktionen und Erweiterungen**
  + Benutzerdefinierte Tabellenfunktionen () UDTFs
  + Bienenstock UDFs
  + Benutzerdefinierte Klassen in benutzerdefinierten Funktionen
  + Benutzerdefinierte Datenquellen
  + Zusätzliche JAR-Dateien für:
    + Spark-Erweiterungen
    + Konnektoren
    + Metastore-Konfigurationen
+ **Überwachung und Analyse**
  + Spark-Protokollierung
  + Spark-Benutzeroberfläche
  + `ANALYZE TABLE`-Befehle

**Wichtig**  
Diese Einschränkungen wurden eingeführt, um die Sicherheitsisolierung zwischen Benutzer- und Systembereichen aufrechtzuerhalten.  
Alle Einschränkungen gelten unabhängig von der Konfiguration der Zusammenarbeit.  
Zukünftige Updates bieten möglicherweise Unterstützung für zusätzliche Funktionen, die auf Sicherheitsbewertungen basieren.

## Best Practices
<a name="python-best-practices"></a>

Wir empfehlen die folgenden bewährten Methoden bei der Erstellung von PySpark Analysevorlagen.
+ Denken Sie bei der Gestaltung Ihrer Analysevorlagen [PySpark Einschränkungen in AWS Clean Rooms](#pyspark-limitations) daran.
+ Testen Sie Ihren Code zunächst in einer Entwicklungsumgebung.
+ Verwenden Sie ausschließlich unterstützte DataFrame Operationen.
+ Planen Sie Ihre Ausgabestruktur so, dass sie mit DataFrame Einschränkungen funktioniert.

Wir empfehlen die folgenden bewährten Methoden für die Verwaltung von Artefakten
+ Bewahren Sie alle Artefakte der PySpark Analysevorlage in einem speziellen S3-Bucket oder -Präfix auf.
+ Verwenden Sie klare Versionsnamen für verschiedene Artefaktversionen.
+ Erstellen Sie neue Analysevorlagen, wenn Artefaktaktualisierungen erforderlich sind.
+ Führen Sie eine Bestandsaufnahme darüber, welche Vorlagen welche Artefaktversionen verwenden.

Weitere Informationen zum Schreiben von Spark-Code finden Sie im Folgenden: 
+ [Apache Spark-Beispiele](https://spark.apache.org/examples.html)
+ [Schreiben Sie eine Spark-Anwendung](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-application.html) im *Amazon EMR Release Guide*
+ [Tutorial: Schreiben eines Skripts AWS Glue für Spark](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-intro-tutorial.html) im *AWS Glue Benutzerhandbuch*

In den folgenden Themen wird erklärt, wie Sie Python-Benutzerskripte und -Bibliotheken erstellen, bevor Sie die Analysevorlage erstellen und überprüfen. 

**Topics**
+ [Sicherheit für PySpark Analysevorlagen](#pyspark-analysis-templates-security)
+ [PySpark Einschränkungen in AWS Clean Rooms](#pyspark-limitations)
+ [Best Practices](#python-best-practices)
+ [Ein Benutzerskript erstellen](create-user-script.md)
+ [Arbeiten mit Parametern in PySpark Analysevorlagen](pyspark-parameter-handling.md)
+ [Erstellen einer virtuellen Umgebung (optional)](create-virtual-environment.md)
+ [Speichern eines Benutzerskripts und einer virtuellen Umgebung in S3](store-artifacts-in-s3.md)
+ [Eine PySpark Analysevorlage erstellen](create-pyspark-analysis-template.md)
+ [Überprüfen einer PySpark Analysevorlage](review-pyspark-analysis-template.md)

# Ein Benutzerskript erstellen
<a name="create-user-script"></a>

Das Benutzerskript muss eine Einstiegsfunktion (mit anderen Worten, einen Handler) enthalten. Sie können Ihre Benutzerskriptdatei mit einem beliebigen gültigen Python-Dateinamen benennen.

Das folgende Verfahren beschreibt, wie Sie ein Benutzerskript erstellen, um die Kernfunktionen Ihrer PySpark Analyse zu definieren.

**Voraussetzungen**
+ PySpark 1.0 (entspricht Python 3.11 und Spark 3.5.3)
+ Datensätze in Amazon S3 können in der von Ihnen definierten Spark-Sitzung nur als konfigurierte Tabellenzuordnungen gelesen werden. 
+ Ihr Code kann Amazon S3 nicht direkt aufrufen und AWS Glue
+ Ihr Code kann keine Netzwerkanrufe tätigen

**Um ein Benutzerskript zu erstellen**

1. Öffnen Sie einen Texteditor oder eine integrierte Entwicklungsumgebung (IDE) Ihrer Wahl.

   Sie können jeden Texteditor oder jede IDE (wie Visual Studio Code oder Notepad\$1\$1) verwenden PyCharm, die Python-Dateien unterstützt.

1. Erstellen Sie eine neue Python-Datei mit einem Namen Ihrer Wahl (z. B.**my\$1analysis.py**).

1. Definieren Sie eine Einstiegsfunktion, die einen Kontextobjektparameter akzeptiert.

   ```
   def entrypoint(context)
   ```

   Der `context` Objektparameter ist ein Wörterbuch, das Zugriff auf wichtige Spark-Komponenten, referenzierte Tabellen und Analyseparameter bietet. Sie enthält Folgendes:

   Zugriff auf Spark-Sitzungen über `context['sparkSession']`

   Referenzierte Tabellen über `context['referencedTables']`

   Analyseparameter über `context['analysisParameters']` (falls Parameter in der Vorlage definiert sind)

1. Definieren Sie die Ergebnisse der Entrypoint-Funktion: 

   ```
   return results
   ```

   Das `results` muss ein Objekt, das ein Ergebniswörterbuch mit Dateinamen enthält, an eine Ausgabe zurückgeben. DataFrame
**Anmerkung**  
AWS Clean Rooms schreibt die DataFrame Objekte automatisch in den S3-Bucket des Ergebnisempfängers.

1. Sie sind jetzt bereit für: 

   1. Speichern Sie dieses Benutzerskript in S3. Weitere Informationen finden Sie unter [Speichern eines Benutzerskripts und einer virtuellen Umgebung in S3](store-artifacts-in-s3.md).

   1. Erstellen Sie die optionale virtuelle Umgebung, um alle zusätzlichen Bibliotheken zu unterstützen, die für Ihr Benutzerskript erforderlich sind. Weitere Informationen finden Sie unter [Erstellen einer virtuellen Umgebung (optional)](create-virtual-environment.md).

**Example Beispiel 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
```
Die Ordnerstruktur dieses Beispiels sieht wie folgt aus:   

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

# Arbeiten mit Parametern in PySpark Analysevorlagen
<a name="pyspark-parameter-handling"></a>

Parameter erhöhen die Flexibilität Ihrer PySpark Analysevorlagen, da bei der Einreichung des Jobs unterschiedliche Werte angegeben werden können. Auf Parameter kann über das Kontextobjekt zugegriffen werden, das an Ihre Einstiegsfunktion übergeben wurde.

**Anmerkung**  
Parameter sind vom Benutzer bereitgestellte Zeichenketten, die beliebigen Inhalt enthalten können.  
Überprüfen Sie den Code, um sicherzustellen, dass die Parameter sicher behandelt werden, um unerwartetes Verhalten in Ihrer Analyse zu verhindern.
Entwerfen Sie die Parameterbehandlung so, dass sie sicher funktioniert, unabhängig davon, welche Parameterwerte zum Zeitpunkt der Einreichung angegeben werden.

## Zugreifen auf Parameter
<a name="accessing-parameters"></a>

Parameter sind im `context['analysisParameters']` Wörterbuch verfügbar. Alle Parameterwerte sind Zeichenketten.

**Example Sicherer Zugriff auf Parameter**  

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

## Bewährte Methoden für die Parametersicherheit
<a name="parameter-security-best-practices"></a>

**Warnung**  
Parameter sind vom Benutzer bereitgestellte Zeichenketten, die beliebigen Inhalt enthalten können. Sie müssen mit Parametern sicher umgehen, um Sicherheitslücken in Ihrem Analysecode zu vermeiden.

**Unsichere Muster bei der Parameterbehandlung sollten Sie Folgendes vermeiden:**
+ **Parameter als Code ausführen** — Verwenden Sie niemals `eval()` oder für `exec()` Parameterwerte

  ```
  # UNSAFE - Don't do this
  eval(parameters['expression'])  # Can execute arbitrary code
  ```
+ **Interpolation von SQL-Zeichenketten** — Verketten Sie niemals Parameter direkt zu SQL-Zeichenfolgen

  ```
  # UNSAFE - Don't do this
  sql = f"SELECT * FROM table WHERE column = '{parameters['value']}'"  # SQL injection risk
  ```
+ **Unsichere Dateipfadoperationen** — Verwenden Sie Parameter niemals direkt in Dateisystemoperationen ohne Überprüfung

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

**Muster für die sichere Handhabung von Parametern:**
+ **Verwenden Sie Parameter in DataFrame Operationen** — Spark DataFrames geht sicher mit Parameterwerten um

  ```
  # SAFE - Use parameters in DataFrame operations
  threshold = int(parameters['threshold'])
  filtered_df = input_df.filter(input_df.value > threshold)
  ```
+ **Parameterwerte validieren** — Stellen Sie vor der Verwendung sicher, dass die Parameter den erwarteten Formaten entsprechen

  ```
  # 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}")
  ```
+ **Zulässige Listen für Parameterwerte verwenden** — Überprüfen Sie die Parameter nach Möglichkeit anhand von zweifelsfrei funktionierenden Werten

  ```
  # 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}")
  ```
+ **Typkonvertierung mit Fehlerbehandlung** — Konvertiere Zeichenkettenparameter sicher in erwartete Typen

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

**Wichtig**  
Denken Sie daran, dass Parameter die Codeüberprüfung umgehen, wenn Job Runner unterschiedliche Werte angeben. Gestalten Sie Ihre Parameterbehandlung so, dass sie unabhängig davon, welche Parameterwerte bereitgestellt werden, sicher funktioniert.

## Vollständiges Beispiel für Parameter
<a name="parameter-examples"></a>

**Example Sicheres Verwenden von Parametern in einem PySpark Skript**  

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

# Erstellen einer virtuellen Umgebung (optional)
<a name="create-virtual-environment"></a>

Wenn Ihr Benutzerskript zusätzliche Bibliotheken benötigt, haben Sie die Möglichkeit, eine virtuelle Umgebung zum Speichern dieser Bibliotheken zu erstellen. Wenn Sie keine zusätzlichen Bibliotheken benötigen, können Sie diesen Schritt überspringen.

Wenn Sie mit Bibliotheken arbeiten, die native Erweiterungen haben, denken Sie PySpark daran, dass sie unter Linux mit ARM64 Architektur AWS Clean Rooms funktioniert.

Das folgende Verfahren zeigt, wie Sie mit einem einfachen CLI-Befehl eine virtuelle Umgebung erstellen.

**Um eine virtuelle Umgebung zu erstellen**

1. Öffnen Sie ein Terminal oder eine Befehlszeile.

1. Fügen Sie den folgenden Inhalt hinzu:

   ```
   # 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. Sie sind jetzt bereit, diese virtuelle Umgebung in S3 zu speichern. Weitere Informationen finden Sie unter [Speichern eines Benutzerskripts und einer virtuellen Umgebung in S3](store-artifacts-in-s3.md).

Weitere Informationen zur Arbeit mit Docker und Amazon ECR finden Sie im [ ECRUser Amazon-Leitfaden](https://docs.aws.amazon.com/AmazonECR/latest/userguide/).

# Speichern eines Benutzerskripts und einer virtuellen Umgebung in S3
<a name="store-artifacts-in-s3"></a>

Das folgende Verfahren erklärt, wie ein Benutzerskript und eine optionale virtuelle Umgebung in Amazon S3 gespeichert werden. Schließen Sie diesen Schritt ab, bevor Sie eine PySpark Analysevorlage erstellen. 

**Wichtig**  
Ändern oder entfernen Sie keine Artefakte (Benutzerskripte oder virtuelle Umgebungen), nachdem Sie eine Analysevorlage erstellt haben.  
Dadurch wird:  
Verursacht, dass alle future Analysejobs, die diese Vorlage verwenden, fehlschlagen.
Erfordert die Erstellung einer neuen Analysevorlage mit neuen Artefakten.
Wirkt sich nicht auf zuvor abgeschlossene Analyseaufträge aus

**Voraussetzungen**
+ Und AWS-Konto mit den entsprechenden Berechtigungen
+ Eine Benutzerskriptdatei (wie`my_analysis.py`)
+ (Optional, falls vorhanden) Ein virtuelles Umgebungspaket (`.tar.gz`Datei) 
+ Zugriff zum Erstellen oder Ändern von IAM-Rollen

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

**Um ein Benutzerskript und eine virtuelle Umgebung in S3 mithilfe der Konsole zu speichern:**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon S3 S3-Konsole unter [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Erstellen Sie einen neuen S3-Bucket oder verwenden Sie einen vorhandenen.

1. Aktivieren Sie die Versionierung für den Bucket.

   1. Wählen Sie Ihren Bucket aus.

   1. Wählen Sie **Properties** (Eigenschaften).

   1. Wählen Sie im Abschnitt **Bucket-Versionierung die** Option **Bearbeiten** aus.

   1. Wählen Sie **Aktivieren** und speichern Sie die Änderungen.

1. Laden Sie Ihre Artefakte hoch und aktivieren Sie den SHA-256-Hash. 

   1. Navigiere zu deinem Bucket.

   1. Klicken Sie auf **Upload**.

   1. Wählen Sie **Dateien hinzufügen** und fügen Sie Ihre Benutzerskriptdatei hinzu.

   1. (Optional, falls vorhanden) Fügen Sie Ihre **.tar.gz-Datei** hinzu.

   1. **Erweitern Sie Eigenschaften.**

   1. Wählen **Sie unter Prüfsummen** für **Prüfsummenfunktion** die Option aus. **SHA256**

   1. Klicken Sie auf **Upload**.

1. Sie sind jetzt bereit, eine PySpark Analysevorlage zu erstellen.

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

**Um das Benutzerskript und die virtuelle Umgebung in S3 zu speichern, verwenden Sie AWS CLI:**

1. Führen Sie den folgenden Befehl aus:

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

1. Sie sind jetzt bereit, eine PySpark Analysevorlage zu erstellen.

------

**Anmerkung**  
Wenn Sie das Skript oder die virtuelle Umgebung aktualisieren müssen:   
Laden Sie die neue Version als separates Objekt hoch.
Erstellen Sie eine neue Analysevorlage mit den neuen Artefakten.
Verwerfen Sie die alte Vorlage.
Behalten Sie die ursprünglichen Artefakte in S3 bei, falls die alte Vorlage möglicherweise noch benötigt wird.

# Eine PySpark Analysevorlage erstellen
<a name="create-pyspark-analysis-template"></a>

**Anmerkung**  
Parameter sind vom Benutzer bereitgestellte Zeichenfolgen, die beliebigen Inhalt enthalten können.  
Überprüfen Sie den Code, um sicherzustellen, dass die Parameter sicher behandelt werden, um unerwartetes Verhalten in Ihrer Analyse zu verhindern.
Entwerfen Sie die Parameterbehandlung so, dass sie sicher funktioniert, unabhängig davon, welche Parameterwerte zum Zeitpunkt der Einreichung angegeben werden.

**Voraussetzungen**

 Bevor Sie eine PySpark Analysevorlage erstellen, müssen Sie über Folgendes verfügen:
+ Eine Mitgliedschaft in einer aktiven AWS Clean Rooms Kollaboration
+ Zugriff auf mindestens eine konfigurierte Tabelle in der aktiven Kollaboration
+ Berechtigungen zum Erstellen von Analysevorlagen
+ Ein Python-Benutzerskript und eine virtuelle Umgebung, die in S3 erstellt und gespeichert wurden
  + Für den S3-Bucket ist die Versionierung aktiviert. Weitere Informationen finden Sie unter [Verwenden der Versionierung in](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) S3-Buckets
  + Der S3-Bucket kann SHA-256-Prüfsummen für hochgeladene Artefakte berechnen. [Weitere Informationen finden Sie unter Prüfsummen verwenden](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html)
+ Berechtigungen zum Lesen von Code aus einem S3-Bucket

  Hinweise zum Erstellen der erforderlichen Servicerolle finden Sie unter[Erstellen Sie eine Servicerolle, um Code aus einem S3-Bucket zu lesen (PySpark Analysevorlagenrolle)](setting-up-roles.md#create-role-pyspark-analysis-template).

Das folgende Verfahren beschreibt den Prozess der Erstellung einer PySpark Analysevorlage mithilfe der [AWS Clean Rooms Konsole](https://console.aws.amazon.com/cleanrooms/home). Es wird davon ausgegangen, dass Sie bereits ein Benutzerskript und virtuelle Umgebungsdateien erstellt und Ihr Benutzerskript und Ihre virtuellen Umgebungsdateien in einem Amazon S3 S3-Bucket gespeichert haben.

**Anmerkung**  
Das Mitglied, das die PySpark Analysevorlage erstellt, muss auch das Mitglied sein, das die Ergebnisse erhält.

Informationen zum Erstellen einer PySpark Analysevorlage mithilfe von finden Sie in der [AWS Clean Rooms API-Referenz](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html). AWS SDKs

**Um eine PySpark Analysevorlage zu erstellen**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die [AWS Clean Rooms Konsole](https://console.aws.amazon.com/cleanrooms/home) mit der AWS-Konto , die als Ersteller der Kollaboration fungiert.

1. Wählen Sie im linken Navigationsbereich **Collaborations** aus.

1. Wählen Sie die Kollaboration aus.

1. Gehen Sie auf der Registerkarte **Vorlagen** zum Abschnitt **Von Ihnen erstellte Analysevorlagen**.

1. Wählen Sie **Analysevorlage erstellen aus**.

1. Auf der Seite **Analysevorlage erstellen** für **Details** 

   1. Geben Sie einen **Namen** für die Analysevorlage ein.

   1. (Optional) Geben Sie eine **Beschreibung** ein.

   1. Wählen Sie für **Format** die **PySpark**Option aus.

1. Für **Definition**

   1. Überprüfen Sie die **Voraussetzungen** und stellen Sie sicher, dass alle Voraussetzungen erfüllt sind, bevor Sie fortfahren.

   1. Geben Sie als **Einstiegspunktdatei** den S3-Bucket ein oder wählen Sie **Browse S3**.

   1. (Optional) Geben Sie für die **Bibliotheksdatei** den S3-Bucket ein oder wählen Sie **Browse S3** aus.

1. Für **Parameter — optional**, wenn Sie Parameter hinzufügen möchten, um Ihre Analysevorlage wiederverwendbar zu machen:

   1. Wählen Sie **Parameter hinzufügen** aus.

   1. Geben Sie einen **Parameternamen** ein.

      Parameternamen müssen mit einem Buchstaben oder Unterstrich beginnen, gefolgt von alphanumerischen Zeichen oder Unterstrichen.

   1. Für **Type** wird **STRING** automatisch als einziger unterstützter Typ für PySpark Analysevorlagen ausgewählt.

   1. (Optional) Geben Sie einen **Standardwert** für den Parameter ein.

      Wenn Sie einen Standardwert angeben, können Job-Runner diesen Wert verwenden, wenn sie Jobs ausführen, ohne explizit einen Parameterwert anzugeben.

   1. Um weitere Parameter hinzuzufügen, wählen Sie **Anderen Parameter hinzufügen** und wiederholen Sie die vorherigen Schritte.
**Anmerkung**  
Sie können bis zu 50 Parameter pro PySpark Analysevorlage definieren. Jeder Parameterwert kann bis zu 1.000 Zeichen lang sein.

1. Für **Tabellen, auf die in der Definition verwiesen** wird, 
   + Wenn alle in der Definition referenzierten Tabellen der Kollaboration zugeordnet wurden:
     + Lassen Sie das Kontrollkästchen **Alle in der Definition referenzierten Tabellen wurden der Kollaboration zugeordnet** aktiviert.
     + Wählen Sie unter Mit **der Kollaboration verknüpfte Tabellen** alle verknüpften Tabellen aus, auf die in der Definition verwiesen wird. 
   + Wenn nicht alle Tabellen, auf die in der Definition verwiesen wird, der Kollaboration zugeordnet wurden:
     + Deaktivieren Sie das Kontrollkästchen **Alle in der Definition referenzierten Tabellen wurden der Kollaboration zugeordnet**.
     + Wählen Sie unter **Der Kollaboration zugeordnete Tabellen** alle verknüpften Tabellen aus, auf die in der Definition verwiesen wird.
     + Geben Sie unter **Tabellen, die später verknüpft werden**, einen Tabellennamen ein. 
     + Wählen Sie **Andere Tabelle auflisten** aus, um eine weitere Tabelle aufzulisten.

1. Wählen Sie für die **Konfiguration von Fehlermeldungen** eine der folgenden Optionen:
   + **Grundlegende Fehlermeldungen** — gibt grundlegende Fehlermeldungen zurück, ohne die zugrunde liegenden Daten offenzulegen. Empfohlen für Produktionsworkloads.
   + **Detaillierte Fehlermeldungen** — gibt detaillierte Fehlermeldungen für eine schnellere Problembehebung zurück. In Entwicklungs- und Testumgebungen empfohlen. Kann sensible Daten, einschließlich persönlich identifizierbarer Informationen (PII), offenlegen.
**Anmerkung**  
Wenn Sie **detaillierte Fehlermeldungen** verwenden, müssen alle Mitglieder des Datenanbieters diese Einstellung für die Vorlage genehmigen.

1. Geben Sie die **Dienstzugriffsberechtigungen** an, indem Sie einen **vorhandenen Servicerollennamen** aus der Dropdownliste auswählen.

   1. Die Liste der Rollen wird angezeigt, wenn Sie berechtigt sind, Rollen aufzulisten.

      Wenn Sie nicht berechtigt sind, Rollen aufzulisten, können Sie den Amazon-Ressourcennamen (ARN) der Rolle eingeben, die Sie verwenden möchten.

   1. Rufen Sie die Servicerolle auf, indem Sie **auf den externen Link In IAM anzeigen** klicken.

      Wenn keine vorhandenen Servicerollen vorhanden sind, ist die Option „**Eine bestehende Servicerolle verwenden**“ nicht verfügbar.

      Versucht standardmäßig AWS Clean Rooms nicht, die bestehende Rollenrichtlinie zu aktualisieren, um die erforderlichen Berechtigungen hinzuzufügen. 
**Anmerkung**  
AWS Clean Rooms erfordert Berechtigungen für Abfragen gemäß den Analyseregeln. Weitere Informationen zu Berechtigungen für AWS Clean Rooms finden Sie unter[AWS verwaltete Richtlinien für AWS Clean Rooms](security-iam-awsmanpol.md).
Wenn die Rolle nicht über ausreichende Berechtigungen für verfügt AWS Clean Rooms, erhalten Sie eine Fehlermeldung, dass die Rolle nicht über ausreichende Berechtigungen für verfügt AWS Clean Rooms. Die Rollenrichtlinie muss hinzugefügt werden, bevor Sie fortfahren können.
Wenn Sie die Rollenrichtlinie nicht ändern können, erhalten Sie eine Fehlermeldung, dass die Richtlinie für die Servicerolle nicht gefunden werden AWS Clean Rooms konnte.

1. Wenn Sie **Tags** für die konfigurierte Tabellenressource aktivieren möchten, wählen Sie **Neues Tag hinzufügen** aus und geben Sie dann das **Schlüssel** - und **Wertepaar** ein.

1. Wählen Sie **Erstellen** aus.

1. Sie sind jetzt bereit, Ihr Kollaborationsmitglied darüber zu informieren, dass es [eine Analysevorlage überprüfen](review-analysis-template.md) kann. (Optional, wenn Sie Ihre eigenen Daten abfragen möchten.)

**Wichtig**  
Ändern oder entfernen Sie keine Artefakte (Benutzerskripte oder virtuelle Umgebungen), nachdem Sie eine Analysevorlage erstellt haben.  
Dadurch wird:  
Verursacht, dass alle future Analysejobs, die diese Vorlage verwenden, fehlschlagen.
Erfordert die Erstellung einer neuen Analysevorlage mit neuen Artefakten.
Wirkt sich nicht auf zuvor abgeschlossene Analyseaufträge aus.

# Überprüfen einer PySpark Analysevorlage
<a name="review-pyspark-analysis-template"></a>

Wenn ein anderes Mitglied in Ihrer Kollaboration eine Analysevorlage erstellt, müssen Sie diese überprüfen und genehmigen, bevor sie verwendet werden kann. 

Das folgende Verfahren zeigt Ihnen, wie Sie eine PySpark Analysevorlage einschließlich ihrer Regeln, Parameter und referenzierten Tabellen überprüfen. Als Mitglied der Kollaboration werden Sie beurteilen, ob die Vorlage Ihren Vereinbarungen zur gemeinsamen Nutzung von Daten und Ihren Sicherheitsanforderungen entspricht.

Nachdem die Analysevorlage genehmigt wurde, kann sie in einem Job in AWS Clean Rooms verwendet werden.

**Anmerkung**  
Wenn Sie Ihren Analysecode in eine Kollaboration einbringen, sollten Sie Folgendes beachten:   
AWS Clean Rooms validiert oder garantiert nicht das Verhalten des Analysecodes.   
Wenn Sie ein bestimmtes Verhalten sicherstellen müssen, überprüfen Sie den Code Ihres Kooperationspartners direkt oder arbeiten Sie mit einem vertrauenswürdigen externen Prüfer zusammen, um ihn zu überprüfen.
AWS Clean Rooms garantiert, dass die SHA-256-Hashes des in der PySpark Analysevorlage aufgeführten Codes mit dem Code übereinstimmen, der in der Analyseumgebung ausgeführt wird. PySpark 
AWS Clean Rooms führt keine Prüfungen oder Sicherheitsanalysen zusätzlicher Bibliotheken durch, die Sie in die Umgebung einbringen.
Im gemeinsamen Sicherheitsmodell:  
Sie (der Kunde) sind für die Sicherheit des Codes verantwortlich, der in der Umgebung ausgeführt wird.
Sie (der Kunde) sind dafür verantwortlich, die entsprechende Konfiguration für Fehlermeldungen für die Umgebung festzulegen.
AWS Clean Rooms ist für die Sicherheit der Umgebung verantwortlich und stellt sicher, dass  
nur der genehmigte Code läuft 
nur spezifizierte konfigurierte Tabellen sind zugänglich 
Das einzige Ausgabeziel ist der S3-Bucket des Ergebnisempfängers.

AWS Clean Rooms generiert SHA-256-Hashes des Benutzerskripts und der virtuellen Umgebung zur Überprüfung. Auf das eigentliche Benutzerskript und die Bibliotheken kann jedoch nicht direkt von dort aus zugegriffen werden. AWS Clean Rooms

Um zu überprüfen, ob das Benutzerskript und die gemeinsam genutzten Bibliotheken mit denen identisch sind, auf die in der Analysevorlage verwiesen wird, können Sie einen SHA-256-Hash der gemeinsam genutzten Dateien erstellen und ihn mit dem Hash der Analysevorlage vergleichen, der von erstellt wurde. AWS Clean Rooms Die Hashes der Codeausführung werden auch in den Job-Logs aufgeführt. 

**Voraussetzungen**
+ Linux/Unix-Betriebssystem oder Windows-Subsystem für Linux (WSL)
+ Benutzerskriptdatei, die Sie hashen möchten
  + Bitten Sie den Ersteller der Analysevorlage, die Datei über einen sicheren Kanal weiterzugeben.
+ Der Hash der Analysevorlage, erstellt von AWS Clean Rooms

**Um eine PySpark Analysevorlage mit der AWS Clean Rooms Konsole zu überprüfen**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die [AWS Clean Rooms Konsole](https://console.aws.amazon.com/cleanrooms/home) mit der AWS-Konto , die als Ersteller der Kollaboration fungiert.

1. Wählen Sie im linken Navigationsbereich **Collaborations** aus.

1. Wählen Sie die Kollaboration aus.

1. Gehen Sie auf der Registerkarte **Vorlagen** zum Abschnitt **Analysevorlagen, die von anderen Mitgliedern erstellt wurden**.

1. Wählen Sie die Analysevorlage mit dem **Status Kann ausgeführt werden auf** **Nein, Ihre Überprüfung ist erforderlich**.

1. Wählen Sie **Überprüfen** aus.

1. Überprüfen Sie die **Übersicht**, die **Definition** und die **Parameter** der Analyseregel (falls vorhanden). 
**Anmerkung**  
Mithilfe von Parametern können Analyseläufer zum Zeitpunkt der Übermittlung unterschiedliche Werte einreichen. Wenn eine Analysevorlage Parameter unterstützt, überprüfen Sie, wie die Parameterwerte im Code Ihres Kooperationspartners verwendet werden, um sicherzustellen, dass er Ihren Anforderungen entspricht.

1. Stellen Sie sicher, dass das gemeinsam genutzte Benutzerskript und die Bibliotheken mit denen identisch sind, auf die in der Analysevorlage verwiesen wird.

   1. Erstellen Sie einen SHA-256-Hash der gemeinsam genutzten Dateien und vergleichen Sie ihn mit dem Hash der Analysevorlage, der von erstellt wurde. AWS Clean Rooms

      Sie können einen Hash generieren, indem Sie zu dem Verzeichnis navigieren, das Ihre Benutzerskriptdatei enthält, und dann den folgenden Befehl ausführen: 

      ```
      sha256sum your_script_filename.py
      ```

      Beispielausgabe:

      ```
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 my_analysis.py
      ```

   1. Alternativ können Sie die Amazon S3-Prüfsummenfunktionen verwenden. Weitere Informationen finden Sie unter [https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html) im *Amazon S3 S3-Benutzerhandbuch*.

   1. Eine weitere Alternative besteht darin, die Hashes des ausgeführten Codes in den Jobprotokollen einzusehen.

1. Sehen Sie sich die konfigurierten Tabellen an, die unter **In der Definition referenzierte Tabellen** aufgeführt sind. 

   Der **Status** neben jeder Tabelle lautet **Vorlage nicht zulässig**.

1. Wählen Sie eine -Tabelle aus.

   1. Um die Analysevorlage zu genehmigen, wählen Sie **Vorlage in Tabelle zulassen** aus. Bestätigen Sie Ihre Genehmigung, indem Sie **Zulassen** wählen.

   1. Um die Genehmigung abzulehnen, wählen Sie **Ablehnen.**

Wenn Sie sich dafür entschieden haben, die Analysevorlage zu genehmigen, kann das Mitglied, das Jobs ausführen kann, nun mithilfe einer PySpark Analysevorlage einen PySpark Job in einer konfigurierten Tabelle ausführen. Weitere Informationen finden Sie unter [PySpark Jobs werden ausgeführt](run-jobs.md).