Amazon Redshift integration for Apache Spark による認証 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Redshift integration for Apache Spark による認証

使用アイテム AWS Secrets Manager 認証情報を取得して Amazon Redshift に接続するには

Secrets Manager に認証情報を保存して Amazon Redshift に対して安全に認証し、Spark ジョブで GetSecretValueAPIを呼び出して取得できます。

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

で Amazon Redshift データベースの名前とパスワードを指定することで、Amazon Redshift クラスターに対して Spark ジョブを認証できますJDBCURL。

注記

でデータベース認証情報を渡すと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 以降では、raw ユーザー名とパスワードを含めJDBCURLずに を指定できます。

代わりに、jdbc:redshift:iam:// スキームを指定できます。これにより、EMRサーバーレスジョブ実行ロールを使用して認証情報を自動的に取得するように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 クラスターと AWS リージョン エンドポイントJDBCURLではなく の
redshift-serverless:GetCredentials JDBC ドライバーが Amazon Redshift Serverless から認証情報を取得するために必要です
redshift-serverless:GetWorkgroup Amazon Redshift Serverless を使用していて、ワークグループ名とリージョンの点URLで を指定する場合に必要です

別の 内の Amazon Redshift への接続 VPC

でプロビジョニングされた Amazon Redshift クラスターまたは Amazon Redshift Serverless ワークグループを設定するときはVPC、Amazon EMR Serverless アプリケーションが リソースにアクセスするようにVPC接続を設定する必要があります。EMR Serverless アプリケーションでVPC接続を設定する方法の詳細については、「」を参照してくださいVPC アクセスの設定

  • プロビジョニングされた Amazon Redshift クラスターまたは Amazon Redshift Serverless ワークグループがパブリックアクセス可能な場合は、EMRサーバーレスアプリケーションの作成時にNATゲートウェイがアタッチされた 1 つ以上のプライベートサブネットを指定できます。

  • プロビジョニングされた Amazon Redshift クラスターまたは Amazon Redshift Serverless ワークグループがパブリックアクセス可能でない場合は、「」の説明に従って、Amazon Redshift クラスターの Amazon Redshift マネージドVPCエンドポイントを作成する必要がありますVPC アクセスの設定。または、「Amazon Redshift 管理ガイド」の「Amazon Redshift Serverless への接続」の説明に従って、Amazon Redshift Serverless ワークグループを作成することもできます。EMR Serverless アプリケーションの作成時に指定したプライベートサブネットにクラスターまたはサブグループを関連付ける必要があります。

注記

IAM ベース認証を使用し、EMRサーバーレスアプリケーションのプライベートサブネットにNATゲートウェイがアタッチされていない場合は、Amazon Redshift または Amazon Redshift Serverless のサブネットにもVPCエンドポイントを作成する必要があります。これにより、JDBCドライバーは認証情報を取得できます。