一時的な資格情報で COPY INTO を使用してデータを読み込む

Azure Databricks クラスターまたは SQL ウェアハウスにソース ファイルを読み取るアクセス許可がない場合は、一時的な資格情報を使用して、外部クラウド オブジェクト ストレージからデータにアクセスし、Delta Lake テーブルにファイルを読み込むことができます。

組織でクラウド セキュリティを管理する方法によっては、クラウド管理者またはパワー ユーザーに資格情報の入力を求める必要がある場合があります。 詳細については、「インジェスト用の一時的な資格情報を生成する」を参照してください。

データにアクセスするための一時的な資格情報または暗号化オプションを指定する

Note

資格情報と暗号化のオプションは Databricks Runtime 10.4 LTS 以降で使用できます。

COPY INTO では次に示すオブジェクトをサポートしています。

  • ADLS Gen2 および Azure Blob Storage からデータを読み取るための Azure SAS トークン。 Azure Blob Storage の一時トークンがコンテナー レベルであるのに対し、ADLS Gen2 トークンは、コンテナー レベルに加えて、ディレクトリ レベルの場合もあります。 Databricks では、可能な限りディレクトリ レベルの SAS トークンを使用することをお勧めします。 SAS トークンには、"Read"、"List"、および "Permissions" アクセス許可が必要です。
  • AWS S3 からデータを読み取るための AWS STS トークン。 トークンには、“s3:GetObject*”、“s3:ListBucket”、および “s3:GetBucketLocation” アクセス許可が必要です。

警告

一時的な資格情報の誤用や公開を避けるために、Databricks は、タスクを完了するのに十分な期間の有効期限を設定することをお勧めします。

COPY INTO は、AWS S3 からの暗号化データの読み込みをサポートしています。 暗号化データを読み込むには、暗号化の種類と、データの暗号化を解除するキーを指定します。

一時的な資格情報を使用してデータを読み込む

次の例では、S3 および ADLS Gen2 からデータを読み込み、一時的な資格情報を活用してソース データへのアクセスを提供します。

COPY INTO my_json_data
FROM 's3://my-bucket/jsonData' WITH (
  CREDENTIAL (AWS_ACCESS_KEY = '...', AWS_SECRET_KEY = '...', AWS_SESSION_TOKEN = '...')
)
FILEFORMAT = JSON

COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData' WITH (
  CREDENTIAL (AZURE_SAS_TOKEN = '...')
)
FILEFORMAT = JSON

暗号化データを読み込む

次の例では、カスタマー指定の暗号化キーを使用して S3 からデータを読み込みます。

COPY INTO my_json_data
FROM 's3://my-bucket/jsonData' WITH (
  ENCRYPTION (TYPE = 'AWS_SSE_C', MASTER_KEY = '...')
)
FILEFORMAT = JSON

ソースとターゲットの資格情報を使用して JSON データを読み込む

次の例では、Azure 上のファイルから my_json_data という名前の外部 Delta テーブルに JSON データを読み込みます。 このテーブルは、COPY INTO を実行する前に作成する必要があります。 このコマンドでは、既存の資格情報が外部 Delta テーブルへの書き込みに、別の資格情報が ABFSS の場所からの読み取りに使用されます。

COPY INTO my_json_data WITH (CREDENTIAL target_credential)
  FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path' WITH (CREDENTIAL source_credential)
  FILEFORMAT = JSON
  FILES = ('f.json')