

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

# Configurando uma conexão do Apache Airflow usando um segredo AWS Secrets Manager
Como configurar o Secrets Manager

AWS Secrets Manager é um back-end alternativo compatível com o Apache Airflow em um ambiente Amazon Managed Workflows for Apache Airflow. Este tópico explica como usar para armazenar com segurança segredos AWS Secrets Manager para variáveis do Apache Airflow e uma conexão do Apache Airflow no Amazon Managed Workflows for Apache Airflow.

**nota**  
Você é cobrado pelos segredos que você cria. Para obter mais informações sobre precificação do Secrets Manager, consulte [Precificação da AWS](https://aws.amazon.com/secrets-manager/pricing/).
[AWS O Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store) também é suportado como um back-end secreto no Amazon MWAA. Para obter mais informações, consulte a [documentação do Amazon Provider Package](https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/secrets-backends/aws-ssm-parameter-store.html).

**Contents**
+ [

## Etapa 1: forneça ao Amazon MWAA permissão para acessar as chaves secretas do Secrets Manager
](#connections-sm-policy)
+ [

## Etapa 2: crie o back-end do Secrets Manager como uma opção de configuração do Apache Airflow
](#connections-sm-aa-configuration)
+ [

## Etapa três: gerar uma string de URI de conexão do Apache AWS Airflow
](#connections-sm-aa-uri)
+ [

## Etapa 4: adicione as variáveis no Secrets Manager
](#connections-sm-createsecret-variables)
+ [

## Etapa 5: adicione a conexão no Secrets Manager
](#connections-sm-createsecret-connection)
+ [

## Código de exemplo
](#connections-sm-samples)
+ [

## Recursos
](#connections-sm-blogs)
+ [

## Próximas etapas
](#connections-sm-next-up)

## Etapa 1: forneça ao Amazon MWAA permissão para acessar as chaves secretas do Secrets Manager


O [perfil de execução](mwaa-create-role.md) do seu ambiente Amazon MWAA precisa de acesso de leitura à chave secreta de entrada em AWS Secrets Manager. A política do IAM a seguir permite acesso de leitura e gravação usando a política AWS gerenciada [SecretsManagerReadWrite](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/SecretsManagerReadWrite$jsonEditor).

**Para anexar a política ao seu perfil de execução**

1. Abra a [página Ambientes](https://console.aws.amazon.com/mwaa/home#/environments) no console do Amazon MWAA.

1. Escolha um ambiente.

1. Escolha sua função de execução no painel **Permissões**.

1. Escolha **Anexar políticas**.

1. Digite `SecretsManagerReadWrite` no campo de texto **Políticas de filtro**.

1. Escolha **Anexar política**.

Se você não quiser usar uma política de permissão AWS gerenciada, você pode atualizar diretamente a função de execução do seu ambiente para permitir qualquer nível de acesso aos recursos do Secrets Manager. Por exemplo, a declaração de política a seguir concede acesso de leitura a todos os segredos que você cria em um específico Região da AWS no Secrets Manager.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetResourcePolicy",
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret",
                "secretsmanager:ListSecretVersionIds"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:*"
        },
        {
            "Effect": "Allow",
            "Action": "secretsmanager:ListSecrets",
            "Resource": "*"
        }
    ]
}
```

------

## Etapa 2: crie o back-end do Secrets Manager como uma opção de configuração do Apache Airflow


A seção a seguir descreve como criar uma opção de configuração do Apache Airflow no console Amazon MWAA para o back-end. AWS Secrets Manager Se você estiver usando uma definição de configuração com o mesmo nome em `airflow.cfg`, a configuração criada nas etapas a seguir terá precedência e substituirá as definições de configuração.

1. Abra a [página Ambientes](https://console.aws.amazon.com/mwaa/home#/environments) no console do Amazon MWAA.

1. Escolha um ambiente.

1. Escolha **Editar**.

1. Escolha **Próximo**.

1. Escolha **Adicionar configuração personalizada** no painel **Opções de configuração do Airflow**. Adicione os seguintes pares de chave-valor:

   1. **`secrets.backend`**: **`airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend`**

   1. **`secrets.backend_kwargs`**: **`{"connections_prefix" : "airflow/connections", "variables_prefix" : "airflow/variables"}`** Configura o Apache Airflow para buscar strings de conexão e variáveis nos caminhos `airflow/connections/*` e `airflow/variables/*`.

      É possível usar um [padrão de pesquisa](https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/secrets-backends/aws-secrets-manager.html#optional-lookup) para reduzir o número de chamadas de API que o Amazon MWAA faz para o Secrets Manager em seu nome. Se você não especificar um padrão de pesquisa, o Apache Airflow pesquisará todas as conexões e variáveis no back-end configurado. Ao especificar um padrão, você restringe os caminhos possíveis que o Apache Airflow procura. Isso reduz seus custos ao usar o Secrets Manager com o Amazon MWAA.

      Para especificar um padrão de pesquisa, especifique os parâmetros `connections_lookup_pattern` e `variables_lookup_pattern`. Esses parâmetros aceitam uma RegEx string como entrada. Por exemplo, para procurar segredos que comecem com `test`, digite o seguinte para `secrets.backend_kwargs`:

      ```
      {
        "connections_prefix": "airflow/connections",
        "connections_lookup_pattern": "^test",
        "variables_prefix" : "airflow/variables",
        "variables_lookup_pattern": "^test"
      }
      ```
**nota**  
Para usar `connections_lookup_pattern` e `variables_lookup_pattern`, você deve instalar a versão 7.3.0 ou superior de `apache-airflow-providers-amazon`. Para obter mais informações sobre como atualizar os pacotes do provedor para versões mais recentes, consulte [Arquivo de restrições](connections-packages.md#connections-packages-constraints).

1. Escolha **Salvar**.

## Etapa três: gerar uma string de URI de conexão do Apache AWS Airflow


Para criar uma string de conexão, use a tecla "Tab" do teclado para adicionar recuo dos pares de chave-valor no objeto [Conexão](https://airflow.apache.org/docs/stable/howto/connection/index.html). Também recomendamos criar uma variável para o objeto `extra` em sua sessão de shell. A seção a seguir mostra as etapas para [gerar uma string de URI de conexão do Apache Airflow](https://airflow.apache.org/docs/apache-airflow/stable/howto/connection.html#generating-a-connection-uri) para um ambiente Amazon MWAA usando o Apache Airflow ou um script Python.

------
#### [ Apache Airflow CLI ]

A sessão de shell a seguir usa sua CLI local do Airflow para gerar uma string de conexão. Se você não tiver a CLI instalada, recomendamos usar o script Python.

1. Abra uma sessão de shell do Python:

   ```
   python3
   ```

1. Digite o comando:

   ```
   >>> import json
   ```

1. Digite o comando:

   ```
   >>> from airflow.models.connection import Connection
   ```

1. Crie uma variável em sua sessão de shell para o objeto `extra`. Substitua os valores da amostra pelo ARN da função de execução e pela região em *us-east-1* (como`us-east-1`). *YOUR\$1EXECUTION\$1ROLE\$1ARN*

   ```
   >>> extra=json.dumps({'role_arn': 'YOUR_EXECUTION_ROLE_ARN', 'region_name': 'us-east-1'})
   ```

1. Crie o objeto de conexão. Substitua o valor do exemplo em `myconn` pelo nome da conexão Apache Airflow.

   ```
   >>> myconn = Connection(
   ```

1. Use a tecla “tab” do teclado para adicionar recuo a cada um dos seguintes pares de chave-valor em seu objeto de conexão. Substitua os valores da amostra em*red*.

   1. Especifique o tipo de AWS conexão:

      ```
      ... conn_id='aws',
      ```

   1. Especifique a opção de banco de dados Apache Airflow:

      ```
      ... conn_type='mysql',
      ```

   1. Especifique o URL da IU do Apache Airflow no Amazon MWAA:

      ```
      ... host='288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com/home',
      ```

   1. Especifique o ID da chave de AWS acesso (nome de usuário) para fazer login no Amazon MWAA:

      ```
      ... login='YOUR_AWS_ACCESS_KEY_ID',
      ```

   1. Especifique a chave de acesso AWS secreta (senha) para fazer login no Amazon MWAA:

      ```
      ... password='YOUR_AWS_SECRET_ACCESS_KEY',
      ```

   1. Especifique a variável de sessão de shell `extra`:

      ```
      ... extra=extra
      ```

   1. Feche o objeto de conexão.

      ```
      ... )
      ```

1. Imprima a string do URI de conexão:

   ```
   >>> myconn.get_uri()
   ```

   Consulte a string do URI de conexão na resposta:

   ```
   'mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA&region_name=us-east-1'
   ```

------
#### [ Python script ]

O script Python a seguir não requer a CLI do Apache Airflow.

1. Copie o conteúdo da amostra de código a seguir e salve localmente como `mwaa_connection.py`.

   ```
   import urllib.parse
   								
   								conn_type = 'YOUR_DB_OPTION'
   								host = 'YOUR_MWAA_AIRFLOW_UI_URL'
   								port = 'YOUR_PORT'
   								login = 'YOUR_AWS_ACCESS_KEY_ID'
   								password = 'YOUR_AWS_SECRET_ACCESS_KEY'
   								role_arn = urllib.parse.quote_plus('YOUR_EXECUTION_ROLE_ARN')
   								region_name = 'us-east-1'
   								
   								conn_string = '{0}://{1}:{2}@{3}:{4}?role_arn={5}&region_name={6}'.format(conn_type, login, password, host, port, role_arn, region_name)
   								print(conn_string)
   ```

1. Substitua os espaços reservados em*red*.

1. Execute o script a seguir para gerar uma string de conexão.

   ```
   python3 mwaa_connection.py
   ```

------

## Etapa 4: adicione as variáveis no Secrets Manager


A seção a seguir descreve como criar o segredo para uma variável no Secrets Manager.

**Para criar o segredo**

1. Abra o [console do AWS Secrets Manager](https://console.aws.amazon.com/secretsmanager/home#/environments).

1. Selecione **Armazenar um novo segredo**.

1. Selecione **Outro tipo de segredo**.

1. No painel **Especificar os key/value pares a serem armazenados nesse painel secreto**, escolha Texto sem **formatação**.

1. Adicione o valor da variável como **Texto simples** no formato a seguir.

   ```
   "YOUR_VARIABLE_VALUE"
   ```

   Por exemplo, para especificar um número inteiro:

   ```
   14
   ```

   Por exemplo, para especificar uma string:

   ```
   "mystring"
   ```

1. Em **Chave de criptografia**, escolha uma opção de AWS KMS chave na lista suspensa.

1. Insira um nome no campo de texto para **Nome secreto** no formato a seguir.

   ```
   airflow/variables/YOUR_VARIABLE_NAME
   ```

   Por exemplo:

   ```
   airflow/variables/test-variable
   ```

1. Escolha **Próximo**

1. Na página **Configurar segredo**, no painel **Nome e descrição do segredo**, faça o seguinte.

   1. Em **Nome secreto**, forneça um nome para seu segredo.

   1. (Opcional) Em **Descrição**, insira uma descrição para o nome do segredo.

   Escolha **Avançar**.

1. Em **Configurar rotação - opcional**, deixe as opções padrão e escolha **Avançar**.

1. Repita essas etapas no Secrets Manager para quaisquer variáveis adicionais que você queira adicionar.

1. Na página **Analisar**, analise os detalhes do segredo e escolha **Armazenar**.

## Etapa 5: adicione a conexão no Secrets Manager


A seção a seguir descreve como criar o segredo para o URI da string de conexão no Secrets Manager.

**Para criar o segredo**

1. Abra o [console do AWS Secrets Manager](https://console.aws.amazon.com/secretsmanager/home#/environments).

1. Selecione **Armazenar um novo segredo**.

1. Selecione **Outro tipo de segredo**.

1. No painel **Especificar os key/value pares a serem armazenados nesse painel secreto**, escolha Texto sem **formatação**.

1. Adicione a string do URI de conexão como **texto simples no formato** a seguir.

   ```
   YOUR_CONNECTION_URI_STRING
   ```

   Por exemplo:

   ```
   mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA&region_name=us-east-1
   ```
**Atenção**  
O Apache Airflow analisa cada um dos valores na string de conexão. Você **não** deve usar aspas simples nem duplas, ou ele analisará a conexão como uma única string.

1. Em **Chave de criptografia**, escolha uma opção de AWS KMS chave na lista suspensa.

1. Insira um nome no campo de texto para **Nome secreto** no formato a seguir.

   ```
   airflow/connections/YOUR_CONNECTION_NAME
   ```

   Por exemplo:

   ```
   airflow/connections/myconn
   ```

1. Escolha **Próximo**

1. Na página **Configurar segredo**, no painel **Nome e descrição do segredo**, faça o seguinte.

   1. Em **Nome secreto**, forneça um nome para seu segredo.

   1. (Opcional) Em **Descrição**, insira uma descrição para o nome do segredo.

   Escolha **Avançar**.

1. Em **Configurar rotação - opcional**, deixe as opções padrão e escolha **Avançar**.

1. Repita essas etapas no Secrets Manager para quaisquer variáveis adicionais que você queira adicionar.

1. Na página **Analisar**, analise os detalhes do segredo e escolha **Armazenar**.

## Código de exemplo

+ Saiba como usar a chave secreta para a conexão do Apache Airflow (`myconn`) nesta página usando o código de exemplo em [Como usar uma chave secreta em AWS Secrets Manager para uma conexão do Apache Airflow](samples-secrets-manager.md).
+ Saiba como usar a chave secreta para a variável do Apache Airflow (`test-variable`) nesta página usando o código de exemplo em [Como usar uma chave secreta em AWS Secrets Manager para uma variável do Apache Airflow](samples-secrets-manager-var.md).

## Recursos

+ Para obter mais informações sobre como configurar segredos do Secrets Manager usando o console e o AWS CLI, consulte [Criar um segredo](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) no *Guia do AWS Secrets Manager Usuário*.
+ Use um script Python para migrar um grande volume de variáveis e conexões do Apache Airflow para o Secrets Manager em [Move your Apache Airflow connections and variables to AWS Secrets Manager](https://aws.amazon.com/blogs/opensource/move-apache-airflow-connections-variables-aws-secrets-manager/) (Mova suas conexões e variáveis do Apache Airflow para ).

## Próximas etapas

+ Saiba como gerar um token para acessar a interface do Apache Airflow em [Como acessar o Apache Airflow](access-airflow-ui.md).