자습서: 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로 바꿉니다. 템플릿화된 세 값(<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'
참고 항목
토큰이 아직 없는 경우 인증 토큰을 생성하는 방법의 지침에 따라 토큰을 가져옵니다.
다음 환경 변수를 내보내거나 설정합니다.
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이 웹 브라우저에서 로그인 페이지를 엽니다.
python sdutil auth login
성공적으로 로그인하면 자격 증명이 1주일 동안 유효합니다. 자격 증명이 만료되지 않는 한 다시 로그인할 필요가 없습니다.
참고 항목
로그인 성공에 대한 메시지가 표시되지 않는 경우 세 가지 환경 변수가 설정되어 있고 이 자습서의 앞부분에 있는 구성 섹션의 모든 단계를 수행했는지 확인합니다.
Seismic Store 리소스
시스템 사용을 시작하기 전에 Seismic Store에서 리소스를 관리하는 방법을 이해하는 것이 중요합니다. Seismic Store는 세 가지 유형의 리소스를 관리합니다.
- 테넌트 프로젝트: 기본 프로젝트입니다. 테넌트는 Seismic Store 경로의 첫 번째 섹션입니다.
- 하위 프로젝트: 기본 테넌트 프로젝트 아래에 직접 연결된 작업 하위 프로젝트입니다. 하위 프로젝트는 Seismic Store 경로의 두 번째 섹션입니다.
- 데이터 세트: 데이터 세트 엔터티입니다. 데이터 세트는 Seismic Store 경로의 세 번째이자 마지막 섹션입니다.
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
하위 프로젝트
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 저장소는 하위 프로젝트 수준에서 범위가 지정된 두 가지 역할을 지원합니다.
- Admin: 읽기/쓰기 액세스 및 사용자 관리
- Viewer: 읽기/나열 액세스
하위 프로젝트 관리자만 다음 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용으로 작성된 적분/단위 및 회귀/e2e 테스트 세트가 포함되어 있습니다. 이러한 테스트를 실행하여 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)
FAQ
도구에 대한 새 명령을 생성하려면 어떻게 해야 하나요?
명령 생성 스크립트(./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 인스턴스는 sdutil의 OSDU® M12 버전을 사용합니다. sdutil을 사용하여 Azure Data Manager for Energy 인스턴스의 SDMS(Scientific Data Management System) API를 활용하려면 다음 단계를 완료합니다.
이전 설치 및 구성 단계를 수행했는지 확인합니다. 이러한 단계에는 sdutil 소스 코드 다운로드, Python 가상 환경 구성,
config.yaml
파일 편집, 세 가지 환경 변수 설정이 포함됩니다.다음 명령을 실행하여 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
참고 항목
cp
명령을 사용하여 VDS 파일을 다운로드하지 마세요. VDS 변환 결과 여러 파일이 생성되므로cp
명령은 하나의 명령으로 모든 파일을 다운로드할 수 없습니다. 대신 SEGYExport 또는 VDSCopy 도구를 사용합니다. 이러한 도구는 명명 체계에 액세스하는 일련의 REST 호출을 사용하여 모든 결과 VDS 파일에 대한 정보를 검색합니다.
OSDU®는 The Open Group의 상표입니다.
다음 단계
다음 자습서를 진행합니다.