¿Cómo puedo crear un acceso entre cuentas de Amazon Redshift Spectrum a AWS Glue y Amazon S3?
Quiero usar Amazon Redshift Spectrum para acceder a AWS Glue y a Amazon Simple Storage Service (Amazon S3) en una cuenta de AWS diferente que esté dentro de la misma región de AWS. ¿Cómo lo hago?
Descripción corta
Para acceder a recursos de AWS que están en una cuenta diferente desde Amazon Redshift Spectrum, lleve a cabo los siguientes pasos:
1. En la cuenta 1, cree un rol de AWS Identity and Access Management (IAM) con una relación de confianza con Amazon Redshift. Este rol debe estar vinculado al clúster de Amazon Redshift.
2. En la cuenta 2, cree otro rol con acceso a AWS Glue y Amazon S3. Este rol edita la relación de confianza y permite que la cuenta de Amazon Redshift asuma este rol.
3. En la cuenta 1, edite los permisos para el rol existente, de modo que asuma el rol creado en la cuenta de Amazon S3 y AWS Glue.
Resolución
Cuenta 1: cree un rol de AWS Identity and Access Management (IAM) con una relación de confianza con Amazon Redshift
1. Abra la consola de IAM.
2. Elija Roles en el panel de navegación y luego Crear rol.
3. Para Seleccionar el tipo de entidad de confianza, elija servicio de AWS.
4. Elija Redshift.
5. En Seleccionar el caso de uso, elija Redshift - Personalizable.
6. Elija Next: Permissions (Siguiente: Permisos), Next: Tags y, luego, Next: Review (Siguiente: Revisión). No es necesario agregar políticas o etiquetas.
7. Ingrese un nombre de rol en Role name (Nombre de rol) y luego elija Create role (Crear rol). En los siguientes ejemplos, nos referiremos a este rol como redshift_role1.
8. Asocie redshift_role1 con un clúster de Amazon Redshift. Esta asociación permite que su clúster asuma el nuevo rol creado para acceder a Amazon S3, Amazon Athena y AWS Glue.
Cuenta 2: cree otro rol con acceso a AWS Glue y Amazon S3
1. Abra la consola de IAM.
2. Elija Políticas y luego Crear política.
3. Elija la pestaña JSON y luego ingrese una política de IAM similar a la siguiente:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "glue:BatchCreatePartition", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteDatabase", "glue:GetTables", "glue:GetPartitions", "glue:BatchDeletePartition", "glue:UpdateTable", "glue:BatchGetPartition", "glue:DeleteTable", "glue:GetDatabases", "glue:GetTable", "glue:GetDatabase", "glue:GetPartition", "glue:CreateDatabase", "glue:BatchDeleteTable", "glue:CreatePartition", "glue:DeletePartition", "glue:UpdatePartition" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucketMultipartUploads", "s3:ListBucket", "s3:GetBucketLocation", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::your_bucket", "arn:aws:s3:::your_bucket/*" ] }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "<KMS_KEY_ARN>" ] } ] }
Reemplace your_bucket con el nombre del bucket de S3 al que quiere acceder con Amazon Redshift Spectrum. Reemplace KMS_KEY_ARN por el ARN de la clave de KMS que cifra el bucket de S3.
Nota: si los archivos de su bucket de S3 están cifrados, asegúrese de conceder los permisos adecuados a Amazon Redshift.
4. Elija Revisar la política.
5. Escriba un Nombre para la política y luego elija Crear política.
6. En el panel de navegación, elija Roles y luego Crear rol.
7. En Select type of trusted entity (Seleccionar el tipo de entidad de confianza), elija Another AWS account (Otra cuenta de AWS).
8. En ID de la cuenta, escriba el ID de la cuenta que usa Amazon Redshift. Para obtener más información, consulte Buscar su ID de cuenta de AWS.
9. Elija Siguiente: Permisos.
10. En la lista de políticas, seleccione la casilla de verificación junto al nombre de la política que ha creado previamente.
11. Elija Siguiente: Etiquetas y luego Siguiente: Revisión. No es necesario agregar etiquetas.
12. Ingrese un nombre de rol en Role name (Nombre de rol) y luego elija Create role (Crear rol). En los siguientes ejemplos, nos referiremos a esto como glue_s3_role2.
13. En el panel de navegación, elija Roles.
14. Seleccione el nombre del rol que ha creado previamente y, a continuación, elija la pestaña Relaciones de confianza.
15. Elija Editar la relación de confianza.
16. Elimine la política existente y reemplácela por una similar a la siguiente. Reemplace redshift_account1 con el ID de la cuenta que está utilizando Amazon Redshift. Reemplace redshift_role1 con el nombre del primer rol que ha creado.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::redshift_account1:role/redshift_role1" }, "Action": "sts:AssumeRole" } ] }
17. Elija Update Trust Policy (Actualizar la política de confianza).
Cuenta 1: edite los permisos del rol creado en Amazon Redshift
1. Abra la consola de IAM.
2. Elija Roles en el panel de navegación y luego elija el nombre del primer rol (redshift_role1) que ha creado anteriormente.
3. En la sección Permissions (Permisos), elija Add inline policy (Agregar política en línea).
4. Elija la pestaña JSON. Elimine la política existente y luego ingrese una política de IAM similar a la siguiente. Reemplace glue_s3_account2 con el ID de la cuenta que usa AWS Glue y Amazon S3. Reemplace glue_s3_role2 con el nombre del segundo rol que ha creado:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487639602000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::glue_s3_account2:role/glue_s3_role2" } ] }<br>
5. Elija Revisar la política.
6. Escriba un nombre para la política y luego elija Crear política.
7. Establezca una conexión al clúster de Amazon Redshift.
8. Cree un esquema externo mediante los roles que ha creado en ambas cuentas, como se muestra en el siguiente ejemplo:
create external schema spectrum_schema from data catalog database 'your_db' iam_role 'arn:aws:iam::redshift_account1:role/redshift_role1,arn:aws:iam::glue_s3_account2:role/glue_s3_role2'
Reemplace los siguientes valores:
your_db: el nombre de su base de datos en AWS Glue.
redshift_account1: el ID de la cuenta de Amazon Redshift.
redshift_role1: el nombre del rol que ha creado en la cuenta de Amazon Redshift.
glue_s3_account2: el ID de la cuenta de AWS Glue y Amazon S3.
glue_s3_role2: el nombre del rol que ha creado en la cuenta de AWS Glue y Amazon S3.
Ahora puede consultar las tablas de AWS Glue en glue_s3_account2 mediante Amazon Redshift Spectrum desde su clúster de Amazon Redshift en redshift_account1 , mientras todos los recursos estén en la misma región. No necesita recrear sus tablas externas porque Redshift Spectrum puede acceder a sus tablas actuales de AWS Glue.
La consulta del siguiente ejemplo devuelve el número de filas de una tabla de AWS Glue creada en el esquema externo:
select count(*) from spectrum_schema.glue_table;
Nota: reemplace spectrum_schema y glue_table con el nombre de su esquema y de la tabla de AWS Glue.
Información relacionada
Vídeos relacionados

Contenido relevante
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 2 años