前提条件 オープンテーブル接続を作成する前に、前提条件を満たしてください。
AWS GlueカタログとAmazon S3ストレージを使用したApache IcebergまたはDelta Lakeテーブルの操作 AWS GlueカタログとAmazon S3ストレージを使用してApache IcebergまたはDelta Lakeテーブルを操作する場合は、AWS上のテーブルを管理する次のAWSサービスにアクセスできる必要があります。
• AWS Glueカタログ: AWS Glueカタログにより、Apache IcebergテーブルまたはDelta Lakeテーブルに関連付けられたメタデータを管理します。• Amazon S3 Storage: Amazon S3は、実際のレコードを含むApache IcebergテーブルまたはDelta Lakeテーブルをカラム形式で保存し、パーティション化されたディレクトリに整理します。• Amazon Athena: Amazon Athenaは、AWS Glueデータカタログを使用して、Amazon S3に保存されるデータのテーブル名や列名などのメタデータを保存します。オープンテーブルコネクタは、Amazon Athena JDBCドライバを使用してAWS Glueカタログに接続し、Apache IcebergまたはDelta Lakeテーブルのメタデータにアクセスします。これらのサービスにアクセスするには、個別のポリシーを作成する必要があります。
HiveメタストアカタログとMicrosoft Azure Data Lake Storage Gen2を使用したApache Icebergテーブルの操作 HiveメタストアカタログとMicrosoft Azure Data Lake Storage Gen2を使用してApache Icebergテーブルを操作する場合は、Microsoft Azure Data Lake Storage Gen2上のテーブルを管理する次のサービスにアクセスできる必要があります。
• Hiveメタストアカタログ: Hiveメタストアカタログにより、Apache Icebergテーブルに関連付けられたメタデータを管理します。メタストアではHiveバージョン4.0を使用する必要があります。• Microsoft Azure Data Lake Storage Gen2: Microsoft Azure Data Lake Storage Gen2は、実際のレコードを含むApache Icebergテーブルをカラム形式で保存し、パーティション化されたディレクトリに整理します。• Hive JDBCドライバ: Hive JDBCドライバはHiveサーバーに接続して、Apache Icebergテーブルのメタデータにアクセスします。HiveメタストアカタログとAmazon S3ストレージを使用したApache Icebergテーブルの操作 HiveメタストアカタログとAmazon S3ストレージを使用してApache Icebergテーブルを操作する場合は、Amazon S3ストレージ上のテーブルを管理する次のサービスにアクセスできる必要があります。
• Hiveメタストアカタログ: Hiveメタストアカタログにより、Apache Icebergテーブルに関連付けられたメタデータを管理します。メタストアではHiveバージョン4.0を使用する必要があります。• Amazon S3ストレージ: Amazon S3により、実際のレコードを含むApache Icebergテーブルをカラム形式で保存し、パーティション化されたディレクトリに整理します。• Hive JDBCドライバ: Hive JDBCドライバはHiveサーバに接続して、Apache Icebergテーブルのメタデータにアクセスします。RESTカタログとAmazon S3を使用したApache Icebergテーブルの操作 PolarisカタログなどのRESTカタログとAmazon S3ストレージを使用してApache Icebergテーブルを操作する場合は、Amazon S3ストレージ上のテーブルを管理する次のサービスにアクセスできる必要があります。
• RESTカタログ: RESTカタログは、Apache Icebergテーブルに関連付けられたメタデータを管理します。• Amazon S3ストレージ: Amazon S3により、実際のレコードを含むApache Icebergテーブルをカラム形式で保存し、パーティション化されたディレクトリに整理します。最小限のIAMポリシーの作成 AWS Glueカタログによって管理されるApache IcebergテーブルまたはDelta Lakeテーブル を操作するためには、最低限必要な権限を持つ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": [ "*" ] } ] }
Hiveメタストア用にHive JDBCドライバをインストールする オープンテーブルコネクタを使用する前に、Secure AgentをインストールしたLinuxマシンにHive JDBCドライバをコピーする必要があります。Hive JDBCドライバは、Hiveメタストアカタログ用に使用する必要があります。
1 最新のHive JDBCドライバをWebサイトからダウンロードしてください。
2 Secure Agentマシンの次のディレクトリに移動します。 <Secure Agentのインストールディレクトリ>/ext/connectors/thirdparty/
3 次のフォルダを作成します: informatica.opentableformat/common
4 JDBCドライバをフォルダに追加します。
5 Secure Agentを再起動します。
ロールを引き受けるための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ポリシーの作成 」を参照してください。
アカウント間アクセスの設定 EC2インスタンス上で実行されているSecure Agentが1つのAWSアカウントにあり、Apache Icebergテーブル、AWS Glueカタログ、およびAthenaワークグループが別のAWSアカウントにある場合でも、アカウント間アクセスを設定できます。
アカウントBで実行されているEC2エージェントが、アカウントAにあるAWS Glueカタログ、Athenaワークグループ、およびApache Icebergテーブルにアクセスできるように、アカウント間IAMロールとポリシーを設定する例を次に示します。
• アカウントAは、引き受けるIAMロール、AWS Glueカタログ、Athenaワークグループ、およびIcebergテーブルをホストします。• アカウントBは、アカウントAでロールを引き受ける必要があるSecure Agentを実行しているEC2インスタンスをホストします。EC2インスタンスにアカウント間アクセスを設定するには、次の手順を実行します。
1 AWS Glueカタログ、Amazon Athena、およびAmazon S3用のIAMポリシーをアカウントAに作成します。2 アカウントAに、外部IDを使用してアカウントBがロールを引き受けることができるようにする信頼ポリシーを持つIAMロールを作成します。3 アカウントBにIAMポリシーを作成し、EC2インスタンスがアカウントAのロールを引き受けることができるようにします。4 アカウントBのEC2インスタンスにIAMロールを作成し、割り当てます。アカウントAでのIAMポリシーの作成 AWS Glueカタログ、Amazon Athena、およびAmazon S3を操作するには、必要な最低限の権限を持つIAMポリシーを作成する必要があります。
1 IAMコンソールにログインします。2 [Policies(ポリシー)] > [Create policy(ポリシーの作成)] をクリックします。3 [JSON] タブで、次のポリシーを追加します。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", "athena:ListWorkGroups", "athena:ListDataCatalogs" ], "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": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "glue:*" ], "Resource": "*" } ] }
Amazon 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": [ "*" ] } ] }
アカウントAでのIAMロールの作成 アカウントAに、外部IDを使用してアカウントBがロールを引き受けることができるようにする信頼ポリシーを持つIAMロールを作成します。
1 IAMコンソールで、[IAM] > [Roles(ロール)] > [Create Role(ロールを作成)] をクリックします。2 [Step 1: Select trusted entities(ステップ1: 信頼済みエンティティの選択)] タブの[Trusted entity type(信頼済みエンティティのタイプ)] セクションで、[AWS account(AWSアカウント)] を選択します。3 [An AWS account(AWSアカウント)] セクションで、[Another AWS account(別のAWSアカウント)] を選択し、Secure AgentがインストールされているEC2インスタンスをホストしているアカウントBのアカウントIDを入力します。4 [Options(オプション)] で[Require External ID(外部IDが必要)] を選択し、安全な外部IDを入力します。5 [Next(次へ)] をクリックします6 [Step 2 Add permissions(ステップ2: アクセス許可を追加する)] タブで、AWS Glueカタログ、Amazon Athena、およびAmazon S3にアクセスするための作成済みのアクセス許可ポリシーを選択してアタッチします。7 次へ をクリックします8 [Step 3 Name, review, and create(ステップ3: 名前、確認、および作成)] タブで、ロールの[Name(名前)] を入力します。9 [Create role(ロールの作成)] をクリックします。ロールを作成した後に、IAMロールのARNをコピーします。ロール認証を引き受けるためのEC2ロール用にアカウント間アクセスを使用するには、Open Table接続でIAMロールARNを指定する必要があります。
10 [Trust relationships(信頼関係)] タブでは、IAMロールの信頼関係ポリシーを表示できます。次の例に、IAMロールの信頼関係ポリシーを示します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789101:root" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "opentable" } } } ] }
アカウントBでのIAMポリシーの作成 EC2インスタンスがアカウントAのIAMロールを引き受けることができるように、アカウントBにIAMポリシーを作成します。
1 IAMコンソールで、[Policies(ポリシー)] > [Create policy(ポリシーの作成)] をクリックします。2 [JSON] タブで、次のポリシーを追加します。{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::AccountAID:role/assumerolename" } ] }
ポリシーの[Resource(リソース)] フィールドの値は、アカウントAで作成されたIAMロールのARNです。arn:aws:iam::AccountAID:role/assumerolename を実際のIAMロールARNに置き換えてください。
3 次へ をクリックします4 ポリシーに名前を付けてから、[Create Policy(ポリシーの作成)] をクリックします。アカウントBでのEC2インスタンスへのIAMロールの作成と割り当て アカウントBでEC2インスタンスにIAMロールを作成するには、次の手順を実行します。
1 IAMコンソールで、[IAM] > [Roles(ロール)] > [Create Role(ロールを作成)] をクリックします。2 [Step 1: Select trusted entities(ステップ1: 信頼済みエンティティの選択)] タブの[Trusted entity type(信頼済みエンティティのタイプ)] セクションで、[AWS service(AWSサービス)] を選択します。3 [Use case(ユースケース)] で[EC2] を選択します。4 [Next(次へ)] をクリックします5 [Step 2 Add permissions(ステップ2: 権限の追加)] タブで、アカウントBで作成したポリシーを選択してアタッチします。6 次へ をクリックします7 [Step 3 Name, review, and create(ステップ 3: 名前、確認、および作成)] タブで、ロールの[Name(名前)] と[Description(説明)] を入力します。8 [Create role(ロールの作成)] をクリックします。EC2インスタンスにIAMロールを割り当てるには、次の手順を実行します。
1 EC2コンソールにログインします。2 インスタンスを選択してから、[Actions(アクション)] > [Security(セキュリティ)] > [Modify IAM role(IAMロールの変更)] をクリックします。3 作成したロールを選択し、[Update IAM role(IAMロールの更新)] をクリックします。必要に応じて、IPアドレスをホワイトリストに登録するには、次の手順を実行します。
1 [Security(セキュリティ)] タブで、関連付けられている[Security Group(セキュリティグループ)] のIDをクリックします。2 [Edit inbound rules(インバウンドルールの編集)] をクリックします。3 [Add rule(ルールの追加)] をクリックし、[Protocol(プロトコル)] と[Port range(ポート範囲)] を選択します。4 [Source(ソース)] で[Custom(カスタム)] を選択し、ホワイトリストに登録する特定のIPアドレスを入力します。5 [Save rule(ルールの保存)] をクリックします。