チュートリアル: sdutil を使用して Seismic Store にデータを読み込む
Seismic Store は、任意のサイズのデータセットを格納および管理するためのクラウドベースのソリューションです。 そこでは、スコープを使った認可メカニズムによって、データセットにアクセスするための安全な方法が提供されます。 Seismic Store は、汎用データセットを複数の独立したオブジェクトとして管理して、クラウド プロバイダーのオブジェクト サイズの制限を克服します。
Sdutil は、Seismic Store を操作するためのコマンド ライン Python ツールです。 sdutil を使うと、Seismic Store へのデータのアップロード、Seismic Store からのデータセットのダウンロード、ユーザーの管理、フォルダーの内容の一覧表示などの基本的な操作を実行できます。
このチュートリアルでは、次の作業を行う方法について説明します。
- sdutil ツールを設定して実行する。
- Seismic Store の URI を取得する。
- サブプロジェクトを作成する。
- ユーザーを登録します。
- sdutil を使って Seismic Store でデータセットを管理する。
- テストを実行して sdutil ツールの機能を検証する。
前提条件
お使いのオペレーティング システムに基づいて、次の前提条件をインストールします。
Windows:
Linux:
Unix/Mac
sdutil には、requirements.txt
で示されている他のモジュールが必要です。 モジュールをそのままインストールすることも、仮想環境にインストールして、ホストをパッケージの競合からクリーンに保つこともできます。 仮想環境にインストールしない場合は、次のコードの 4 つの仮想環境コマンドをスキップしてください。 さらに、Ubuntu または WSL - Ubuntu 20.04 ではなく Mac をお使いの場合は、パッケージ マネージャーとして apt-get
ではなく homebrew
を使うか、手動で apt-get
をインストールします。
# Check if virtualenv is already installed
virtualenv --version
# If not, install it via pip or apt-get
pip install virtualenv
# or sudo apt-get install python3-venv for WSL
# Create a virtual environment for sdutil
virtualenv sdutilenv
# or python3 -m venv sdutilenv for WSL
# Activate the virtual environment
Windows: sdutilenv/Scripts/activate
Linux: source sdutilenv/bin/activate
必要な依存関係をインストールします。
# Run this from the extracted sdutil folder
pip install -r requirements.txt
使用方法
構成
コミュニティの
azure-stable
ブランチから sdutil リポジトリをクローンして、任意のエディターで開きます。sdlib
フォルダー内のconfig.yaml
の内容を、次の YAML に置き換えます。 3 つのテンプレート化された値 (<meds-instance-url>
の 2 つのインスタンスと<put refresh token here...>
の 1 つのインスタンス) を入力します。seistore: service: '{"azure": {"azureGlabEnv":{"url": "https://<meds-instance-url>/seistore-svc/api/v3", "appkey": ""}}}' url: 'https://<meds-instance-url>/seistore-svc/api/v3' cloud_provider: 'azure' env: 'glab' auth-mode: 'JWT Token' ssl_verify: False auth_provider: azure: '{ "provider": "azure", "authorize_url": "https://login.microsoftonline.com/", "oauth_token_host_end": "/oauth2/token", "scope_end":"/.default openid profile offline_access", "redirect_uri":"http://localhost:8080", "login_grant_type": "refresh_token", "refresh_token": "<put refresh token here from auth_token.http authorize request>" }' azure: empty: 'none'
Note
トークンがまだない場合は、認証トークンの生成方法に関する記事の手順に従って取得します。
次の環境変数をエクスポートまたは設定します。
export AZURE_TENANT_ID=<your-tenant-id> export AZURE_CLIENT_ID=<your-client-id> export AZURE_CLIENT_SECRET=<your-client-secret>
ツールの実行
抽出されたユーティリティ フォルダーから sdutil ツールを実行します。
python sdutil
引数を指定しないと、次のメニューが表示されます。
Seismic Store Utility > python sdutil [command] available commands: * auth : authentication utilities * unlock : remove a lock on a seismic store dataset * version : print the sdutil version * rm : delete a subproject or a space separated list of datasets * mv : move a dataset in seismic store * config : manage the utility configuration * mk : create a subproject resource * cp : copy data to(upload)/from(download)/in(copy) seismic store * stat : print information like size, creation date, legal tag(admin) for a space separated list of tenants, subprojects or datasets * patch : patch a seismic store subproject or dataset * app : application authorization utilities * ls : list subprojects and datasets * user : user authorization utilities
このツールを初めて使う場合は、
sdutil config init
コマンドを実行して構成を初期化します。python sdutil config init
ツールを使って操作の実行を始める前に、システムにサインインする必要があります。 次のコマンドを実行すると、sdutil によって Web ブラウザーにサインイン ページが開かれます。
python sdutil auth login
正常にサインインした後、資格情報は 1 週間有効になります。 資格情報の有効期限が切れない限り、もう一度サインインする必要はありません。
Note
サインインが成功したことを示すメッセージが表示されない場合は、3 つの環境変数が設定されていることと、このチュートリアルで前に出てきた「構成」セクションのすべての手順を行ったことを確認してください。
Seismic Store のリソース
システムを使い始める前に、Seismic Store によるリソースの管理方法を理解しておくことが重要です。 Seismic Store では、次の 3 種類のリソースが管理されます。
- テナント プロジェクト: メイン プロジェクト。 テナントは、Seismic Store のパスの最初のセクションです
- サブプロジェクト: 作業サブプロジェクト。メイン テナント プロジェクトの下に直接リンクされています。 サブプロジェクトは、Seismic Store のパスの 2 番目のセクションです。
- データセット: データセット エンティティ。 データセットは、Seismic Store のパスの 3 番目で最後のセクションです。
path/dataset_name
という形式を使って、データセット リソースを指定できます。 その形式で、path
は省略可能であり、汎用ファイル システムのディレクトリと同じ意味を持ちます。dataset_name
の部分は、データセット エンティティの名前です。
Seismic Store の URI は文字列であり、それを使ってシステム内のリソースを一意にアドレス指定します。 これを取得するには、必要なリソース パスにプレフィックス sd://
を追加します。
sd://<tenant>/<subproject>/<path>*/<dataset>
たとえば、gtc
テナント プロジェクトの下の carbon
サブプロジェクト内の qadata/ustest
ディレクトリ構造に results.segy
データセットが格納されている場合、対応する sdpath
のコードは次のようになります。
sd://gtc/carbon/qadata/ustest/results.segy
対応する sdpath
セクションを使用して、すべてのリソースをアドレス指定できます
Tenant: sd://gtc
Subproject: sd://gtc/carbon
Dataset: sd://gtc/carbon/qadata/ustest/results.segy
Subprojects
Seismic Store のサブプロジェクトは、ユーザーがデータセットを保存できる作業単位です。 システムは、テナント プロジェクトの下で複数のサブプロジェクトを処理できます。
次の sdutil コマンドを使ってサブプロジェクト リソースを作成できるのは、テナント管理者だけです。
> python sdutil mk *sdpath *admin@email *legaltag (options)
create a new subproject resource in Seismic Store. user can interactively
set the storage class for the subproject. only tenant admins are allowed to create subprojects.
*sdpath : the seismic store subproject path. sd://<tenant>/<subproject>
*admin@email : the email of the user to be set as the subproject admin
*legaltag : the default legal tag for the created subproject
(options) | --idtoken=<token> pass the credential token to use, rather than generating a new one
[ユーザー管理]
Seismic Store を使用できるようにするには、アクセス レベルが定義されているロールを使って、少なくともサブプロジェクト リソースにユーザーを登録する必要があります。 Seismic Store では、サブプロジェクト レベルでスコープ指定された 2 つのロールがサポートされています。
- 管理者: 読み取り/書き込みアクセスとユーザー管理。
- 閲覧者: 読み取り/一覧表示アクセス。
次の sdutil コマンドを使ってユーザーを登録できるのは、サブプロジェクト管理者だけです。
> python sdutil user [ *add | *list | *remove | *roles ] (options)
*add $ python sdutil user add [user@email] [sdpath] [role]*
add a user to a subproject resource
[user@email] : email of the user to add
[sdpath] : seismic store subproject path, sd://<tenant>/<subproject>
[role] : user role [admin|viewer]
使用例
次のコードは、sdutil を使って Seismic Store でデータセットを管理する方法の例です。 この例では、サブプロジェクト リソースとして sd://gtc/carbon
を使っています。
# Create a new file
echo "My Test Data" > data1.txt
# Upload the created file to Seismic Store
./sdutil cp data1.txt sd://gtc/carbon/test/mydata/data.txt
# List the contents of the Seismic Store subproject
./sdutil ls sd://gtc/carbon/test/mydata/ (display: data.txt)
./sdutil ls sd://gtc (display: carbon)
./sdutil ls sd://gtc/carbon (display: test/)
./sdutil ls sd://gtc/carbon/test (display: data/)
# Download the file from Seismic Store
./sdutil cp sd://gtc/carbon/test/mydata/data.txt data2.txt
# Check if the original file matches the one downloaded from Seismic Store
diff data1.txt data2.txt
ツールのテスト
テスト フォルダーには、pytest 用に記述された統合/ユニット テストと回帰テストのセットが含まれています。 これらのテストを実行して、sdutil ツールの機能を検証します。
要件には、次のコードを使います。
# Install required dependencies
pip install -r test/e2e/requirements.txt
統合/ユニット テストには、次のコードを使います。
# Run integral/unit test
./devops/scripts/run_unit_tests.sh
# Test execution parameters
--mnt-volume = sdapi root dir (default=".")
回帰テストには、次のコードを使います。
# Run regression test
./devops/scripts/run_regression_tests.sh --cloud-provider= --service-url= --service-key= --idtoken= --tenant= --subproject=
# Test execution parameters
--mnt-volume = sdapi root dir (default=".")
--disable-ssl-verify (to disable ssl verification)
よく寄せられる質問
ツール用の新しいコマンドを生成するには、どうすればよいですか?
コマンド生成スクリプト (./command_gen.py
) を実行して、sdutil ツールに新しいコマンドを統合するための基本インフラストラクチャを自動的に生成します。 このスクリプトでは、sdlib/cmd/new_command_name
内のコマンド インフラストラクチャを使ってフォルダーが作成されます。
./scripts/command_gen.py new_command_name
ディレクトリ内のすべてのファイルを削除するにはどうすればよいですか?
次のコードを使用します。
./sdutil ls -lr sd://tenant/subproject/your/folder/here | xargs -r ./sdutil rm --idtoken=x.xxx.x
ツールの変更ログを生成するにはどうすればよいですか?
変更ログ スクリプト (./changelog-generator.sh
) を実行して、ツールの変更ログを自動的に生成します。
./scripts/changelog-generator.sh
Azure Data Manager for Energy の使用状況
Azure Data Manager for Energy インスタンスでは、OSDU® M12 バージョンの sdutil が使われています。 sdutil を使って Azure Data Manager for Energy インスタンスの Scientific Data Management System (SDMS) API を利用する場合は、次の手順のようにします。
前のインストールと構成のステップのようにしていることを確認します。 これらの手順には、sdutil のソース コードのダウンロード、Python 仮想環境の構成、
config.yaml
ファイルの編集、3 つの環境変数の設定が含まれます。Seismic Store でタスクを行うには、次のコマンドを実行します。
初期化する:
(sdutilenv) > python sdutil config init [one] Azure Select the cloud provider: **enter 1** Insert the Azure (azureGlabEnv) application key: **just press enter--no need to provide a key** sdutil successfully configured to use Azure (azureGlabEnv) Should display sign in success message. Credentials expiry set to 1 hour.
サインインします。
python sdutil config init python sdutil auth login
Seismic Store のファイルの一覧を表示する:
python sdutil ls sd://<tenant> # For example, sd://<instance-name>-<datapartition> python sdutil ls sd://<tenant>/<subproject> # For example, sd://<instance-name>-<datapartition>/test
ローカル コンピューターから Seismic Store にファイルをアップロードする:
python sdutil cp local-dir/file-name-at-source.txt sd://<datapartition>/test/file-name-at-destination.txt
Seismic Store からローカル コンピューターにファイルをダウンロードする:
python sdutil cp sd://<datapartition>/test/file-name-at-ddms.txt local-dir/file-name-at-destination.txt
Note
VDS ファイルのダウンロードには、
cp
コマンドを使わないでください。 VDS 変換では複数のファイルが作成され、cp
コマンドでは、それらのすべてを 1 つのコマンドでダウンロードできません。 代わりに SEGYExport または VDSCopy ツールを使用してください。 これらのツールでは、名前付けスキームにアクセスして、結果のすべての VDS ファイルに関する情報を取得する、一連の REST 呼び出しが使われます。
OSDU® は The Open Group の商標です。
次のステップ
次のチュートリアルに進みます。