

# Tutorial: criação de um ConnectionType e uma conexão da API REST
<a name="rest-api-example"></a>

**Conexão à API REST Foo**

 Criaremos um ConnectionType da API REST do AWS Glue e uma conexão correspondente do AWS Glue para a API REST Foo. Essa API tem as seguintes propriedades (que podem ser consultadas na documentação da API REST). 
+  **URL da instância**: https://foo.cloud.com/rest/v1. 
+  **Tipo de autenticação**: OAuth2 (Credenciais do cliente). 
+  **Método REST**: GET. 
+  **Tipo de paginação**: offset com as propriedades “limite” e “offset” colocadas no parâmetro de consulta da solicitação. 
+ **Entidades compatíveis**:
  +  **Bar**: caminho relativo [/bar.json]. 
  +  **Baz**: caminho relativo [/baz.json]. 

 Após obtermos todos os detalhes, podemos começar a criar a conexão do AWS Glue com a API REST Foo. 

**Para criar uma conexão com a API REST**:

1.  Crie um tipo de conexão API REST no AWS Glue chamando a API RegisterConnectionType usando API, CLI ou SDK da AWS. Isso criará um novo recurso ConnectionType no AWS Glue. 

   ```
   {
       "ConnectionType": "REST-FOO-CONNECTOR",
       "IntegrationType": "REST",
       "Description": "AWS Glue Connection Type for the FOO REST API",
       "ConnectionProperties": {
           "Url": {
               "Name": "Url",
               "Required": true,
               "DefaultValue": "https://foo.cloud.com/rest/v1",
               "PropertyType": "USER_INPUT"
           }
       },
       "ConnectorAuthenticationConfiguration": {
           "AuthenticationTypes": ["OAUTH2"],
           "OAuth2Properties": {
               "OAuth2GrantType": "CLIENT_CREDENTIALS"
           }
       },
       "RestConfiguration": {
           "GlobalSourceConfiguration": {
           "RequestMethod": "GET",
           "ResponseConfiguration": {
               "ResultPath": "$.result",
               "ErrorPath": "$.error.message"
           },
           "PaginationConfiguration": {
               "OffsetConfiguration": {
                   "OffsetParameter": {
                       "Key": "offset",
                       "PropertyLocation": "QUERY_PARAM"
                   },
                   "LimitParameter": {
                       "Key": "limit",
                       "PropertyLocation": "QUERY_PARAM",
                       "DefaultValue": "50"
                   }
               }
           }
       },
       "ValidationEndpointConfiguration": {
           "RequestMethod": "GET",
           "RequestPath": "/bar.json?offset=1&limit=10"
       },
       "EntityConfigurations": {
           "bar": {
               "SourceConfiguration": {
                   "RequestMethod": "GET",
                   "RequestPath": "/bar.json",
                   "ResponseConfiguration": {
                       "ResultPath": "$.result",
                       "ErrorPath": "$.error.message"
                   }
               },
               "Schema": {
                   "name": {
                       "Name": "name",
                       "FieldDataType": "STRING"
                   },
                   "description": {
                       "Name": "description",
                       "FieldDataType": "STRING"
                   },
                   "id": {
                       "Name": "id",
                       "FieldDataType": "STRING"
                   },
                   "status": {
                       "Name": "status",
                       "FieldDataType": "STRING"
                   }
               }
           }
       }
   }
   }
   ```

1.  No AWS Secrets Manager, crie um segredo. O segredo deve conter o segredo do consumidor da aplicação conectada com `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como chave. 
**nota**  
É preciso criar um segredo por conexão no AWS Glue

1.  Crie a conexão do AWS Glue chamando a API CreateConnection usando a API, a CLI ou o SDK da AWS. 

   1.  Faça referência ao nome do tipo de conexão REST da Etapa 1 como “ConnectionType”. 

   1.  Forneça o InstanceUrl e quaisquer outras ConnectionProperties definidas durante o processo de registro do ConnectionType do AWS Glue. 

   1.  Escolha entre os tipos de autenticação configurados. A API REST Foo usa OAuth2 com o tipo de concessão ClientCredentials. 

   1.  Forneça **SecretArn** e outras **AuthenticationProperties** configuradas. Por exemplo, configuramos `OAUTH2` como AuthenticationType, então definiremos o “OAuth2Properties” no CreateConnectionInput. Isso exigirá propriedades como “OAuth2GrantType”, “TokenUrl” e “OAuth2ClientApplication”. 

1.  Faça a solicitação CreateConnection que criará a conexão do AWS Glue. 

   ```
   {
       "ConnectionInput": {
           "Name": "ConnectionFooREST",
           "ConnectionType": "REST-FOO-CONNECTOR",
           "ConnectionProperties": {},
           "ValidateCredentials": true,
           "AuthenticationConfiguration": {
               "AuthenticationType": "OAUTH2",
               "SecretArn": "arn:aws:secretsmanager:<region>:<accountId>:secret:<secretId>",
               "OAuth2Properties": {
                   "OAuth2GrantType": "CLIENT_CREDENTIALS",
                   "TokenUrl": "https://foo.cloud.com/oauth/token",
                   "OAuth2ClientApplication": {
                       "UserManagedClientApplicationClientId": "your-managed-client-id"
                   }
               }
           }
       }
   }
   ```