

# Configuración del acceso entre cuentas de AWS Glue en Athena para Spark
<a name="spark-notebooks-cross-account-glue"></a>

En este tema, se muestra cómo se pueden configurar la cuenta de consumidor *666666666666* y la cuenta de propietario *999999999999* para el acceso entre cuentas de AWS Glue. Cuando se configuran las cuentas, la cuenta del consumidor puede ejecutar consultas desde Athena para Spark en las bases de datos y tablas de AWS Glue del propietario.

## Paso 1: proporcionar acceso a los roles de consumidor en AWS Glue
<a name="spark-notebooks-cross-account-glue-in-aws-glue-provide-access-to-the-consumer-account"></a>

En AWS Glue, el propietario crea una política que proporciona a los roles de consumidor acceso al catálogo de datos de AWS Glue del propietario.

**Para agregar una política de AWS Glue que permita a un rol de consumidor acceder al catálogo de datos del propietario**

1. Con la cuenta del propietario del catálogo, inicie sesión en la Consola de administración de AWS.

1. Abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. En el panel de navegación, amplíe **Catálogo de datos** y, a continuación, elija **Configuración del catálogo**.

1. En la página **Configuración del catálogo de datos**, en la sección de **Permisos**, agregue una política como la siguiente. Esta política proporciona roles para que la cuenta de consumidor *666666666666* acceda al catálogo de datos en la cuenta de propietario *999999999999*.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Cataloguers",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::666666666666:role/Admin",
                       "arn:aws:iam::666666666666:role/AWSAthenaSparkExecutionRole"
                   ]
               },
               "Action": "glue:*",
               "Resource": [
                   "arn:aws:glue:us-west-2:999999999999:catalog",
                   "arn:aws:glue:us-west-2:999999999999:database/*",
                   "arn:aws:glue:us-west-2:999999999999:table/*"
               ]
           }
       ]
   }
   ```

------

## Paso 2: configurar la cuenta de consumidor para el acceso
<a name="spark-notebooks-cross-account-glue-configure-the-consumer-account-for-access"></a>

En la cuenta de consumidor, cree una política que permita el acceso a las bases de datos, las tablas y el AWS Glue Data Catalog del propietario, y adjunte la política a un rol. En el siguiente ejemplo, se utiliza la cuenta de consumidor *666666666666*.

**Para crear una política de AWS Glue a fin de acceder al AWS Glue Data Catalog**

1. Con la cuenta de consumidor, inicia sesión en la Consola de administración de AWS.

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, amplíe **Administración de acceso** y, a continuación, seleccione **Políticas**.

1. Elija **Crear política**.

1. En la página **Especificar permisos**, seleccione **JSON**.

1. En el **Editor de políticas**, ingrese una instrucción JSON como la siguiente que permita realizar acciones de AWS Glue en el catálogo de datos de la cuenta de propietario.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "glue:*",
               "Resource": [
                   "arn:aws:glue:us-east-1:999999999999:catalog",
                   "arn:aws:glue:us-east-1:999999999999:database/*",
                   "arn:aws:glue:us-east-1:999999999999:table/*"
               ]
           }
       ]
   }
   ```

------

1. Elija **Siguiente**.

1. En la página **Revisar y crear**, en **Nombre de la política**, ingrese un nombre para la política.

1. Elija **Crear política**.

Luego, utilice la consola de IAM de la cuenta de consumidor para adjuntar la política que acaba de crear al rol o los roles de IAM que utilizará la cuenta de consumidor a fin de acceder al catálogo de datos del propietario.

**Para adjuntar la política de AWS Glue a los roles de la cuenta de consumidor**

1. En el panel de navegación de la consola de IAM de la cuenta de consumidor, elija **Roles**.

1. En la página **Roles**, busque el rol al que desee adjuntar la política.

1. Elija **Agregar permisos** y luego **Adjuntar políticas**.

1. Busque la política que acaba de crear.

1. Seleccione la casilla de verificación de la política y, a continuación, elija **Agregar permisos**.

1. Repita los pasos para agregar la política a los demás roles que desee utilizar.

## Paso 3: configurar una sesión y crear una consulta
<a name="spark-notebooks-cross-account-glue-configure-a-session-and-create-a-query"></a>

En Athena para Spark, en la cuenta de solicitante y con el rol especificado, cree una sesión para probar el acceso al [crear un cuaderno](notebooks-spark-getting-started.md#notebooks-spark-getting-started-creating-your-own-notebook) o [editar una sesión actual](notebooks-spark-getting-started.md#notebooks-spark-getting-started-editing-session-details). Al [configurar las propiedades de la sesión](notebooks-spark-custom-jar-cfg.md#notebooks-spark-custom-jar-cfg-console), especifique una de las siguientes opciones:
+ **El separador de catálogos de AWS Glue**: con este enfoque, se incluye el ID de cuenta del propietario en las consultas. Utilice este método si va a utilizar la sesión para consultar catálogos de datos de distintos propietarios.
+ **El ID de catálogo de AWS Glue**: con este enfoque, se consulta directamente la base de datos. Este método es más práctico si va a utilizar la sesión para consultar solo el catálogo de datos de un único propietario.

### Uso del separador de catálogos de AWS Glue
<a name="spark-notebooks-cross-account-glue-using-the-glue-catalog-separator-approach"></a>

Al editar las propiedades de la sesión, agregue lo siguiente:

```
{ 
    "spark.hadoop.aws.glue.catalog.separator": "/" 
}
```

Al ejecutar una consulta en una celda, utilice una sintaxis como la del siguiente ejemplo. Tenga en cuenta que en la cláusula `FROM` se requieren el ID de catálogo y el separador antes del nombre de la base de datos.

```
df = spark.sql('SELECT requestip, uri, method, status FROM `999999999999/mydatabase`.cloudfront_logs LIMIT 5') 
df.show()
```

### Uso del ID de catálogo de AWS Glue
<a name="spark-notebooks-cross-account-glue-using-the-glue-catalog-id-approach"></a>

Al editar las propiedades de la sesión, ingrese la siguiente propiedad. Sustituya *999999999999* por el ID de cuenta del propietario.

```
{ 
    "spark.hadoop.hive.metastore.glue.catalogid": "999999999999" 
}
```

Al ejecutar una consulta en una celda, utilice una sintaxis como la siguiente. Tenga en cuenta que en la cláusula `FROM` no se requieren el ID de catálogo y el separador antes del nombre de la base de datos.

```
df = spark.sql('SELECT * FROM mydatabase.cloudfront_logs LIMIT 10') 
df.show()
```

## Recursos adicionales
<a name="spark-notebooks-cross-account-glue-additional-resources"></a>

[Configuración del acceso entre cuentas a los catálogos de datos de AWS Glue](security-iam-cross-account-glue-catalog-access.md)

[Administración de los permisos entre cuentas mediante AWS Glue y Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/hybrid-cross-account.html) en la *Guía para desarrolladores de AWS Lake Formation*.

[Configurar el acceso entre cuentas a un AWS Glue Data Catalog compartido mediante Amazon Athena](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena.html) en *Patrones de recomendaciones de AWS*.