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:
-
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" } } } } } } -
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_SECRETcomo chave.nota
É preciso criar um segredo por conexão no AWS Glue
-
Crie a conexão do AWS Glue chamando a API CreateConnection usando a API, a CLI ou o SDK da AWS.
-
Faça referência ao nome do tipo de conexão REST da Etapa 1 como “ConnectionType”.
-
Forneça o InstanceUrl e quaisquer outras ConnectionProperties definidas durante o processo de registro do ConnectionType do AWS Glue.
-
Escolha entre os tipos de autenticação configurados. A API REST Foo usa OAuth2 com o tipo de concessão ClientCredentials.
-
Forneça SecretArn e outras AuthenticationProperties configuradas. Por exemplo, configuramos
OAUTH2como AuthenticationType, então definiremos o “OAuth2Properties” no CreateConnectionInput. Isso exigirá propriedades como “OAuth2GrantType”, “TokenUrl” e “OAuth2ClientApplication”.
-
-
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" } } } } }