Tutorial: criação de um ConnectionType e uma conexão da API REST - AWS Glue

Tutorial: criação de um ConnectionType e uma conexão da API REST

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" } } } } } }
  2. 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

  3. 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”.

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

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

    4. 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”.

  4. 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" } } } } }