기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Apache Spark용 Amazon Redshift 통합으로 인증
보안 인증을 검색하고 Amazon Redshift에 연결하는 데 AWS Secrets Manager를 사용합니다.
자격 증명을 Secrets Manager에 저장하여 Amazon Redshift에 대해 안전하게 인증한 후 Spark 작업에서 GetSecretValue
API를 직접 호출하여 가져올 수 있습니다.
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
JDBC 드라이버를 사용하여 Amazon Redshift에 인증
JDBC URL에서 사용자 이름 및 암호 설정
JDBC URL에서 Amazon Redshift 데이터베이스 이름과 암호를 지정하여 Amazon Redshift 클러스터에 대해 Spark 작업을 인증할 수 있습니다.
참고
URL에 데이터베이스 보안 인증을 전달하면 URL에 액세스할 수 있는 모든 사용자도 보안 인증에 액세스할 수 있습니다. 이 방법은 안전한 옵션이 아니므로 일반적으로 권장되지 않습니다.
애플리케이션의 보안이 문제가 아닌 경우 다음 형식을 사용하여 JDBC URL에서 사용자 이름과 암호를 설정할 수 있습니다.
jdbc:redshift://redshifthost:5439/database?user=
username
&password=password
Amazon EMR Serverless 작업 실행 역할로 IAM 기반 인증 사용
Amazon EMR Serverless 릴리스 6.9.0부터 Amazon Redshift JDBC 드라이버 버전 2.1 이상이 환경에 함께 패키지로 제공됩니다. JDBC 드라이버 2.1 이상을 사용하면 JDBC URL을 지정하고 원시 사용자 이름과 암호는 포함하지 않을 수 있습니다.
대신 jdbc:redshift:iam://
스키마를 지정할 수 있습니다. 이를 통해 EMR Serverless 작업 실행 역할을 사용하여 자격 증명을 자동으로 가져오도록 JDBC 드라이버에 지시합니다. 자세한 내용은 Amazon Redshift 관리 안내서에서 IAM 보안 인증을 사용하도록 JDBC 또는 ODBC 연결 구성을 참조하세요. 이 URL의 예제는 다음과 같습니다.
jdbc:redshift:iam://
examplecluster.abc123xyz789
.us-west-2
.redshift.amazonaws.com:5439/dev
제공된 조건을 충족하는 경우 작업 실행 역할에 다음 권한이 필요합니다.
권한 | 작업 실행 역할에 필요한 경우 조건 |
---|---|
redshift:GetClusterCredentials
|
JDBC 드라이버가 Amazon Redshift에서 보안 인증을 가져오는 데 필요함 |
redshift:DescribeCluster
|
Amazon Redshift 클러스터를 지정하고 엔드포인트 대신 JDBC URL에 AWS 리전을 지정하는 경우 필요함 |
redshift-serverless:GetCredentials
|
JDBC 드라이버가 Amazon Redshift Serverless에서 보안 인증을 가져오는 데 필요함 |
redshift-serverless:GetWorkgroup
|
Amazon Redshift Serverless를 사용하고 있고 작업 그룹 이름 및 리전 측면에서 URL을 지정하는 경우 필요함 |
다른 VPC 내에서 Amazon Redshift에 연결
VPC에서 프로비저닝된 Amazon Redshift 클러스터 또는 Amazon Redshift Serverless 작업 그룹을 설정하는 경우 Amazon EMR Serverless 애플리케이션이 리소스에 액세스하도록 VPC 연결을 구성해야 합니다. EMR Serverless 애플리케이션에서 VPC 연결을 구성하는 방법에 대한 자세한 내용은 데이터에 연결하도록 EMR Serverless 애플리케이션에 대한 VPC 액세스 구성 섹션을 참조하세요.
-
프로비저닝된 Amazon Redshift 클러스터 또는 Amazon Redshift Serverless 작업 그룹에 대한 퍼블릭 액세스가 가능한 경우 EMR Serverless 애플리케이션을 생성할 때 NAT 게이트웨이가 연결된 하나 이상의 프라이빗 서브넷을 지정할 수 있습니다.
-
프로비저닝된 Amazon Redshift 클러스터 또는 Amazon Redshift Serverless 작업 그룹에 대한 퍼블릭 액세스가 불가능한 경우 데이터에 연결하도록 EMR Serverless 애플리케이션에 대한 VPC 액세스 구성에 설명된 대로 Amazon Redshift 클러스터에 대한 Amazon Redshift 관리형 VPC 엔드포인트를 생성해야 합니다. 또는 Amazon Redshift 관리 안내서의 Amazon Redshift Serverless에 연결에 설명된 대로 Amazon Redshift Serverless 작업 그룹을 생성할 수 있습니다. 클러스터 또는 하위 그룹을 EMR Serverless 애플리케이션을 생성하는 경우 사용자가 지정한 프라이빗 서브넷에 연결해야 합니다.
참고
IAM 기반 인증을 사용하고 EMR Serverless 애플리케이션의 프라이빗 서브넷에 연결된 NAT 게이트웨이가 없는 경우 Amazon Redshift 또는 Amazon Redshift Serverless의 해당 서브넷에서도 VPC 엔드포인트를 생성해야 합니다. 이렇게 하면 JDBC 드라이버가 자격 증명을 가져올 수 있습니다.