以下の記事にて、TPC-Hのデータを作ってみたのですがazcopyでCentOSからファイルをアップロードしたのでその方法を記載します。
TPC-Hを使ってテスト環境を作成する(Synapse SQLプール)
1.ストレージアカウントと、コンテナの作成
まずはアップロードするストレージアカウントおよびコンテナを作成します。
※すでに存在している場合は、この作成は不要です。
1-1.Azureポータルでストレージアカウントを選択
1-2.ストレージアカウントの追加
1-3.基本タブにて必要な情報を追加
今回の例では、リソースグループ
、ストレージアカウント名
、レプリケーション
以外はデフォルトで指定しています。
※ストレージアカウント名は全世界で1つです。
1-4.ネットワークタブにて必要な情報を選択
ネットワークの設定では今回はデフォルトのまま何も変えず作成しています。
1-5.データの保護を選択
1-6.詳細タブにてData Lake Storage Gen2を選択
1-7.確認および作成にてストレージアカウントを作成
作成ボタンを押下するとストレージアカウントが作成されます。
1-8.コンテナの作成
ストレージアカウントが作成されたら、作成されたストレージアカウントよりコンテナの作成を行ってください。
以下の画面より+ コンテナー
を選択します。
azcopytest
というコンテナを作成しました。
2.ストレージアカウントのアクセス制御(IAM)の設定
Blobへのアクセスを行うために、IAMの設定が必要です。また、ここで設定したIAMの情報を利用して、azcopyを行う事になります。
この設定を行わないとazcopy時に403 This request is not authorized to perform this operation using this permission.
のようなエラーが発生し、azcopyが出来なくなります。
2-1.先ほど作成したストレージアカウントを選択
2-2.アクセス制御(IAM)からロールの割り当てを追加
役割はストレージBLOBデータ共同作成者
等必要な権限を選択し、IAMの割り当てを行うユーザを指定します。
3.CentOSにてazcopyを導入
まずはwgetにてazcopyをダウンロードします。
$ wget https://azcopyvnext.azureedge.net/release20200818/azcopy_linux_amd64_10.6.0.tar.gz
ダウンロードしたら解凍し、作成されたディレクトリへ移動します。
$ tar xvfx azcopy_linux_amd64_10.6.0.tar.gz
$ cd azcopy_linux_amd64_10.6.0
4.azcopyにてログインを実施
azcopyにてファイルをアップロードする前に、azcopyにてログインをする必要があります。
4-1.テナントIDの確認
azcopyでログインする際にテナントIDの入力が必要なので、テナントIDを確認します。
テナントIDはAzure ADから確認することが可能です。
4-2.azcopyにてログイン
以下の要領でCentOSからログインを実行します。
$ ./azcopy login --tenant-id "<テナントID>"
実行するとブラウザを開いて、指定のURLよりコードを入れるように求められるので、ブラウザを開いてコードを入れます。
ブラウザで指定のURLを入力すると以下の画面が出ますのでコードを入力します。
ログインが成功すると以下のようにsucceededと出力されます。
4.azcopyにてBLOBにアップロード
azcopyのcopyコマンドを使用してBlobへアップロードします。
$ ./azcopy copy "ローカルのファイル名" "https://<ストレージアカウント名>.blob.core.windows.net/<コンテナ名>"
また、複数のファイルをアップロードしたい場合には、*
などを指定することができます。
$ ./azcopy copy "ローカルのディレクトリ/*" "https://<ストレージアカウント名>.blob.core.windows.net/<コンテナ名>"
5.おまけ
アップロードが完了すればAzure Syanpase Analytics SQLプールにPolyBase等を使ってデータをロードすることが可能です。
方法は別の記事に乗せていますので、よろしければご参考までに。
PolyBaseでSynapse SQLプールにデータを投入してみた