Use temporary credentials to load data with COPY INTO | Databricks on AWS [2022/9/27時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
お使いのDatabricksクラスターやSQLウェアハウスがソースファイルを読み込む権限を有していない場合、外部クラウドオブジェクトストレージのデータにアクセスするために一時資格情報を使うことができます。
皆様の組織でクラウドセキュリティをどのように関しているのかに応じて、クラウド管理者やパワーユーザーに資格情報を提供してもらうように依頼する必要があるかもしれません。
データにアクセスするための一時資格情報、あるいは暗号化オプションの指定
注意
資格情報と暗号化オプションはDatabricksランタイム10.2以降で利用できます。
COPY INTO
は以下をサポートしています:
- ADLS Gen2やAzure Blob Storageからデータを読み込むためのAzure SASトークン。Azure Blob Storageの一時トークンはコンテナレベルですが、ADLS Gen2のトークンはコンテナレベルに加えてディレクトリレベルとなります。可能な限り、ディレクトリレベルのSASを使うことをお勧めします。SASトークンには
Read
、List
、Permissions
権限が必要です。 - AWS S3からデータを読み込むためのAWS STSトークン。トークンには
s3:GetObject*
、s3:ListBucket
、s3:GetBucketLocation
権限が必要です。
警告!
一時資格情報の誤用や漏洩を避けるために、タスクを完了するのに十分な有効期限を設定することをお勧めします。
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データのロード
以下の例では、AWS S3のファイルからmy_json_data
という外部DeltaテーブルにJSONデータをロードしています。このテーブルはCOPY INTO
を実行する前に作成しておく必要があります。このコマンドでは、外部Deltaテーブルに書き込むための資格情報と、S3ロケーションから読み込むための資格情報をそれぞれで使用しています。
COPY INTO my_json_data WITH (CREDENTIAL target_credential)
FROM 's3://my-bucket/jsonData' WITH (CREDENTIAL source_credential)
FILEFORMAT = JSON
FILES = ('f.json')