Instructivo: Creación de un recurso ConnectionType y una conexión de la API de REST - AWS Glue

Instructivo: Creación de un recurso ConnectionType y una conexión de la API de REST

Conexión a la API de REST de Foo

Crearemos un recurso ConnectionType de la API de REST de la AWS Glue y una conexión de la AWS Glue correspondiente para la API de REST de Foo. Esta API tiene las siguientes propiedades (que se pueden recuperar de la documentación de la API de REST).

  • URL de la instancia: https://foo.cloud.com/rest/v1.

  • Tipo de autenticación: OAuth2 (credenciales de cliente).

  • Método de REST: GET.

  • Tipo de paginación: compensación con las propiedades “limit” y “offset” situadas en el parámetro de consulta de la solicitud.

  • Entidades compatibles:

    • Bar: ruta relativa [/bar.json].

    • Baz: ruta relativa [/baz.json].

Una vez obtenidos todos los detalles, podemos empezar a crear la conexión de la AWS Glue a la API de REST de Foo.

Para crear una conexión de la API de REST:

  1. Cree el tipo de conexión de la API de REST en la AWS Glue al llamar a la API de RegisterConnectionType mediante la API, la CLI o el SDK de AWS. Esto creará un nuevo recurso ConnectionType en la 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. En AWS Secrets Manager, crear un secreto. El secreto debe contener el secreto del consumidor de la aplicación conectada con USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET como clave.

    nota

    Debe crear un secreto por cada conexión en la AWS Glue.

  3. Cree la conexión de la AWS Glue al llamar a la API CreateConnection mediante la API, la CLI o el SDK de AWS.

    1. Haga referencia al nombre del tipo de conexión REST del paso 1 como “ConnectionType”.

    2. Proporcione la InstanceURL y cualquier otra propiedad de ConnectionProperties que se haya definido durante el proceso de registro de ConnectionType de la AWS Glue.

    3. Elija uno de los tipos de autenticación configurados. La API de REST de Foo usa OAuth2 con el tipo de concesión ClientCredentials.

    4. Proporcione SecretArn y otras AuthenticationProperties que estén configuradas. Por ejemplo, se ha configurado OAUTH2 como AuthenticationType, por lo que se establecer “OAuth2Properties” en CreateConnectionInput. Esto requerirá propiedades como “OAuth2GrantType”, “TokenURL” y “OAuth2ClientApplication”.

  4. Realice la solicitud CreateConnection que creará la conexión de la 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" } } } } }