

# Conexões do SAP HANA
<a name="aws-glue-programming-etl-connect-saphana-home"></a>

O AWS Glue para Spark pode ser usado para ler e escrever em tabelas no SAP HANA no AWS Glue 4.0 e versões posteriores. Você pode definir o que ler no SAP HANA com uma consulta SQL. Conecte-se ao SAP HANA usando credenciais JDBC armazenadas no AWS Secrets Manager via conexão AWS Glue SAP HANA.

Para obter mais informações sobre o JDBC do SAP HANA, consulte a [Documentação do SAP HANA](https://help.sap.com/docs/SAP_HANA_PLATFORM/0eec0d68141541d1b07893a39944924e/ff15928cf5594d78b841fbbe649f04b4.html).

## Configurar conexões do SAP HANA
<a name="aws-glue-programming-etl-connect-saphana-configure"></a>

Para se conectar ao SAP HANA via AWS Glue, será necessário criar e armazenar suas credenciais do SAP HANA em um segredo do AWS Secrets Manager e, em seguida, associar esse segredo a uma conexão ao AWS Glue do SAP HANA. Você precisará configurar a conectividade de rede entre seu serviço SAP HANA e o AWS Glue.

Para se conectar ao SAP HANA, talvez seja necessário atender a alguns pré-requisitos:
+ Se o seu serviço SAP HANA estiver em uma Amazon VPC, configure a Amazon VPC para permitir que seu trabalho do AWS Glue se comunique com o serviço SAP HANA sem que o tráfego passe pela Internet pública.

  Na Amazon VPC, identifique ou crie uma **VPC**, uma **Sub-rede** e um **Grupo de segurança** que o AWS Glue usará durante a execução do trabalho. Além disso, você precisa garantir que a Amazon VPC esteja configurada para permitir o tráfego de rede entre seu endpoint SAP HANA e esse local. Seu trabalho precisará estabelecer uma conexão TCP com a porta JDBC do SAP HANA. Para obter mais informações sobre as portas do SAP HANA, consulte a [Documentação do SAP HANA](https://help.sap.com/docs/HANA_SMART_DATA_INTEGRATION/7952ef28a6914997abc01745fef1b607/88e2e8bded9e4041ad3ad87dc46c7b55.html?locale=en-US). Com base no layout da rede, isso pode exigir alterações em regras do grupo de segurança, ACLs de rede, gateways de NAT e conexões de emparelhamento.
+ Não há pré-requisitos adicionais quando seu endpoint do SAP HANA está acessível pela Internet.

**Para configurar uma conexão com o SAP HANA:**

1. No AWS Secrets Manager, crie um segredo usando suas credenciais do SAP HANA. Para criar um segredo no Secrets Manager, siga o tutorial disponível em [Criar uma AWS Secrets Manager segredo ](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto, *SecretName*, para a próxima etapa. 
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `username/USERNAME` com o valor *saphanaUsername*.
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `password/PASSWORD` com o valor *saphanaPassword*.

1. No console do AWS Glue, crie uma conexão seguindo as etapas em [Adicionar uma conexão do AWS Glue](console-connections.md). Depois de criar a conexão, guarde o nome da conexão, *connectionName*, para uso futuro no AWS Glue. 
   + Ao selecionar um **Tipo de conexão**, selecione SAP HANA.
   + Ao fornecer o **URL do SAP HANA**, forneça o URL da sua instância.

     Os URLs JDBC do SAP HANA estão no formato `jdbc:sap://saphanaHostname:saphanaPort/?databaseName=saphanaDBname,ParameterName=ParameterValue`

     O AWS Glue requer os seguintes parâmetros de URL do JDBC: 
     + `databaseName`: um banco de dados padrão no SAP HANA ao qual se conectar.
   + Ao selecionar um **Segredo da AWS**, forneça o *secretName*.

Depois de criar uma conexão AWS Glue SAP HANA, siga estas etapas antes de executar seu trabalho do AWS Glue:
+ Conceda ao perfil do IAM associada ao seu trabalho do AWS Glue permissão para ler *secretName*.
+ Na configuração do trabalho do AWS Glue, forneça *connectionName* como uma **conexão de rede adicional**.

## Ler de tabelas do SAP HANA
<a name="aws-glue-programming-etl-connect-saphana-read"></a>

**Pré-requisitos:** 
+ Uma tabela do SAP HANA da qual você deseja ler. Você precisará de informações de identificação para a tabela.

  Uma tabela pode ser especificada com um nome de tabela e um nome de esquema do SAP HANA, no formulário `schemaName.tableName`. O nome do esquema e o separador "." não serão necessários se a tabela estiver no esquema padrão, "público". Chame isso de *tableIdentifier*. Observe que o banco de dados é fornecido como um parâmetro de URL do JDBC em `connectionName`.
+ Uma conexão AWS Glue SAP HANA configurada para fornecer informações de autenticação. Conclua as etapas do procedimento anterior, *Para configurar uma conexão com o SAP HANA* para configurar suas informações de autenticação. Você precisará do nome da conexão AWS Glue, *ConnectionName*. 

Por exemplo: 

```
saphana_read_table = glueContext.create_dynamic_frame.from_options(
    connection_type="saphana",
    connection_options={
        "connectionName": "connectionName",
        "dbtable": "tableIdentifier",
    }
)
```

Você também pode fornecer uma consulta SQL SELECT para filtrar os resultados retornados ao seu DynamicFrame. Você precisará configurar `query`.

Por exemplo:

```
saphana_read_query = glueContext.create_dynamic_frame.from_options(
    connection_type="saphana",
    connection_options={
        "connectionName": "connectionName",
        "query": "query"
    }
)
```

## Escrever em tabelas do SAP HANA
<a name="aws-glue-programming-etl-connect-saphana-write"></a>

Este exemplo escreve informações de um DynamicFrame existente, *dynamicFrame*, no SAP HANA. Se a tabela já contiver informações, o AWS Glue irá gerar um erro.

**Pré-requisitos:** 
+ Uma tabela do SAP HANA na qual você gostaria de escrever. 

  Uma tabela pode ser especificada com um nome de tabela e um nome de esquema do SAP HANA, no formulário `schemaName.tableName`. O nome do esquema e o separador "." não serão necessários se a tabela estiver no esquema padrão, "público". Chame isso de *tableIdentifier*. Observe que o banco de dados é fornecido como um parâmetro de URL do JDBC em `connectionName`.
+ Informações de autenticação do SAP HANA. Conclua as etapas do procedimento anterior, *Para configurar uma conexão com o SAP HANA* para configurar suas informações de autenticação. Você precisará do nome da conexão AWS Glue, *ConnectionName*. 

Por exemplo: 

```
options = {
    "connectionName": "connectionName",
    "dbtable": 'tableIdentifier'
}

    saphana_write = glueContext.write_dynamic_frame.from_options(
        frame=dynamicFrame,
        connection_type="saphana",
        connection_options=options
)
```

## Referência de opções de conexão do SAP HANA
<a name="aws-glue-programming-etl-connect-saphana-reference"></a>
+ `connectionName` — Obrigatório. Usado para leitura/gravação. O nome de uma conexão do AWS Glue SAP HANA configurada para fornecer informações de autenticação e rede ao seu método de conexão.
+ `databaseName`: usado para leitura/gravação. Valores válidos: nomes de bancos de dados no SAP HANA. O nome do banco de dados ao qual se conectar.
+ `dbtable`: necessário para escrever, obrigatório para leitura, a menos que `query` seja fornecido. Usado para leitura/gravação. Valores válidos: conteúdo de uma cláusula SQL FROM do SAP HANA. Identifica uma tabela no SAP HANA à qual se conectar. Você também pode fornecer outro SQL além do nome de uma tabela, como uma subconsulta. Para obter mais informações, consulte a [cláusula From](https://help.sap.com/docs/SAP_HANA_PLATFORM/4fe29514fd584807ac9f2a04f6754767/20fcf24075191014a89e9dc7b8408b26.html#loio20fcf24075191014a89e9dc7b8408b26__from_clause) na documentação do SAP HANA.
+ `query` - Usado para leitura. Uma consulta SQL SELECT do SAP HANA que define o que deve ser recuperado na leitura do SAP HANA.