オープンテーブル接続プロパティ カタログで利用可能なOpen Table形式にデータを安全にロードするためのOpen Table接続を作成します。
前提条件 オープンテーブル接続を作成する前に、前提条件タスクを完了してください。
AWS GlueカタログとAmazon S3ストレージを使用してApache Icebergを操作する場合は、AWS上のテーブルを管理する次のAWSサービスへのアクセス権が割り当てられている必要があります。
• AWS Glueカタログ: AWS Glueデータカタログにより、Apache Icebergテーブルに関連付けられたメタデータを管理します。• Amazon S3ストレージ: Amazon S3により、実際のレコードを含むApache Icebergテーブルをカラム形式で保存し、パーティション化されたディレクトリに整理します。• Amazon Athena: Amazon Athenaは、AWS Glueデータカタログを使用して、Amazon S3に保存されるデータのテーブル名や列名などのメタデータを保存します。オープンテーブルコネクタにより、Amazon Athena JDBCドライバを使用してAWS Glueカタログに接続し、Apache Icebergテーブルのメタデータにアクセスします。これらのサービスにアクセスするには、個別のポリシーを作成する必要があります。
最小限のIAMポリシーの作成 AWS Glueカタログによって管理されるApache Icebergテーブルを操作するためには、最低限必要な権限を持つIAMポリシーを作成する必要があります。これらのポリシーの設定方法の詳細については、AWSのマニュアルを参照してください。
Amazon Athenaの最小限のポリシー 次のサンプルポリシーは、Amazon Athenaにアクセスするための最小限のAmazon IAMポリシーを示しています。 { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "athena:CreatePreparedStatement", "athena:GetPreparedStatement", "athena:GetWorkGroup", "athena:GetTableMetadata", "athena:StartQueryExecution", "athena:GetQueryResultsStream", "athena:ListDatabases", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:GetDatabase", "athena:ListTableMetadata", "athena:GetDataCatalog", "athena:DeletePreparedStatement" ], "Resource": [ "arn:aws:athena:*:*:workgroup/*", "arn:aws:athena:*:*:datacatalog/*" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "athena:ListDataCatalogs", "athena:GetQueryExecution", "athena:ListWorkGroups", "athena:GetPreparedStatement" ], "Resource": "*" } ] }
AWS Glueの最小限のポリシー 次のサンプルポリシーは、AWS Glueカタログにアクセスするための最小限のAmazon IAMポリシーを示しています。 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:*" ], "Resource": [ "*" ] } ] }
AWS S3の最小限のポリシー 次のサンプルポリシーは、Amazon S3バケットに対してデータの読み取りと書き込みを行うための最小限のAmazon IAMポリシーを示しています。 { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:ListAllMyBuckets", "s3:GetBucketAcl" ], "Resource": [ "*" ] } ] }
ロールを引き受けるためのEC2ロールの設定 IAMロールを引き受けるようにEC2ロールを設定し、同じAWSアカウントまたは異なるAWSアカウントからAmazon S3に接続するための一時的なセキュリティ資格情報を生成できます。
ロールを引き受けるようにEC2ロールを設定する場合は、一時的なセキュリティ資格情報を使用するためのsts:AssumeRole 権限が割り当てられており、AWSアカウント内で信頼関係が確立されていることを確認してください。信頼関係は、ロールを作成するときに、IAMロールの信頼ポリシーで定義されます。IAMロールにより、EC2ロールを信頼されたエンティティとして追加し、EC2ロールに一時的なセキュリティ資格情報の使用とAWSアカウントへのアクセスを許可します。
信頼されたEC2ロールが一時的なセキュリティ資格情報を要求すると、AWS Security Token Service(AWS STS)によって、指定した期間有効な一時的なセキュリティ資格情報が動的に生成され、信頼されたEC2ロールにその資格情報が提供されます。
ロール認証を引き受けるためのEC2ロールを使用する前に、次の前提条件を考慮してください。
• AWS EC2インスタンスにSecure Agentをインストールします。• AWS EC2インスタンスにアタッチされたEC2ロールには、別のIAMロールを引き受ける権限が必要です。以下に、AWS EC2インスタンスにアタッチされているEC2ロールの権限ポリシーの例を示します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::001234567890:role/open_table_rolearn" } ] }
リソース値には、EC2ロールが引き受ける必要があるIAMロールのARNを含める必要があります。
• EC2ロールが引き受ける必要のあるIAMロールには、AWS Glueカタログ、Amazon Athena、およびAmazon S3にアクセスするための権限ポリシーと信頼ポリシーがアタッチされている必要があります。また、より安全なアクセスのために、AWSアカウントの外部IDを指定することもできます。外部IDは文字列である必要があります。
次のサンプルに、外部IDを指定した、引き受けたIAMロールの信頼ポリシーを示します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::001234567890:root" //anyone in this account 001234567890 can assume this role, this can also be limited to one role. }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "aws_externalid" } } } ] }
最小の権限ポリシーの詳細については、「
最小限のIAMポリシーの作成 」を参照してください。
オープンテーブルへの接続 AWS Glueカタログに接続するようにオープンテーブルへの接続プロパティを設定してみましょう。
始める前に 開始する前に、AWS Glueカタログによって管理されるApache Icebergテーブルと連携するための最小限のIAMポリシーを作成する必要があります。また、Amazon S3に接続するための認証特有の前提条件を設定する必要があります。
Amazon S3用の永続的なIAM資格情報認証には、IAMユーザーのアクセスキーとシークレットキーの値が必要です。Amazon S3のロールを引き受けるためのEC2ロール認証では、一時的なセキュリティ認証情報を生成するために、EC2ロールが引き受けるIAMロールのARNが必要です。
Apache Icebergテーブルにアクセスするためのポリシーとロールの設定方法の詳細については、
前提条件 を参照してください。
接続の詳細 次の表に、オープンテーブル接続プロパティを示します。
プロパティ
説明
接続名
接続の名前。
各接続名は組織内で一意である必要があります。接続名には、英数字、スペース、および次の特殊文字を含めることができます。_ .+ -,
最大長は255文字です。
説明
接続の説明。最大長は4000文字です。
シークレットコンテナの使用
組織に対して設定されているSecrets Managerにこの接続の機密資格情報を保存します。
このプロパティは、組織にSecrets Managerが設定されている場合にのみ表示されます。
このプロパティは、データ取り込みおよびレプリケーション とデータアクセス管理 サービスではサポートされていません。
接続でシークレットコンテナを有効にすると、Secure AgentがSecrets Managerからどの資格情報を取得するかを選択できます。このオプションを無効にした場合、資格情報は組織の設定方法に応じてリポジトリまたはローカルSecure Agentに保存されます。
注: この接続を使用してプッシュダウンまたはプロキシサービスを介してデータアクセスポリシーを適用する場合、シークレットコンテナ設定オプションを使用することはできません。
Secrets Managerを設定および使用する方法については、
Secrets manager configuration を参照してください。
ランタイム環境
タスクを実行するランタイム環境の名前。
Hosted Agentやサーバーレスランタイム環境でデータベース取り込みタスクを実行することはできません。
オープンテーブルフォーマット
カタログに対してデータの読み取りまたは書き込みを行う際に使用するオープンテーブル形式。
リストから[Apache Iceberg]を選択します。
カタログタイプ 選択したオープンテーブル形式のメタデータを管理するためのカタログタイプとして、AWS Glueカタログを選択することができます。
オープンテーブル形式で使用するカタログのタイプを選択し、カタログ固有のパラメータを設定します。
AWS Glueカタログ Apache Icebergオープンテーブル形式でカタログタイプとしてAWS Glueカタログを使用する場合は、AWS Glueカタログに固有のプロパティを設定します。
次の表に、AWS Glueカタログを設定するためのプロパティとその説明を示します。
プロパティ
説明
Athena JDBC URL
JDBC URLは次の形式で入力します。
jdbc:athena://Region=<AWS_Region>;OutputLocation=<S3_Location>
例: jdbc:athena://Region=us-west1;OutputLocation=s3://working/dir
カタログ認証タイプ
カタログに接続するための認証方法。
次のいずれかのオプションを選択します。
- なし。認証資格情報を使用せずにAWS Glueカタログに接続します。- OAuth 2.0クライアント資格情報。クライアントIDとクライアントシークレットを使用してRESTカタログに接続し、認証サーバーからアクセストークンを取得します。
ストレージタイプ オープンテーブル形式のテーブルを保存する場合に、Amazon S3をストレージタイプとして選択することができます。
ストレージタイプを選択し、ストレージ固有の認証パラメータを設定します。
Amazon S3 カタログタイプとしてAWS Glueカタログを使用する場合は、Amazon S3ストレージに固有のプロパティを設定します。
永続的なIAM資格情報認証 AWS Glueカタログ、Hiveメタストアに接続する場合は、Amazon S3ストレージの永続的なIAM資格情報認証を使用できます。
次の表に、Permanent IAM Credentials authenticationを設定するためのプロパティを示します。
プロパティ
説明
アクセスキー
AWS Glueカタログにアクセスするためのキー。
シークレットキー
AWS Glueカタログにアクセスするためのシークレットキー。秘密鍵はアクセスキーに関連付けられており、アカウントを一意に識別します。
ロール認証を引き受けるためのEC2ロール EC2ロールを使用してAmazon S3ストレージのロール認証を引き受けることができるのは、AWS GlueカタログからApache Icebergテーブルを読み取る場合のみです。
次の表に、ロール認証を引き受けるようにEC2ロールを設定するためのプロパティを示します。
プロパティ
説明
IAMロールARN
一時的なセッション資格情報を生成するためにEC2ロールが引き受けるIAMロールのARN。
外部ID
IAMロールがsts:AssumeRole APIを呼び出すときにEC2ロールに指定する必要がある一意のユーザー定義の文字列値。