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
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
-
Con la cuenta del propietario del catálogo, inicie sesión en la AWS Management Console.
Abra la consola de AWS Glue en https://console.aws.amazon.com/glue/
. -
En el panel de navegación, amplíe Catálogo de datos y, a continuación, elija Configuración del catálogo.
-
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 propietario999999999999
.{ "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
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
-
Con la cuenta de consumidor, inicia sesión en la AWS Management Console.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación, amplíe Administración de acceso y, a continuación, seleccione Políticas.
-
Elija Crear política.
-
En la página Especificar permisos, seleccione JSON.
-
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.
{ "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/*" ] } ] } -
Elija Siguiente.
-
En la página Revisar y crear, en Nombre de la política, ingrese un nombre para la política.
-
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
-
En el panel de navegación de la consola de IAM de la cuenta de consumidor, elija Roles.
-
En la página Roles, busque el rol al que desee adjuntar la política.
-
Elija Agregar permisos y luego Adjuntar políticas.
-
Busque la política que acaba de crear.
-
Seleccione la casilla de verificación de la política y, a continuación, elija Agregar permisos.
-
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
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 o editar una sesión actual. Al configurar las propiedades de la sesión, 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.
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()
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 de
Configuración del acceso entre cuentas a los catálogos de datos de AWS Glue
Administración de los permisos entre cuentas mediante AWS Glue y Lake Formation 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 en Patrones de recomendaciones de AWS.