

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

PySpark os modelos de análise exigem um script de usuário do Python e um ambiente virtual opcional para usar bibliotecas personalizadas e de código aberto. Esses arquivos são chamados de artefatos. 

Antes de criar um modelo de análise, primeiro você cria os artefatos e depois armazena os artefatos em um bucket do Amazon S3. AWS Clean Rooms usa esses artefatos ao executar trabalhos de análise. AWS Clean Rooms só acessa os artefatos ao executar um trabalho. 

Antes de executar qualquer código em um modelo de PySpark análise, AWS Clean Rooms valida os artefatos por meio de: 
+ Verificando a versão específica do objeto S3 usada ao criar o modelo
+ Verificando o hash SHA-256 do artefato 
+ Falha em qualquer trabalho em que os artefatos tenham sido modificados ou removidos

**nota**  
O tamanho máximo de todos os artefatos combinados para um determinado modelo de PySpark análise AWS Clean Rooms é de 1 GB.

## Segurança para modelos PySpark de análise
<a name="pyspark-analysis-templates-security"></a>

Para preservar um ambiente de computação seguro, AWS Clean Rooms usa uma arquitetura de computação de duas camadas para isolar o código do usuário das operações do sistema. Essa arquitetura é baseada na tecnologia de controle de acesso refinado sem servidor do Amazon EMR, também conhecida como Membrane. Para obter mais informações, consulte [Membrane — Controles de acesso a dados seguros e eficientes no Apache Spark na presença de](https://www.amazon.science/publications/membrane-safe-and-performant-data-access-controls-in-apache-spark-in-the-presence-of-imperative-code) código imperativo.

Os componentes do ambiente computacional são divididos em um espaço de usuário e um espaço de sistema separados. O espaço do usuário executa o PySpark código no modelo de PySpark análise. AWS Clean Rooms usa o espaço do sistema para permitir que o trabalho seja executado, incluindo o uso de funções de serviço fornecidas pelos clientes para ler dados para executar o trabalho e implementar a coluna lista de permissões. Como resultado dessa arquitetura, o PySpark código do cliente que afeta o espaço do sistema, que pode incluir um pequeno número de Spark SQL e PySpark DataFrames APIs, é bloqueado.

## PySpark limitações em AWS Clean Rooms
<a name="pyspark-limitations"></a>

Quando os clientes enviam um modelo de PySpark análise aprovado, ele o AWS Clean Rooms executa em seu próprio ambiente computacional seguro, que nenhum cliente pode acessar. O ambiente computacional implementa uma arquitetura computacional com espaço de usuário e espaço de sistema para preservar um ambiente computacional seguro. Para obter mais informações, consulte [Segurança para modelos PySpark de análise](#pyspark-analysis-templates-security).

Considere as seguintes limitações antes de usar PySpark em AWS Clean Rooms. 

**Limitações**
+ Somente DataFrame saídas são suportadas
+ Uma única sessão do Spark por execução de trabalho

**Recursos sem suporte**
+ **Gerenciamento de dados**
  + Formatos de tabela Iceberg
  + LakeFormation tabelas gerenciadas
  + Conjuntos de dados distribuídos resilientes (RDD)
  + Streaming do Spark
  + Controle de acesso para colunas aninhadas
+ **Funções e extensões personalizadas**
  + Funções de tabela definidas pelo usuário () UDTFs
  + Colmeia UDFs
  + Classes personalizadas em funções definidas pelo usuário
  + Fontes de dados personalizadas
  + Arquivos JAR adicionais para:
    + Extensões do Spark
    + Conectores
    + Configurações do Metastore
+ **Monitoramento e análise**
  + Registro de faíscas
  + Interface do usuário do Spark
  + Comandos da `ANALYZE TABLE`

**Importante**  
Essas limitações existem para manter o isolamento de segurança entre os espaços do usuário e do sistema.  
Todas as restrições se aplicam independentemente da configuração da colaboração.  
Atualizações futuras podem adicionar suporte para recursos adicionais com base em avaliações de segurança.

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

Recomendamos as seguintes melhores práticas ao criar modelos PySpark de análise.
+ Crie seus modelos de análise pensando [PySpark limitações em AWS Clean Rooms](#pyspark-limitations) nisso.
+ Teste primeiro seu código em um ambiente de desenvolvimento.
+ Use exclusivamente DataFrame as operações suportadas.
+ Planeje sua estrutura de saída para trabalhar com DataFrame limitações.

Recomendamos as seguintes melhores práticas para gerenciar artefatos
+ Mantenha todos os artefatos do modelo de PySpark análise em um bucket ou prefixo dedicado do S3.
+ Use uma nomenclatura de versão clara para diferentes versões de artefatos.
+ Crie novos modelos de análise quando forem necessárias atualizações de artefatos.
+ Mantenha um inventário de quais modelos usam quais versões de artefatos.

Para obter mais informações sobre como escrever o código do Spark, consulte o seguinte: 
+ [Exemplos do Apache Spark](https://spark.apache.org/examples.html)
+ [Escreva um aplicativo Spark no Guia](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-application.html) de lançamento do *Amazon EMR*
+ [Tutorial: Escrevendo um script AWS Glue para o Spark](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-intro-tutorial.html) no Guia do *AWS Glue usuário*

Os tópicos a seguir explicam como criar scripts de usuário e bibliotecas do Python antes de criar e revisar o modelo de análise. 

**Topics**
+ [Segurança para modelos PySpark de análise](#pyspark-analysis-templates-security)
+ [PySpark limitações em AWS Clean Rooms](#pyspark-limitations)
+ [Práticas recomendadas](#python-best-practices)
+ [Criação de um script de usuário](create-user-script.md)
+ [Trabalhando com parâmetros em modelos PySpark de análise](pyspark-parameter-handling.md)
+ [Criação de um ambiente virtual (opcional)](create-virtual-environment.md)
+ [Armazenando um script de usuário e um ambiente virtual no S3](store-artifacts-in-s3.md)
+ [Criação de um modelo de PySpark análise](create-pyspark-analysis-template.md)
+ [Revisando um modelo de PySpark análise](review-pyspark-analysis-template.md)

# Criação de um script de usuário
<a name="create-user-script"></a>

O script do usuário deve conter uma função de ponto de entrada (em outras palavras, um manipulador). Você pode nomear seu arquivo de script de usuário com qualquer nome de arquivo Python válido.

O procedimento a seguir descreve como criar um script de usuário para definir a funcionalidade principal da sua PySpark análise.

**Pré-requisitos**
+ PySpark 1.0 (corresponde ao Python 3.11 e ao Spark 3.5.3)
+ Os conjuntos de dados no Amazon S3 só podem ser lidos como associações de tabelas configuradas na sessão do Spark que você define. 
+ Seu código não pode ligar diretamente para o Amazon S3 e AWS Glue
+ Seu código não pode fazer chamadas de rede

**Para criar um script de usuário**

1. Abra um editor de texto ou ambiente de desenvolvimento integrado (IDE) de sua escolha.

   Você pode usar qualquer editor de texto ou IDE (como o Visual Studio Code ou o Notepad\$1\$1) que ofereça suporte a arquivos Python. PyCharm

1. Crie um novo arquivo Python com um nome de sua escolha (por exemplo,**my\$1analysis.py**).

1. Defina uma função de ponto de entrada que aceite um parâmetro de objeto de contexto.

   ```
   def entrypoint(context)
   ```

   O parâmetro `context` objeto é um dicionário que fornece acesso aos componentes essenciais do Spark, tabelas referenciadas e parâmetros de análise. Ela contém:

   Acesso à sessão do Spark via `context['sparkSession']`

   Tabelas referenciadas via `context['referencedTables']`

   Parâmetros de análise via `context['analysisParameters']` (se os parâmetros estiverem definidos no modelo)

1. Defina os resultados da função de ponto de entrada: 

   ```
   return results
   ```

   `results`É necessário retornar um objeto contendo um dicionário de resultados de nomes de arquivos para uma saída. DataFrame
**nota**  
AWS Clean Rooms grava automaticamente os DataFrame objetos no bucket S3 do receptor de resultados.

1. Agora está tudo pronto para: 

   1. Armazene esse script de usuário no S3. Para obter mais informações, consulte [Armazenando um script de usuário e um ambiente virtual no S3](store-artifacts-in-s3.md).

   1. Crie o ambiente virtual opcional para oferecer suporte a quaisquer bibliotecas adicionais exigidas pelo seu script de usuário. Para obter mais informações, consulte [Criação de um ambiente virtual (opcional)](create-virtual-environment.md).

**Example Exemplo 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
```
A estrutura de pastas desse exemplo é a seguinte:   

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

# Trabalhando com parâmetros em modelos PySpark de análise
<a name="pyspark-parameter-handling"></a>

Os parâmetros aumentam a flexibilidade de seus modelos de PySpark análise, permitindo que valores diferentes sejam fornecidos no momento do envio do trabalho. Os parâmetros são acessíveis por meio do objeto de contexto passado para sua função de ponto de entrada.

**nota**  
Os parâmetros são cadeias de caracteres fornecidas pelo usuário que podem conter conteúdo arbitrário.  
Revise o código para garantir que os parâmetros sejam tratados com segurança para evitar comportamentos inesperados em sua análise.
Projete o manuseio de parâmetros para funcionar com segurança, independentemente dos valores dos parâmetros fornecidos no momento do envio.

## Acessando parâmetros
<a name="accessing-parameters"></a>

Os parâmetros estão disponíveis no `context['analysisParameters']` dicionário. Todos os valores dos parâmetros são cadeias de caracteres.

**Example Acessando parâmetros com segurança**  

```
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áticas recomendadas de segurança de parâmetros
<a name="parameter-security-best-practices"></a>

**Atenção**  
Os parâmetros são cadeias de caracteres fornecidas pelo usuário que podem conter conteúdo arbitrário. Você deve manipular os parâmetros com segurança para evitar vulnerabilidades de segurança em seu código de análise.

**Padrões inseguros de manipulação de parâmetros a serem evitados:**
+ **Executando parâmetros como código** — Nunca use `eval()` ou `exec()` em valores de parâmetros

  ```
  # UNSAFE - Don't do this
  eval(parameters['expression'])  # Can execute arbitrary code
  ```
+ **Interpolação de strings SQL** — Nunca concatene parâmetros diretamente em strings SQL

  ```
  # UNSAFE - Don't do this
  sql = f"SELECT * FROM table WHERE column = '{parameters['value']}'"  # SQL injection risk
  ```
+ **Operações inseguras de caminho de arquivo** — nunca use parâmetros diretamente nas operações do sistema de arquivos sem validação

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

**Padrões seguros de manipulação de parâmetros:**
+ **Use parâmetros em DataFrame operações** — O Spark DataFrames manipula os valores dos parâmetros com segurança

  ```
  # SAFE - Use parameters in DataFrame operations
  threshold = int(parameters['threshold'])
  filtered_df = input_df.filter(input_df.value > threshold)
  ```
+ **Validar valores de parâmetros** — Verifique se os parâmetros atendem aos formatos esperados antes de usar

  ```
  # 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}")
  ```
+ **Use listas de permissões para valores de parâmetros** — Quando possível, valide os parâmetros em relação a valores válidos conhecidos

  ```
  # 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}")
  ```
+ **Conversão de tipo com tratamento de erros** — Converta parâmetros de string em tipos esperados com segurança

  ```
  # 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**  
Lembre-se de que os parâmetros ignoram a revisão de código quando os executores de tarefas fornecem valores diferentes. Projete seu tratamento de parâmetros para funcionar com segurança, independentemente dos valores de parâmetros fornecidos.

## Exemplo completo de parâmetro
<a name="parameter-examples"></a>

**Example Usando parâmetros com segurança em um 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
```

# Criação de um ambiente virtual (opcional)
<a name="create-virtual-environment"></a>

Se você tiver bibliotecas adicionais exigidas pelo seu script de usuário, você tem a opção de criar um ambiente virtual para armazenar essas bibliotecas. Se você não precisar de bibliotecas adicionais, pule esta etapa.

Ao trabalhar com bibliotecas que têm extensões nativas, lembre-se de que ela AWS Clean Rooms opera PySpark no Linux com ARM64 arquitetura.

O procedimento a seguir demonstra como criar um ambiente virtual usando um comando CLI básico.

**Para criar um ambiente virtual**

1. Abra um terminal ou prompt de comando.

1. Adicione o seguinte conteúdo:

   ```
   # 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. Agora você está pronto para armazenar esse ambiente virtual no S3. Para obter mais informações, consulte [Armazenando um script de usuário e um ambiente virtual no S3](store-artifacts-in-s3.md).

Para obter mais informações sobre como trabalhar com o Docker e o Amazon ECR, consulte o Guia da [Amazon ECRUser ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/).

# Armazenando um script de usuário e um ambiente virtual no S3
<a name="store-artifacts-in-s3"></a>

O procedimento a seguir explica como armazenar um script de usuário e um ambiente virtual opcional no Amazon S3. Conclua essa etapa antes de criar um modelo de PySpark análise. 

**Importante**  
Não modifique nem remova artefatos (scripts de usuário ou ambientes virtuais) depois de criar um modelo de análise.  
Isso fará com que:  
Faça com que todos os trabalhos de análise futuros usando esse modelo falhem.
Exija a criação de um novo modelo de análise com novos artefatos.
Não afeta trabalhos de análise concluídos anteriormente

**Pré-requisitos**
+ E Conta da AWS com as permissões apropriadas
+ Um arquivo de script do usuário (como`my_analysis.py`)
+ (Opcional, se houver) Um pacote de ambiente virtual (`.tar.gz`arquivo) 
+ Acesso para criar ou modificar funções do IAM

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

**Para armazenar um script de usuário e um ambiente virtual no S3 usando o console:**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Crie um novo bucket do S3 ou use um existente.

1. Ative o controle de versão para o bucket.

   1. Selecione seu bucket.

   1. Escolha **Properties**.

   1. **Na seção Controle **de versão do bucket, escolha Editar**.**

   1. Selecione **Ativar** e salve as alterações.

1. Carregue seus artefatos e habilite o hash SHA-256. 

   1. Navegue até seu bucket.

   1. Escolha **Carregar**.

   1. Escolha **Adicionar arquivos** e adicione seu arquivo de script de usuário.

   1. (Opcional, se houver) Adicione seu **arquivo.tar.gz.**

   1. Expandir **propriedades**.

   1. Em **Checksums**, para a **função Checksum**, selecione. **SHA256**

   1. Escolha **Carregar**.

1. Agora você está pronto para criar um modelo PySpark de análise.

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

**Para armazenar o script do usuário e o ambiente virtual no S3 usando: AWS CLI**

1. Execute este comando: .

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

1. Agora você está pronto para criar um modelo PySpark de análise.

------

**nota**  
Se você precisar atualizar o script ou o ambiente virtual:   
Faça o upload da nova versão como um objeto separado.
Crie um novo modelo de análise usando os novos artefatos.
Desative o modelo antigo.
Mantenha os artefatos originais no S3 se o modelo antigo ainda for necessário.

# Criação de um modelo de PySpark análise
<a name="create-pyspark-analysis-template"></a>

**nota**  
Os parâmetros são cadeias de caracteres fornecidas pelo usuário que podem conter conteúdo arbitrário.  
Revise o código para garantir que os parâmetros sejam tratados com segurança para evitar comportamentos inesperados em sua análise.
Projete o manuseio de parâmetros para funcionar com segurança, independentemente dos valores dos parâmetros fornecidos no momento do envio.

**Pré-requisitos**

 Antes de criar um modelo de PySpark análise, você deve ter:
+ Uma associação em uma AWS Clean Rooms colaboração ativa
+ Acesso a pelo menos uma tabela configurada na colaboração ativa
+ Permissões para criar modelos de análise
+ Um script de usuário do Python e um ambiente virtual criado e armazenado no S3
  + O bucket do S3 tem o versionamento ativado. Para obter mais informações, consulte [Usando o controle de versão em buckets do](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) S3
  + O bucket S3 pode calcular somas de verificação SHA-256 para artefatos carregados. Para obter mais informações, consulte [Usando somas de verificação](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html)
+ Permissões para ler código de um bucket do S3

  Para obter informações sobre como criar a função de serviço necessária, consulte[Crie uma função de serviço para ler o código de um bucket do S3 (função do modelo de PySpark análise)](setting-up-roles.md#create-role-pyspark-analysis-template).

O procedimento a seguir descreve o processo de criação de um modelo de PySpark análise usando o [AWS Clean Rooms console](https://console.aws.amazon.com/cleanrooms/home). Ele pressupõe que você já tenha criado um script de usuário e arquivos de ambiente virtual e armazenado seu script de usuário e arquivos de ambiente virtual em um bucket do Amazon S3.

**nota**  
O membro que cria o modelo de PySpark análise também deve ser o membro que recebe os resultados.

Para obter informações sobre como criar um modelo de PySpark análise usando o AWS SDKs, consulte a [Referência da AWS Clean Rooms API](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html).

**Para criar um modelo PySpark de análise**

1. Faça login no Console de gerenciamento da AWS e abra o [AWS Clean Rooms console](https://console.aws.amazon.com/cleanrooms/home) com o Conta da AWS que funcionará como criador da colaboração.

1. No painel de navegação à esquerda, escolha **Colaborações**.

1. Escolha a colaboração.

1. Na guia **Modelos**, vá para a seção **Modelos de análise criados por você**.

1. Escolha **Criar modelo de análise**.

1. Na página **Criar modelo de análise**, para **Detalhes**, 

   1. Insira um **Nome** para o modelo de análise.

   1. (Opcional) Insira uma **Descrição**.

   1. Em **Formatar**, escolha a **PySpark**opção.

1. Para **Definição**,

   1. Analise os **pré-requisitos** e certifique-se de que cada pré-requisito seja atendido antes de continuar.

   1. **Em Arquivo de ponto de entrada**, insira o bucket do S3 ou escolha **Procurar no S3**.

   1. (Opcional) Em **Arquivo de bibliotecas**, insira o bucket do S3 ou escolha **Procurar no S3**.

1. Para **Parâmetros — opcional**, se você quiser adicionar parâmetros para tornar seu modelo de análise reutilizável:

   1. Selecione **Add parameter (Adicionar parâmetro)**.

   1. Insira um **nome de parâmetro**.

      Os nomes dos parâmetros devem começar com uma letra ou sublinhado, seguido por caracteres alfanuméricos ou sublinhados.

   1. Para **Tipo**, **STRING** é selecionado automaticamente como o único tipo suportado para modelos de PySpark análise.

   1. (Opcional) Insira um **valor padrão** para o parâmetro.

      Se você fornecer um valor padrão, os executores de tarefas poderão usar esse valor ao executar trabalhos sem fornecer explicitamente um valor de parâmetro.

   1. Para adicionar mais parâmetros, escolha **Adicionar outro parâmetro** e repita as etapas anteriores.
**nota**  
Você pode definir até 50 parâmetros por modelo PySpark de análise. Cada valor de parâmetro pode ter até 1.000 caracteres.

1. Para **tabelas referenciadas na definição**, 
   + Se todas as tabelas referenciadas na definição tiverem sido associadas à colaboração:
     + Deixe a caixa de seleção **Todas as tabelas referenciadas na definição foram associadas à colaboração** marcada.
     + Em **Tabelas associadas à colaboração**, escolha todas as tabelas associadas que são referenciadas na definição. 
   + Se todas as tabelas referenciadas na definição não tiverem sido associadas à colaboração:
     + Desmarque a caixa de seleção **Todas as tabelas referenciadas na definição foram associadas à colaboração**.
     + Em **Tabelas associadas à colaboração**, escolha todas as tabelas associadas que são referenciadas na definição.
     + Em **Tabelas que serão associadas posteriormente**, insira o nome da tabela. 
     + Escolha **Listar outra tabela** para listar outra tabela.

1. Para **Configuração de mensagem de erro**, escolha uma das seguintes opções:
   + **Mensagens de erro básicas — retorna mensagens** de erro básicas sem expor os dados subjacentes. Recomendado para cargas de trabalho de produção.
   + **Mensagens de erro detalhadas — retorna mensagens** de erro detalhadas para uma solução de problemas mais rápida. Recomendado em ambientes de desenvolvimento e teste. Pode expor dados confidenciais, incluindo informações de identificação pessoal (PII).
**nota**  
Ao usar **mensagens de erro detalhadas**, todos os membros do provedor de dados devem aprovar essa configuração para o modelo.

1. Especifique as permissões **de acesso ao serviço** selecionando um **nome de função de serviço existente** na lista suspensa.

   1. A lista de perfis é exibida se você tiver permissões para listar funções.

      Se você não tiver permissões para listar perfis, insira o nome do recurso da Amazon (ARN) do perfil que você deseja usar.

   1. Para visualizar o perfil de serviço, selecione o link externo **Visualizar no IAM**.

      Se não houver perfis de serviço existentes, a opção de **Usar um perfil de serviço existente** não estará disponível.

      Por padrão, AWS Clean Rooms não tenta atualizar a política de função existente para adicionar as permissões necessárias. 
**nota**  
AWS Clean Rooms requer permissões para consultar de acordo com as regras de análise. Para obter mais informações sobre permissões para AWS Clean Rooms, consulte[AWS políticas gerenciadas para AWS Clean Rooms](security-iam-awsmanpol.md).
Se a função não tiver permissões suficientes para AWS Clean Rooms, você receberá uma mensagem de erro informando que a função não tem permissões suficientes para AWS Clean Rooms. A política de perfil deve ser adicionada antes de continuar.
Se você não conseguir modificar a política de perfil, receberá uma mensagem de erro informando que o AWS Clean Rooms não conseguiu encontrar a política referente ao perfil de serviço.

1. Se quiser habilitar **Tags** para o recurso de tabela configurado, escolha **Adicionar nova tag** e, em seguida, insira o par **Chave** e **Valor**.

1. Escolha **Criar**.

1. Agora você está pronto para informar ao membro da colaboração que ele pode [revisar um modelo de análise](review-analysis-template.md). (Opcional se quiser consultar seus próprios dados.)

**Importante**  
Não modifique nem remova artefatos (scripts de usuário ou ambientes virtuais) depois de criar um modelo de análise.  
Isso fará com que:  
Faça com que todos os trabalhos de análise futuros usando esse modelo falhem.
Exija a criação de um novo modelo de análise com novos artefatos.
Não afeta trabalhos de análise concluídos anteriormente.

# Revisando um modelo de PySpark análise
<a name="review-pyspark-analysis-template"></a>

Quando outro membro cria um modelo de análise em sua colaboração, você deve revisá-lo e aprová-lo antes que ele possa ser usado. 

O procedimento a seguir mostra como revisar um modelo de PySpark análise, incluindo suas regras, parâmetros e tabelas referenciadas. Como membro da colaboração, você avaliará se o modelo está alinhado com seus contratos de compartilhamento de dados e requisitos de segurança.

Depois que o modelo de análise for aprovado, ele poderá ser usado em um trabalho em AWS Clean Rooms.

**nota**  
Ao incluir seu código de análise em uma colaboração, esteja ciente do seguinte:   
AWS Clean Rooms não valida nem garante o comportamento do código de análise.   
Se você precisar garantir determinado comportamento, revise o código do seu parceiro de colaboração diretamente ou trabalhe com um auditor terceirizado confiável para analisá-lo.
AWS Clean Rooms garante que os hashes SHA-256 do código listado no modelo de PySpark análise correspondam ao código executado no PySpark ambiente de análise. 
AWS Clean Rooms não realiza nenhuma auditoria ou análise de segurança de bibliotecas adicionais que você traz para o ambiente.
No modelo de segurança compartilhada:  
Você (o cliente) é responsável pela segurança do código executado no ambiente.
Você (o cliente) é responsável por definir a configuração apropriada da mensagem de erro para o ambiente.
AWS Clean Rooms é responsável pela segurança do meio ambiente, garantindo que  
somente o código aprovado é executado 
somente tabelas configuradas especificadas estão acessíveis 
o único destino de saída é o bucket S3 do receptor de resultados.

AWS Clean Rooms gera hashes SHA-256 do script do usuário e do ambiente virtual para sua análise. No entanto, o script e as bibliotecas reais do usuário não estão diretamente acessíveis nele AWS Clean Rooms. 

Para validar se o script do usuário e as bibliotecas compartilhadas são os mesmos referenciados no modelo de análise, você pode criar um hash SHA-256 dos arquivos compartilhados e compará-lo com o hash do modelo de análise criado por. AWS Clean Rooms Os hashes do código executado também estarão nos registros de tarefas. 

**Pré-requisitos**
+ Sistema operacional Linux/Unix ou Subsistema Windows para Linux (WSL)
+ Arquivo de script do usuário que você deseja codificar
  + Solicite que o criador do modelo de análise compartilhe o arquivo por meio de um canal seguro.
+ O hash do modelo de análise criado por AWS Clean Rooms

**Para revisar um modelo de PySpark análise usando o AWS Clean Rooms console**

1. Faça login no Console de gerenciamento da AWS e abra o [AWS Clean Rooms console](https://console.aws.amazon.com/cleanrooms/home) com o Conta da AWS que funcionará como criador da colaboração.

1. No painel de navegação à esquerda, escolha **Colaborações**.

1. Escolha a colaboração.

1. Na guia **Modelos**, acesse a seção **Modelos de análise criados por outros membros**.

1. Escolha o modelo de análise que tenha o status **Pode ser executado** como **Não requer sua análise**.

1. Escolha **Revisar**.

1. Revise a **visão geral**, a **definição** e os **parâmetros** da regra de análise (se houver). 
**nota**  
Os parâmetros permitem que os executores da análise enviem valores diferentes no momento do envio. Se um modelo de análise suportar parâmetros, revise como os valores dos parâmetros são usados no código do seu parceiro de colaboração para garantir que ele atenda aos seus requisitos.

1. Valide se o script e as bibliotecas do usuário compartilhados são iguais aos referenciados no modelo de análise.

   1. Crie um hash SHA-256 dos arquivos compartilhados e compare-o com o hash do modelo de análise criado por. AWS Clean Rooms

      Você pode gerar um hash navegando até o diretório que contém o arquivo de script do usuário e, em seguida, executando o seguinte comando: 

      ```
      sha256sum your_script_filename.py
      ```

      Resultado do exemplo:

      ```
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 my_analysis.py
      ```

   1. Como alternativa, você pode usar os recursos de soma de verificação do Amazon S3. Para obter mais informações, 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) do usuário do *Amazon S3*.

   1. Outra alternativa é visualizar os hashes do código executado nos registros de tarefas.

1. Revise as tabelas configuradas listadas em **Tabelas referenciadas na definição**. 

   O **Status** ao lado de cada tabela exibirá **Modelo não permitido**.

1. Escolha uma tabela.

   1. Para aprovar o modelo de análise, escolha **Permitir modelo na tabela**. Confirme sua aprovação escolhendo **Permitir**.

   1. Para recusar a aprovação, escolha **Não permitir**.

Se você optou por aprovar o modelo de análise, o membro que pode executar trabalhos agora pode executar um PySpark trabalho em uma tabela configurada usando um modelo de PySpark análise. Para obter mais informações, consulte [Executando PySpark trabalhos](run-jobs.md).