Autenticación con la integración de Amazon Redshift para Apache Spark - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Autenticación con la integración de Amazon Redshift para Apache Spark

Uso AWS Secrets Manager para recuperar las credenciales y conectarse a Amazon Redshift

Puede autenticarse de forma segura en Amazon Redshift almacenando las credenciales en Secrets Manager y haciendo que el trabajo de Spark llame al para GetSecretValue API buscarlas:

from pyspark.sql import SQLContextimport boto3 sc = # existing SparkContext sql_context = SQLContext(sc) secretsmanager_client = boto3.client('secretsmanager', region_name=os.getenv('AWS_REGION')) secret_manager_response = secretsmanager_client.get_secret_value( SecretId='string', VersionId='string', VersionStage='string' ) username = # get username from secret_manager_response password = # get password from secret_manager_response url = "jdbc:redshift://redshifthost:5439/database?user=" + username + "&password=" + password # Access to Redshift cluster using Spark

Autenticarse en Amazon Redshift con un controlador JDBC

Establezca el nombre de usuario y la contraseña dentro del JDBC URL

Puede autenticar un trabajo de Spark en un clúster de Amazon Redshift especificando el nombre y la contraseña de la base de datos de Amazon Redshift en. JDBC URL

nota

Si pasa las credenciales de la base de datosURL, cualquier persona que tenga acceso a ellas también URL podrá acceder a las credenciales. Por lo general, no se recomienda este método porque no es seguro.

Si la seguridad no es un problema para su aplicación, puede utilizar el siguiente formato para establecer el nombre de usuario y la contraseña en JDBCURL:

jdbc:redshift://redshifthost:5439/database?user=username&password=password

Autenticación IAM basada en el uso con la función de ejecución de trabajos de Amazon EMR Serverless

A partir de la versión 6.9.0 de Amazon EMR Serverless, el controlador Amazon JDBC Redshift 2.1 o superior se incluye en el entorno. Con JDBC el controlador 2.1 y versiones posteriores, puede especificar el nombre de usuario JDBC URL y la contraseña sin procesar, pero no incluirlos.

En su lugar, puede especificar un esquema jdbc:redshift:iam://. Esto le ordena al JDBC controlador que utilice su función de ejecución de trabajos EMR sin servidor para obtener las credenciales automáticamente. Consulte Configurar una ODBC conexión JDBC o una conexión para usar IAM credenciales en la Guía de administración de Amazon Redshift para obtener más información. Un ejemplo de ello URL es:

jdbc:redshift:iam://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev

Los siguientes permisos son necesarios para su función de ejecución de tareas cuando se cumplen las condiciones establecidas:

Permiso Condiciones en las que se requiere un rol de ejecución de trabajos
redshift:GetClusterCredentials Necesario para que el JDBC conductor obtenga las credenciales de Amazon Redshift
redshift:DescribeCluster Obligatorio si especifica el clúster de Amazon Redshift y Región de AWS en JDBC URL lugar de en el punto final
redshift-serverless:GetCredentials Necesario para que el JDBC conductor obtenga las credenciales de Amazon Redshift Serverless
redshift-serverless:GetWorkgroup Obligatorio si utiliza Amazon Redshift Serverless y especifica el nombre del URL grupo de trabajo y la región

Conexión a Amazon Redshift desde un sitio diferente VPC

Al configurar un clúster de Amazon Redshift aprovisionado o un grupo de trabajo Amazon Redshift Serverless en VPC una, debe configurar la VPC conectividad de la aplicación EMR Amazon Serverless para acceder a los recursos. Para obtener más información sobre cómo configurar la VPC conectividad en una aplicación sin servidor, consulte. EMR Configurar VPC el acceso

  • Si el clúster de Amazon Redshift aprovisionado o el grupo de trabajo Amazon Redshift Serverless son de acceso público, puede especificar una o más subredes privadas que tengan NAT una puerta de enlace adjunta al crear aplicaciones sin servidor. EMR

  • Si el clúster de Amazon Redshift o el grupo de trabajo sin servidor de Amazon Redshift aprovisionados no son de acceso público, debe crear un VPC punto de conexión gestionado de Amazon Redshift para su clúster de Amazon Redshift, tal y como se describe en. Configurar VPC el acceso Como alternativa, puede crear su grupo de trabajo Amazon Redshift Serverless tal y como se describe en Conexión a Amazon Redshift Serverless de la Guía de administración de Amazon Redshift. Debe asociar el clúster o el subgrupo a las subredes privadas que especifique al crear la aplicación sin servidor. EMR

nota

Si utiliza la autenticación IAM basada y las subredes privadas de la aplicación EMR sin servidor no tienen una NAT puerta de enlace adjunta, también debe crear un VPC punto de conexión en esas subredes para Amazon Redshift o Amazon Redshift Serverless. De esta forma, el conductor puede obtener las credencialesJDBC.