

# Configurar um crawler para usar credenciais do Lake Formation
<a name="crawler-lf-integ"></a>

Você pode configurar um crawler para usar credenciais do AWS Lake Formation para acessar um datastore do Amazon S3 ou uma tabela do Data Catalog com uma localização subjacente do Amazon S3 dentro da mesma Conta da AWS ou de outra Conta da AWS. Você pode configurar uma tabela existente do Data Catalog como o destino do crawler, se o crawler e a tabela do Data Catalog residirem na mesma conta. No momento, é permitido ter somente um destino de catálogo com apenas uma tabela de catálogo ao usar uma tabela do Catálogo de dados como destino do crawler.

**nota**  
Ao definir uma tabela do Data Catalog como um destino de crawler, certifique-se de que a localização subjacente da tabela do Data Catalog seja um local do Amazon S3. Os crawlers que usam credenciais do Lake Formation são compatíveis somente com destinos do Data Catalog com localizações subjacentes do Amazon S3.

## Configuração exigida quando o crawler e a localização registrada do Amazon S3 ou a tabela do Data Catalog residem na mesma conta (crawling na conta)
<a name="in-account-crawling"></a>

Para permitir que o crawler acesse um datastore ou uma tabela do Data Catalog usando as credenciais do Lake Formation, você precisa registrar a localização dos dados com o Lake Formation. Além disso, o perfil do IAM do crawler deve ter permissões para ler os dados do destino no qual o bucket do Amazon S3 está registrado.

Você pode concluir as seguintes etapas de configuração usando o Console de gerenciamento da AWS ou a AWS Command Line Interface (AWS CLI).

------
#### [ Console de gerenciamento da AWS ]

1. Antes de configurar um crawler para acessar a fonte do crawler, registre a localização dos dados do datastore ou do Data Catalog com o Lake Formation. No console do Lake Formation ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)), registre uma localização do Amazon S3 como a localização raiz do seu data lake na Conta da AWS na qual o crawler está definido. Para obter mais informações, consulte [Registering an Amazon S3 location](https://docs.aws.amazon.com/lake-formation/latest/dg/register-location.html) (Registrar um local do Amazon S3).

1. Conceda permissões de **Data location** (Localização de dados) ao perfil do IAM que é usado para a execução do crawler, de modo que o rastreador possa ler os dados do destino no Lake Formation. Para obter mais informações, consulte [Granting data location permissions (same account)](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html) (Conceder permissões de localização de dados [mesma conta]).

1. Conceda permissões de acesso ao perfil do crawler (`Create`) para o banco de dados, que é especificado como o banco de dados de saída. Para obter mais informações, consulte [Granting database permissions using the Lake Formation console and the named resource method](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-database-permissions.html) (Conceder permissões de banco de dados usando o console do Lake Formation e o método de recurso nomeado).

1. No console do IAM ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)), crie um perfil do IAM para o crawler. Adicione a política `lakeformation:GetDataAccess` ao perfil.

1. No console do AWS Glue ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)), ao configurar o crawler, selecione a opção **Use Lake Formation credentials for crawling Amazon S3 data source** (Usar credenciais do Lake Formation para crawling da fonte de dados do Amazon S3).
**nota**  
O campo accountId é opcional para crawling na conta.

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

```
aws glue --profile demo create-crawler --debug --cli-input-json '{
    "Name": "prod-test-crawler",
    "Role": "arn:aws:iam::111122223333:role/service-role/AWSGlueServiceRole-prod-test-run-role",
    "DatabaseName": "prod-run-db",
    "Description": "",
    "Targets": {
    "S3Targets":[
                {
                 "Path": "s3://amzn-s3-demo-bucket"
                }
                ]
                },
   "SchemaChangePolicy": {
      "UpdateBehavior": "LOG",
      "DeleteBehavior": "LOG"
  },
  "RecrawlPolicy": {
    "RecrawlBehavior": "CRAWL_EVERYTHING"
  },
  "LineageConfiguration": {
    "CrawlerLineageSettings": "DISABLE"
  },
  "LakeFormationConfiguration": {
    "UseLakeFormationCredentials": true,
    "AccountId": "111122223333"
  },
  "Configuration": {
           "Version": 1.0,
           "CrawlerOutput": {
             "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" },
             "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" }
           },
           "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" }
         },
  "CrawlerSecurityConfiguration": "",
  "Tags": {
    "KeyName": ""
  }
}'
```

------

# Configuração exigida quando o crawler e a localização registrada do Amazon S3 residem em contas diferentes (crawling entre contas)
<a name="cross-account-crawling"></a>

Para permitir que o crawler acesse um datastore em uma conta diferente usando as credenciais do Lake Formation, primeiro você deve registrar a localização de dados do Amazon S3 com o Lake Formation. Em seguida, você concede permissões de localização de dados à conta do crawler conforme as etapas a seguir.

Você pode concluir as seguintes etapas usando o Console de gerenciamento da AWS ou a AWS CLI.

------
#### [ Console de gerenciamento da AWS ]

1. Na conta em que a localização do Amazon S3 está registrada (conta B):

   1. Registre um caminho do Amazon S3 no Lake Formation. Para obter mais informações, consulte [Registering an Amazon S3 location](https://docs.aws.amazon.com/lake-formation/latest/dg/register-location.html) (Registrando um local do Amazon S3).

   1.  Conceda permissões de **Data location** (Localização de dados) para a conta (conta A) na qual o crawler será executado. Para obter mais informações, consulte [Granting data location permissions](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html) (Conceder permissões de localização de dados). 

   1. Crie um banco de dados vazio no Lake Formation com a localização subjacente como o local de destino do Amazon S3. Para obter mais informações, consulte [Creating a database](https://docs.aws.amazon.com/lake-formation/latest/dg/creating-database.html) (Criar um banco de dados).

   1. Conceda à conta A (a conta na qual o crawler será executado) acesso ao banco de dados que você criou na etapa anterior. Para obter mais informações, consulte [Granting database permissions](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-database-permissions.html) (Conceder permissões de banco de dados). 

1. Na conta em que o crawler é criado e será executado (conta A):

   1.  Ao usar o console da AWS RAM, aceite o banco de dados que foi compartilhado da conta externa (conta B). Para obter mais informações, consulte [Aceitar um convite de compartilhamento de recursos do AWS Resource Access Manager](https://docs.aws.amazon.com/lake-formation/latest/dg/accepting-ram-invite.html). 

   1.  Crie um perfil do IAM para o crawler. Adicione a política `lakeformation:GetDataAccess` ao perfil.

   1.  No console do Lake Formation ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)), conceda permissões de **Data location** (Localização dos dados) na localização de destino do Amazon S3 para o perfil do IAM usado para a execução do crawler, de modo que o crawler possa ler os dados do destino no Lake Formation. Para obter mais informações, consulte [Granting data location permissions](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html) (Conceder permissões de localização de dados). 

   1.  Crie um link de recurso no banco de dados compartilhado. Para obter mais informações, consulte [Create a resource link](https://docs.aws.amazon.com/lake-formation/latest/dg/create-resource-link-database.html) (Criar um link de recurso). 

   1.  Conceda permissões de acesso ao perfil do crawler (`Create`) no banco de dados compartilhado e (`Describe`) no link do recurso. O link do recurso é especificado na saída do crawler. 

   1.  No console do AWS Glue ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)), ao configurar o crawler, selecione a opção **Use Lake Formation credentials for crawling Amazon S3 data source** (Usar credenciais do Lake Formation para crawling da fonte de dados do Amazon S3).

      Para crawling entre contas, especifique o ID da Conta da AWS na qual a localização de destino do Amazon S3 está registrada no Lake Formation. O campo accountId é opcional para crawling na conta.   
![\[IAM role selection and Lake Formation configuration options for Crawler do AWS Glue security settings.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/cross-account-crawler.png)

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

```
aws glue --profile demo create-crawler --debug --cli-input-json '{
    "Name": "prod-test-crawler",
    "Role": "arn:aws:iam::111122223333:role/service-role/AWSGlueServiceRole-prod-test-run-role",
    "DatabaseName": "prod-run-db",
    "Description": "",
    "Targets": {
    "S3Targets":[
                {
                 "Path": "s3://amzn-s3-demo-bucket"
                }
                ]
                },
   "SchemaChangePolicy": {
      "UpdateBehavior": "LOG",
      "DeleteBehavior": "LOG"
  },
  "RecrawlPolicy": {
    "RecrawlBehavior": "CRAWL_EVERYTHING"
  },
  "LineageConfiguration": {
    "CrawlerLineageSettings": "DISABLE"
  },
  "LakeFormationConfiguration": {
    "UseLakeFormationCredentials": true,
    "AccountId": "111111111111"
  },
  "Configuration": {
           "Version": 1.0,
           "CrawlerOutput": {
             "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" },
             "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" }
           },
           "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" }
         },
  "CrawlerSecurityConfiguration": "",
  "Tags": {
    "KeyName": ""
  }
}'
```

------

**nota**  
Um crawler que use credenciais do Lake Formation é compatível somente com destinos do Amazon S3 e do Data Catalog.
Para destinos que utilizam o fornecimento de credenciais do Lake Formation, as localizações subjacentes do Amazon S3 devem pertencer ao mesmo bucket. Por exemplo, os clientes podem usar vários destinos (s3://amzn-s3-demo-bucket1/folder1, s3://amzn-s3-demo-bucket1/folder2), desde que todos os locais de destino estejam no mesmo bucket (amzn-s3-demo-bucket1). Não é permitido especificar buckets diferentes (s3://amzn-s3-demo-bucket1/folder1, s3://amzn-s3-demo-bucket2/folder2).
No momento, só é permitido ter um destino de catálogo com uma só tabela de catálogo para crawlers de destino do Data Catalog.