カテゴリ:

ユーザーとセキュリティ DDL (サードパーティのサービス統合)

CREATE STORAGE INTEGRATION

アカウントに新しいストレージ統合を作成するか、既存の統合を置き換えます。

ストレージ統合は、外部クラウドストレージ用に生成されたIDおよびアクセス管理(IAM)エンティティを、許可またはブロックされたストレージの場所(Amazon S3、Google Cloud Storage、またはMicrosoft Azure)のオプションセットとともに格納するSnowflakeオブジェクトです。組織のクラウドプロバイダー管理者は、生成されたエンティティにストレージの場所に対するアクセス許可を付与します。このオプションにより、ユーザーは、ステージの作成時またはデータのロードまたはアンロード時に認証情報の提供を回避できます。

単一のストレージ統合は、複数の外部ステージをサポートできます。ステージ定義にある URL は、 STORAGE_ALLOWED_LOCATIONS パラメーターのために指定された保管場所に合わせる必要があります。

警告

ストレージ統合を再作成すると( CREATE OR REPLACE STORAGE INTEGRATION を使用)、ストレージ統合とそれを参照するすべてのステージとの関連付けが解除されます。これは、ステージがストレージ統合の名前ではなく、非表示の ID を使用してストレージ統合にリンクしているためです。バックグラウンドでは、 CREATE OR REPLACE 構文はオブジェクトをドロップし、別の非表示の IDでオブジェクトを再作成します。

1つ以上のステージにリンクされた後にストレージ統合を再作成する必要がある場合は、 ALTER STAGE ステージ名 SET STORAGE_INTEGRATION = ストレージ統合名 を実行して、各ステージとストレージ統合間の関連付けを再確立する必要があります。

  • ステージ名 は、ステージの名前です。

  • ストレージ統合名 は、ストレージ統合の名前です。

注釈

Snowflakeアカウントをホストするクラウドプロバイダーに関係なく、Amazon S3、Google Cloud Storage、またはMicrosoft Azureクラウドストレージをサポートするようにストレージ統合を構成できます。

クラウドプロバイダーは、各自のネットワークから転送されたデータ分を課金します。Snowflake(Amazon Web Services(AWS)、Google Cloud Platform、またはMicrosoft Azureでホストされている)から別の 地域 または異なるクラウドプロバイダーの外部ステージにデータがアンロードされる場合、これらの費用を回収するためにSnowflakeは、バイトごとの料金を請求します。Snowflakeは、データの入力(つまり、Snowflakeにデータをロードする場合)に対しては請求しません。詳細については、 価格設定ページ (Snowflake Webサイト)をご参照ください。

こちらもご参照ください:

ALTER STORAGE INTEGRATIONDROP INTEGRATIONSHOW INTEGRATIONS

このトピックの内容:

構文

CREATE [ OR REPLACE ] STORAGE INTEGRATION [IF NOT EXISTS]
  <name>
  TYPE = EXTERNAL_STAGE
  cloudProviderParams
  ENABLED = { TRUE | FALSE }
  STORAGE_ALLOWED_LOCATIONS = ('<cloud>://<bucket>/<path>/', '<cloud>://<bucket>/<path>/')
  [ STORAGE_BLOCKED_LOCATIONS = ('<cloud>://<bucket>/<path>/', '<cloud>://<bucket>/<path>/') ]
  [ COMMENT = '<string_literal>' ]

条件:

cloudProviderParams (for Amazon S3) ::=
  STORAGE_PROVIDER = S3
  STORAGE_AWS_ROLE_ARN = '<iam_role>'
cloudProviderParams (for Google Cloud Storage) ::=
  STORAGE_PROVIDER = GCS
cloudProviderParams (for Microsoft Azure) ::=
  STORAGE_PROVIDER = AZURE
  AZURE_TENANT_ID = '<tenant_id>'

必須パラメーター

名前

統合の識別子(つまり、名前)を指定する文字列。アカウント内で一意である必要があります。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

TYPE = EXTERNAL_STAGE

統合の型を指定します。

  • EXTERNAL_STAGE :Snowflakeと外部クラウドストレージの場所の間のインターフェイスを作成します。

ENABLED = TRUE | FALSE

このストレージ統合を段階的に使用できるかどうかを指定します。

  • TRUE は、ユーザーがこの統合を参照する新しいステージを作成できます。この統合機能を通常参照する既存のステージ。

  • FALSE は、ユーザーがこの統合を参照する新しいステージを作成できないようにします。この統合を参照する既存のステージは、ステージ定義の保存場所にアクセスできません。

STORAGE_ALLOWED_LOCATIONS = ('クラウド固有のURL')

統合を使用する外部ステージが1つ以上のストレージの場所(つまり、S3バケット、 GCS バケット、またはAzureコンテナー)を参照することを明示的に制限します。既存のバケットのコンマ区切りリスト URLs をサポートし、オプションで、ロード/アンロード用のデータファイルの保存に使用されるパスをサポートします。または、「すべてのバケットやパスへのアクセスを許可する」という意味の * ワイルドカードをサポートしています。

Amazon S3

STORAGE_ALLOWED_LOCATIONS = ('s3://バケット/パス/', 's3://バケット/パス/')

  • バケット は、データファイルを保存するS3バケットの名前です(例: mybucket)。

  • パス は、一連のファイルへのアクセスを制限するクラウドストレージの場所にある、ファイルの大文字と小文字を区別するオプションのパスです(つまり、ファイルの名前は一般的な文字列で開始)。パスは、別のクラウドストレージサービスによって プレフィックス または フォルダー と呼ばれることもあります。

Google Cloud Storage

STORAGE_ALLOWED_LOCATIONS = ('gcs://バケット/パス/', 'gcs://バケット/パス/')

  • バケット は、データファイルを保存する GCS バケットの名前です(例: mybucket)。

  • パス は、一連のファイルへのアクセスを制限するクラウドストレージの場所にある、ファイルの大文字と小文字を区別するオプションのパスです(つまり、ファイルの名前は一般的な文字列で開始)。パスは、別のクラウドストレージサービスによって プレフィックス または フォルダー と呼ばれることもあります。

Microsoft Azure

STORAGE_ALLOWED_LOCATIONS = ('azure://アカウント.blob.core.windows.net/コンテナー/パス/', 'azure://アカウント.blob.core.windows.net/コンテナー/パス/')

  • アカウント は、Azureアカウントの名前です(例: myaccount)。Data Lake Storage Gen2を含む、サポートされているすべてのタイプのAzure BLOBストレージアカウントに、 blob.core.windows.net エンドポイントを使用します。

  • コンテナー は、データファイルを保存するAzure BLOBストレージコンテナーの名前です(例: mycontainer)。

  • パス は、一連のファイルへのアクセスを制限するクラウドストレージの場所にある、ファイルの大文字と小文字を区別するオプションのパスです(つまり、ファイルの名前は一般的な文字列で開始)。パスは、別のクラウドストレージサービスによって プレフィックス または フォルダー と呼ばれることもあります。

オプションのパラメーター

STORAGE_BLOCKED_LOCATIONS = ('クラウド固有のURL')

統合を使用する外部ステージが1つ以上のストレージの場所(つまり、S3バケットまたは GCS バケット)を参照することを明示的に禁止します。既存の保存場所の URLs のコンマ区切りリスト、およびオプションで、ロード/アンロード用のデータファイルの保存に使用されるパスをサポートします。一般的に STORAGE_ALLOWED_LOCATIONS が * ワイルドカードに設定されている場合に使用され、アカウントのすべてのバケットへのアクセスを許可しますが、ブロックされた保管場所および、任意でパスは 例外 です。

Amazon S3

STORAGE_BLOCKED_LOCATIONS = ('s3://バケット/パス/', 's3://バケット/パス/')

  • バケット は、データファイルを保存するS3バケットの名前です(例: mybucket)。

  • パス は、データファイルへのアクセスをさらに制限するバケット内のオプションのパス(または ディレクトリ)です。

Google Cloud Storage

STORAGE_BLOCKED_LOCATIONS = ('gcs://バケット/パス/', 'gcs://バケット/パス/')

  • バケット は、データファイルを保存する GCS バケットの名前です(例: mybucket)。

  • パス は、データファイルへのアクセスをさらに制限するバケット内のオプションのパス(または ディレクトリ)です。

Microsoft Azure

STORAGE_BLOCKED_LOCATIONS = ('azure://アカウント.blob.core.windows.net/コンテナー/パス/', 'azure://アカウント.blob.core.windows.net/コンテナー/パス/')

  • アカウント は、Azureアカウントの名前です(例: myaccount)。

  • コンテナー は、データファイルを保存するAzure BLOBストレージコンテナーの名前です(例: mycontainer)。

  • パス は、データファイルへのアクセスをさらに制限するバケット内のオプションのパス(または ディレクトリ)です。

COMMENT = '文字列リテラル'

統合のコメントを指定する文字列(リテラル)。

デフォルト:値なし

クラウドプロバイダーのパラメーター(cloudProviderParams

Amazon S3

STORAGE_PROVIDER = S3

データファイルを保存するクラウドストレージプロバイダーを指定します。

STORAGE_AWS_ROLE_ARN = iamロール

データファイルを含むS3バケットに対する権限を付与する AWS IDおよびアクセス管理(IAM)ロールのAmazonリソースネーム(ARN)を指定します。詳細については、 Amazon S3へのセキュアアクセスの構成 をご参照ください。

Google Cloud Storage

STORAGE_PROVIDER = GCS

データファイルを保存するクラウドストレージプロバイダーを指定します。

Microsoft Azure

STORAGE_PROVIDER = AZURE

データファイルを保存するクラウドストレージプロバイダーを指定します。

AZURE_TENANT_ID = 'テナントID'

許可およびブロックされたストレージアカウントが属するOffice 365テナントの ID を指定します。ストレージ統合は1つのテナントのみを認証できるため、許可およびブロックされたストレージの場所は、すべてこのテナントに属するストレージアカウントを参照する必要があります。

テナント IDを見つけるには、Azureポータルにログインして Azure Active Directory » Properties をクリックします。テナント ID が Directory ID フィールドに表示されます。

使用上の注意

  • この SQL コマンドを実行できるのは、アカウント管理者( ACCOUNTADMIN ロールを持つユーザー)またはグローバル CREATE INTEGRATION 権限を持つロールのみです。

次の例では、2つのバケットとパスのいずれかを参照するために統合を使用する外部ステージを明示的に制限する統合を作成します。

Amazon S3

CREATE STORAGE INTEGRATION s3_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = S3
  STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::001234567890:role/myrole'
  ENABLED = TRUE
  STORAGE_ALLOWED_LOCATIONS = ('s3://mybucket1/path1/', 's3://mybucket2/path2/');

Google Cloud Storage

CREATE STORAGE INTEGRATION gcs_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = GCS
  ENABLED = TRUE
  STORAGE_ALLOWED_LOCATIONS = ('gcs://mybucket1/path1/', 'gcs://mybucket2/path2/');

Microsoft Azure

CREATE STORAGE INTEGRATION azure_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = AZURE
  ENABLED = TRUE
  AZURE_TENANT_ID = '<tenant_id>'
  STORAGE_ALLOWED_LOCATIONS = ('azure://myaccount.blob.core.windows.net/mycontainer/path1/', 'azure://myaccount.blob.core.windows.net/mycontainer/path2/');

次の例では、統合を使用して、明示的にブロックされたもの を除く 、アカウント内の 任意 のバケットとパスを参照できる外部ステージの統合を作成します。

Amazon S3

CREATE STORAGE INTEGRATION s3_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = S3
  STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::001234567890:role/myrole'
  ENABLED = TRUE
  STORAGE_ALLOWED_LOCATIONS = ('*')
  STORAGE_BLOCKED_LOCATIONS = ('s3://mybucket3/path3/', 's3://mybucket4/path4/');

Google Cloud Storage

CREATE STORAGE INTEGRATION gcs_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = GCS
  ENABLED = TRUE
  STORAGE_ALLOWED_LOCATIONS = ('*')
  STORAGE_BLOCKED_LOCATIONS = ('gcs://mybucket3/path3/', 'gcs://mybucket4/path4/');

Microsoft Azure

CREATE STORAGE INTEGRATION azure_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = AZURE
  ENABLED = TRUE
  AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9'
  STORAGE_ALLOWED_LOCATIONS = ('*')
  STORAGE_BLOCKED_LOCATIONS = ('azure://myaccount.blob.core.windows.net/mycontainer/path3/', 'azure://myaccount.blob.core.windows.net/mycontainer/path4/');