PolyBase で外部データソースとしてAmazon S3 を連携利用

詳細情報をご希望ですか?

無償トライアル:

ダウンロードへ

製品の詳細情報へ:

Amazon S3 ODBC Driver

Amazon S3 ODBC Driver を使って、ODBC 接続をサポートするあらゆるアプリケーション・ツールからAmzaon S3 クラウドストレージにデータ連携。

Amazon S3 にデータベースのようにアクセス - オブジェクト、バケットにODBC インターフェースで接続。



CData ODBC Driver for Amazon S3 とSQL Server 2019 のPolyBase を使って、リアルタイムAmazon S3 に外部データソースとしてアクセス。

SQL Server のPolyBase は、データベーステーブルをクエリするTransact-SQL 構文を使って、外部データにクエリする仕組みです。 CData ODBC Drivers for Amazon S3 を組み合わせて使うことで、SQL Server データと同じようにAmazon S3 へのアクセスが可能です。 本記事では、外部データソースと外部テーブルの作成から、T-SQL クエリを使ってライブAmazon S3 データへ接続を認可するところまで説明します。

CData ODBC ドライバーは、ドライバーに組み込まれた最適化されたデータ処理により、PolyBase でライブAmazon S3 データを送受信するための圧倒的なパフォーマンスを提供します。SQL Server からAmazon S3 に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされているSQL 操作をAmazon S3 に直接プッシュダウンし、組み込みSQL エンジンを利用して、サポートされていない操作(一般的にはSQL 関数とJOIN 操作) をクライアント側で処理します。また、PolyBase を使用することで、単一のクエリを使用して分散ソースからデータをプルし、SQL Server データをAmazon S3 と結合することもできます。

Amazon S3 への接続

未指定の場合は、初めにODBC DSN(data source name)で接続プロパティを指定します。ドライバーのインストールの最後にアドミニストレーターが開きます。Microsoft ODBC Data Source Administrator を使用して、ODBC DSN を作成および構成できます。PolyBase を使用してSQL Server に外部データソースを作成するには、System DSN を構成します。(CData Amazon S3 Sys は自動的に作成されます。)

Amazon S3 リクエストを認可するには、管理者アカウントまたはカスタム権限を持つIAM ユーザーの認証情報を入力します。AccessKey をアクセスキーID に設定します。SecretKey をシークレットアクセスキーに設定します。

Note: AWS アカウント管理者として接続できますが、AWS サービスにアクセスするにはIAM ユーザー認証情報を使用することをお勧めします。

アクセスキーの取得

IAM ユーザーの資格情報を取得するには:

  1. IAM コンソールにサインインします。
  2. ナビゲーションペインで[ユーザー]を選択します。
  3. ユーザーのアクセスキーを作成または管理するには、ユーザーを選択してから[セキュリティ認証情報]タブを選択します。

AWS ルートアカウントの資格情報を取得するには:

  1. ルートアカウントの資格情報を使用してAWS 管理コンソールにサインインします。
  2. アカウント名または番号を選択し、表示されたメニューで[My Security Credentials]を選択します。
  3. [Continue to Security Credentials]をクリックし、[Access Keys]セクションを展開して、ルートアカウントのアクセスキーを管理または作成します。

AWS ロールとして認証

多くの場合、認証にはAWS ルートユーザーのダイレクトなセキュリティ認証情報ではなく、IAM ロールを使用することをお勧めします。RoleARN を指定することでAWS ロールを代わりに使用できます。これにより、本製品は指定されたロールの資格情報を取得しようと試みます。

(すでにEC2 インスタンスなどで接続されているのではなく)AWS に接続している場合は、ロールを引き受けるIAM ユーザーのAccessKey とSecretKey を追加で指定する必要があります。AWS ルートユーザーのAccessKey および SecretKey を指定する場合、ロールは使用できません。

SSO 認証

SSO 認証を必要とするユーザーおよびロールには、RoleARN およびPrincipalArn 接続プロパティを指定してください。各Identity Provider に固有のSSOProperties を指定し、AccessKey とSecretKey を空のままにする必要があります。これにより、本製品は一時的な認証資格情報を取得するために、リクエストでSSO 認証情報を送信します。

[接続のテスト]をクリックして、DSN がAmazon S3 に正しく接続できているかを確認します。[テーブル]タブに移動し、Amazon S3 のテーブル定義を確認します。

Amazon S3 データの外部データソースを作成

接続を構成したのち、外部データソースのマスター暗号化キーと資格情報データベースを作成する必要があります。

マスター暗号化キーの作成

以下のSQL コマンドを実行して新しいマスターキー[ENCRYPTION]を作成し、外部データソースの資格情報を暗号化します。

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';

資格情報データベースの作成

以下のSQL コマンドを実行してAmazon S3 に接続されている外部データソースの資格情報を作成します。

Note:Amazon S3 は認証にUser やPassword を必要としないため、IDENTITY とSECRET に任意の値を使用できます。

CREATE DATABASE SCOPED CREDENTIAL amazons3_creds
WITH IDENTITY = 'username', SECRET = 'password';

Amazon S3 の外部データソースを作成

以下のSQL コマンドを実行し、以前作成したDSN と資格情報を使用して、PolyBase でAmazon S3 の外部データソースを作成します。

Amazon S3 の場合、SERVERNAME を[localhost]または[127.0.0.1]に設定し、PORT を空のままにします。PUSHDOWN は、デフォルトでON に設定されているため、ODBC Driver は、サーバー側の処理を利用して複雑なクエリを実行できます。

CREATE EXTERNAL DATA SOURCE cdata_amazons3_source
WITH ( 
  LOCATION = 'odbc://SERVERNAME[:PORT]',
  CONNECTION_OPTIONS = 'DSN=CData Amazon S3 Sys',
  -- PUSHDOWN = ON | OFF,
  CREDENTIAL = amazons3_creds
);

Amazon S3 の外部テーブルを作成

外部データソースを作成したら、CREATE EXTERNAL TABLE ステートメントを使用してSQL Server インスタンスからAmazon S3 にリンクします。テーブルカラムの定義は、CData ODBC Driver for Amazon S3 によって公開されているものと一致しなければなりません。DSN Configuration Wizard の[テーブル]タブを参照し、テーブルの定義を確認できます。

CREATE TABLE ステートメントのサンプル

以下は、Amazon S3 ObjectsACL に基づいて外部テーブルを作成するステートメントの一例です。

CREATE EXTERNAL TABLE ObjectsACL(
  Name [nvarchar](255) NULL,
  OwnerId [nvarchar](255) NULL,
  ...
) WITH ( 
  LOCATION='ObjectsACL',
  DATA_SOURCE=cdata_amazons3_source
);

SQL Server インスタンスでAmazon S3 の外部テーブルを作成すると、ローカルデータとリモートデータを同時にクエリできるようになります。CData ODBC Driver に組み込まれているクエリ処理により、可能な限り多くのクエリ処理がAmazon S3 にプッシュされることで、ローカルのリソースと計算リソースが解放されます。ODBC Driver for Amazon S3 の30日間無料トライアルをダウンロードし、SQL Server データでライブAmazon S3 データを使い始めましょう。