

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á.

# Autenticação com a integração do Amazon Redshift para Apache Spark
<a name="emr-spark-redshift-auth"></a>

## Use AWS Secrets Manager para recuperar credenciais e conectar-se ao Amazon Redshift
<a name="emr-spark-redshift-secrets"></a>

Você pode se autenticar com segurança no Amazon Redshift armazenando as credenciais no Secrets Manager e fazer com que o trabalho do Spark chame a API `GetSecretValue` para buscá-la:

```
from pyspark.sql import SQLContextimport boto3

sc = # existing SparkContext
sql_context = SQLContext(sc)

secretsmanager_client = boto3.client('secretsmanager', region_name=os.getenv('AWS_REGION'))
secret_manager_response = secretsmanager_client.get_secret_value(
    SecretId='string',
    VersionId='string',
    VersionStage='string'
)
username = # get username from secret_manager_response
password = # get password from secret_manager_response
url = "jdbc:redshift://redshifthost:5439/database?user=" + username + "&password=" + password

# Access to Redshift cluster using Spark
```

## Autenticação no Amazon Redshift com um driver JDBC
<a name="emr-spark-redshift-jdbc"></a>

**Definição de um nome de usuário e de uma senha no URL do JDBC**

Você pode autenticar um trabalho do Spark em um cluster do Amazon Redshift especificando o nome e a senha do banco de dados do Amazon Redshift no URL do JDBC.

**nota**  
Se você transferir as credenciais do banco de dados no URL, qualquer pessoa que tenha acesso ao URL também poderá acessar as credenciais. Este método geralmente não é recomendado porque não é uma opção segura.

Se a segurança não for uma preocupação para sua aplicação, use o seguinte formato para definir o nome de usuário e a senha no URL do JDBC:

```
jdbc:redshift://redshifthost:5439/database?user=username&password=password
```

## Uso da autenticação baseada no IAM com o perfil de execução de trabalho do Amazon EMR Sem Servidor
<a name="emr-spark-redshift-iam"></a>

A partir da versão 6.9.0 do Amazon EMR Sem Servidor, a versão 2.1 ou superior do driver JDBC do Amazon Redshift é empacotada no ambiente. Com a versão 2.1 e versões superiores do driver JDBC, é possível especificar o URL do JDBC e não incluir o nome de usuário e a senha brutos. 

Em vez disso, especifique o esquema `jdbc:redshift:iam://`. Isso comanda o driver JDBC para usar o perfil de execução de trabalho do EMR Sem Servidor para buscar as credenciais automaticamente. Consulte [Configurar uma conexão JDBC ou ODBC para usar credenciais do IAM](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-iam-credentials-configure-jdbc-odbc.html) no *Guia de gerenciamento do Amazon Redshift* para obter mais informações. Um exemplo desse URL é:

```
jdbc:redshift:iam://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev
```

As seguintes permissões são obrigatórias para o perfil de execução do trabalho quando ele atende às condições fornecidas:


| Permissão | Condições para se tornar obrigatória para o perfil de execução de trabalho | 
| --- | --- | 
|  redshift:GetClusterCredentials  | Obrigatória para que o driver JDBC busque as credenciais do Amazon Redshift. | 
|  redshift:DescribeCluster  | Obrigatória se você especificar o cluster do Amazon Redshift e a Região da AWS no URL do JDBC em vez do endpoint. | 
|  redshift-serverless:GetCredentials  | Obrigatória para que o driver JDBC busque as credenciais do Amazon Redshift sem servidor. | 
|  redshift-serverless:GetWorkgroup  | Obrigatória se você estiver usando o Amazon Redshift sem servidor e especificando o URL em termos de nome e de região do grupo de trabalho | 

## Como se conectar ao Amazon Redshift em uma VPC diferente
<a name="emr-spark-redshift-vpc"></a>

Ao definir um cluster provisionado do Amazon Redshift ou um grupo de trabalho do Amazon Redshift Sem Servidor em uma VPC, configure a conectividade da VPC para que a aplicação do Amazon EMR Sem Servidor acesse os recursos. Para obter mais informações sobre como configurar a conectividade da VPC em uma aplicação do EMR Sem Servidor, consulte [Configuração do acesso à VPC para que aplicações do EMR Sem Servidor se conectem aos dados](vpc-access.md).
+ Se o cluster provisionado do Amazon Redshift ou o grupo de trabalho do Amazon Redshift Sem Servidor estiver acessível publicamente, você poderá especificar uma ou mais sub-redes privadas que tenham um gateway NAT anexado ao criar aplicações do EMR Sem Servidor.
+ Se o cluster provisionado do Amazon Redshift ou o grupo de trabalho do Amazon Redshift Sem Servidor não estiver acessível publicamente, você deverá criar um endpoint da VPC gerenciado pelo Amazon Redshift para o cluster do Amazon Redshift, conforme descrito em [Configuração do acesso à VPC para que aplicações do EMR Sem Servidor se conectem aos dados](vpc-access.md). Como alternativa, você pode criar o grupo de trabalho do Amazon Redshift Sem Servidor conforme descrito em [Conectar-se ao Amazon Redshift Serverless](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-connecting.html) no *Guia de gerenciamento do Amazon Redshift*. É necessário associar o cluster ou subgrupo às sub-redes privadas que você especifica ao criar a aplicação do EMR Sem Servidor.

**nota**  
Se você usa autenticação baseada no IAM e suas sub-redes privadas na aplicação do EMR Sem Servidor não têm um gateway NAT anexado, também é necessário criar um endpoint da VPC nessas sub-redes para o Amazon Redshift ou o Amazon Redshift Sem Servidor. Dessa forma, o driver JDBC pode buscar as credenciais.