dsub
adalah alat baris perintah yang memudahkan pengiriman dan menjalankan skrip batch di cloud.
Pengalaman pengguna dsub
dimodelkan setelah penjadwal pekerjaan komputasi berkinerja tinggi tradisional seperti Grid Engine dan Slurm. Anda menulis skrip dan kemudian mengirimkannya ke penjadwal pekerjaan dari prompt shell di mesin lokal Anda.
Saat ini dsub
mendukung Google Cloud sebagai pelari tugas batch backend, bersama dengan penyedia lokal untuk pengembangan dan pengujian. Dengan bantuan komunitas, kami ingin menambahkan backend lainnya, seperti Grid Engine, Slurm, Amazon Batch, dan Azure Batch.
dsub
ditulis dengan Python dan membutuhkan Python 3.7 atau lebih tinggi.
dsub
0.4.7.dsub
0.4.1.dsub
0.3.10.Ini opsional, tetapi baik menginstal dari PyPI atau dari github, Anda sangat dianjurkan untuk menggunakan lingkungan virtual Python.
Anda dapat melakukan ini di direktori pilihan Anda.
python3 -m venv dsub_libs
source dsub_libs/bin/activate
Menggunakan lingkungan virtual Python mengisolasi dependensi perpustakaan dsub
dari aplikasi Python lain di sistem Anda.
Aktifkan lingkungan virtual ini di sesi shell mana pun sebelum menjalankan dsub
. Untuk menonaktifkan lingkungan virtual di shell Anda, jalankan perintah:
deactivate
Sebagai alternatif, serangkaian skrip kemudahan disediakan yang mengaktifkan virutalenv sebelum memanggil dsub
, dstat
, dan ddel
. Mereka ada di direktori bin. Anda dapat menggunakan skrip ini jika Anda tidak ingin mengaktifkan virtualenv secara eksplisit di shell Anda.
Meskipun tidak digunakan secara langsung oleh dsub
untuk penyedia google-batch
atau google-cls-v2
, Anda mungkin ingin menginstal alat baris perintah yang terdapat di Google Cloud SDK.
Jika Anda akan menggunakan penyedia local
untuk pengembangan pekerjaan yang lebih cepat, Anda perlu menginstal Google Cloud SDK, yang menggunakan gsutil
untuk memastikan semantik operasi file konsisten dengan penyedia dsub
Google.
Instal Google Cloud SDK
Berlari
gcloud init
gcloud
akan meminta Anda menyetel proyek default dan memberikan kredensial ke Google Cloud SDK.
dsub
Pilih salah satu dari berikut ini:
Jika perlu, instal pip.
Instal dsub
pip install dsub
Pastikan Anda telah menginstal git
Petunjuk untuk lingkungan Anda dapat ditemukan di situs web git.
Kloning repositori ini.
git clone https://github.com/DataBiosphere/dsub
cd dsub
Instal dsub (ini juga akan menginstal dependensi)
python -m pip install .
Siapkan penyelesaian tab Bash (opsional).
source bash_tab_complete
Verifikasi instalasi secara minimal dengan menjalankan:
dsub --help
(Opsional) Instal Docker.
Ini diperlukan hanya jika Anda ingin membuat image Docker Anda sendiri atau menggunakan penyedia local
.
Setelah mengkloning repo dsub, Anda juga dapat menggunakan Makefile dengan menjalankan:
make
Ini akan membuat lingkungan virtual Python dan menginstal dsub
ke dalam direktori bernama dsub_libs
.
Kami pikir Anda akan menemukan penyedia local
sangat membantu saat membuat tugas dsub
Anda. Daripada mengirimkan permintaan untuk menjalankan perintah Anda di VM cloud, penyedia local
menjalankan tugas dsub
Anda di mesin lokal Anda.
Penyedia local
tidak dirancang untuk berjalan dalam skala besar. Ini dirancang untuk meniru berjalan di VM cloud sehingga Anda dapat melakukan iterasi dengan cepat. Anda akan mendapatkan waktu penyelesaian yang lebih cepat dan tidak akan dikenakan biaya cloud untuk menggunakannya.
Jalankan pekerjaan dsub
dan tunggu sampai selesai.
Berikut adalah tes "Halo Dunia" yang sangat sederhana:
dsub
--provider local
--logging "${TMPDIR:-/tmp}/dsub-test/logging/"
--output OUT="${TMPDIR:-/tmp}/dsub-test/output/out.txt"
--command 'echo "Hello World" > "${OUT}"'
--wait
Catatan: TMPDIR
biasanya diatur ke /tmp
secara default pada sebagian besar sistem Unix, meskipun sering kali tidak disetel. Pada beberapa versi MacOS TMPDIR diatur ke lokasi di bawah /var/folders
.
Catatan: Sintaks di atas ${TMPDIR:-/tmp}
diketahui didukung oleh Bash, zsh, ksh. Shell akan memperluas TMPDIR
, tetapi jika tidak disetel, /tmp
akan digunakan.
Lihat file keluaran.
cat "${TMPDIR:-/tmp}/dsub-test/output/out.txt"
dsub
saat ini mendukung Cloud Life Sciences v2beta API dari Google Cloud dan sedang mengembangkan dukungan untuk Batch API dari Google Cloud.
dsub
mendukung API v2beta dengan penyedia google-cls-v2
. google-cls-v2
adalah penyedia default saat ini. dsub
akan bertransisi untuk menjadikan google-batch
sebagai default di rilis mendatang.
Langkah-langkah untuk memulai sedikit berbeda seperti yang ditunjukkan pada langkah-langkah di bawah ini:
Daftar akun Google dan buat proyek.
Aktifkan API:
v2beta
(penyedia: google-cls-v2
):Aktifkan Cloud Life Sciences, Storage, dan Compute API
batch
(penyedia: google-batch
):Aktifkan API Batch, Penyimpanan, dan Komputasi.
Berikan kredensial agar dsub
dapat memanggil Google API:
gcloud auth application-default login
Buat keranjang Google Cloud Storage.
Log dsub dan file output akan ditulis ke bucket. Buat bucket menggunakan browser penyimpanan atau jalankan utilitas baris perintah gsutil, yang disertakan dalam Cloud SDK.
gsutil mb gs://my-bucket
Ubah my-bucket
menjadi nama unik yang mengikuti konvensi penamaan bucket.
(Secara default, keranjang akan berada di AS, namun Anda dapat mengubah atau menyempurnakan pengaturan lokasi dengan opsi -l
.)
Jalankan pekerjaan dsub
"Hello World" yang sangat sederhana dan tunggu sampai selesai.
Untuk API v2beta
(penyedia: google-cls-v2
):
dsub
--provider google-cls-v2
--project my-cloud-project
--regions us-central1
--logging gs://my-bucket/logging/
--output OUT=gs://my-bucket/output/out.txt
--command 'echo "Hello World" > "${OUT}"'
--wait
Ubah my-cloud-project
menjadi proyek Google Cloud Anda, dan my-bucket
menjadi bucket yang Anda buat di atas.
Untuk API batch
(penyedia: google-batch
):
dsub
--provider google-batch
--project my-cloud-project
--regions us-central1
--logging gs://my-bucket/logging/
--output OUT=gs://my-bucket/output/out.txt
--command 'echo "Hello World" > "${OUT}"'
--wait
Ubah my-cloud-project
menjadi proyek Google Cloud Anda, dan my-bucket
menjadi bucket yang Anda buat di atas.
Output dari perintah skrip akan ditulis ke file OUT
di Cloud Storage yang Anda tentukan.
Lihat file keluaran.
gsutil cat gs://my-bucket/output/out.txt
Jika memungkinkan, dsub
mencoba mendukung pengguna untuk dapat mengembangkan dan menguji secara lokal (untuk iterasi yang lebih cepat) dan kemudian melanjutkan untuk menjalankannya dalam skala besar.
Untuk tujuan ini, dsub
menyediakan beberapa "penyedia backend", yang masing-masing mengimplementasikan lingkungan runtime yang konsisten. Penyedia saat ini adalah:
Detail selengkapnya tentang lingkungan runtime yang diterapkan oleh penyedia backend dapat ditemukan di penyedia backend dsub.
google-cls-v2
dan google-batch
Penyedia google-cls-v2
dibangun di atas Cloud Life Sciences v2beta
API. API ini sangat mirip dengan pendahulunya, API Genomics v2alpha1
. Detail perbedaannya dapat ditemukan di Panduan Migrasi.
Penyedia google-batch
dibangun di atas Cloud Batch API. Detail Cloud Life Sciences versus Batch dapat ditemukan di Panduan Migrasi ini.
dsub
sebagian besar menyembunyikan perbedaan antar API, namun ada beberapa perbedaan yang perlu diperhatikan:
google-batch
membutuhkan pekerjaan untuk dijalankan di satu wilayah Tanda --regions
dan --zones
untuk dsub
menentukan di mana tugas harus dijalankan. google-cls-v2
memungkinkan Anda menentukan multi-wilayah seperti US
, beberapa wilayah, atau beberapa zona di seluruh wilayah. Dengan penyedia google-batch
, Anda harus menentukan satu wilayah atau beberapa zona dalam satu wilayah.
dsub
Bagian berikut memperlihatkan cara menjalankan pekerjaan yang lebih kompleks.
Anda dapat memberikan perintah shell langsung di baris perintah dsub, seperti pada contoh hello di atas.
Anda juga dapat menyimpan skrip Anda ke file, seperti hello.sh
. Kemudian Anda dapat menjalankan:
dsub
...
--script hello.sh
Jika skrip Anda memiliki dependensi yang tidak disimpan di image Docker, Anda dapat mentransfernya ke disk lokal. Lihat petunjuk di bawah untuk bekerja dengan file dan folder input dan output.
Untuk memulai dengan lebih mudah, dsub
menggunakan image Docker Ubuntu bawaan. Gambar default ini dapat berubah kapan saja dalam rilis mendatang, jadi untuk alur kerja produksi yang dapat direproduksi, Anda harus selalu menentukan gambar secara eksplisit.
Anda dapat mengubah gambar dengan meneruskan tanda --image
.
dsub
...
--image ubuntu:16.04
--script hello.sh
Catatan: --image
Anda harus menyertakan juru bahasa Bash shell.
Untuk informasi lebih lanjut tentang penggunaan flag --image
, lihat bagian image di Skrip, Perintah, dan Docker
Anda dapat meneruskan variabel lingkungan ke skrip Anda menggunakan tanda --env
.
dsub
...
--env MESSAGE=hello
--command 'echo ${MESSAGE}'
Variabel lingkungan MESSAGE
akan diberi nilai hello
saat container Docker Anda berjalan.
Skrip atau perintah Anda dapat mereferensikan variabel seperti variabel lingkungan Linux lainnya, seperti ${MESSAGE}
.
Pastikan untuk menyertakan string perintah Anda dalam tanda kutip tunggal dan bukan tanda kutip ganda. Jika Anda menggunakan tanda kutip ganda, perintah akan diperluas di shell lokal Anda sebelum diteruskan ke dsub. Untuk informasi selengkapnya tentang penggunaan flag --command
, lihat Skrip, Perintah, dan Docker
Untuk menyetel beberapa variabel lingkungan, Anda dapat mengulangi tandanya:
--env VAR1=value1
--env VAR2=value2
Anda juga dapat mengatur beberapa variabel, dibatasi spasi, dengan satu tanda:
--env VAR1=value1 VAR2=value2
dsub meniru perilaku sistem file bersama menggunakan jalur keranjang penyimpanan cloud untuk file dan folder input dan output. Anda menentukan jalur keranjang penyimpanan cloud. Jalur dapat berupa:
gs://my-bucket/my-file
gs://my-bucket/my-folder
gs://my-bucket/my-folder/*
Lihat dokumentasi input dan output untuk lebih jelasnya.
Jika skrip Anda mengharapkan untuk membaca file input lokal yang belum terdapat dalam image Docker Anda, file tersebut harus tersedia di Google Cloud Storage.
Jika skrip Anda memiliki file yang bergantung, Anda dapat membuatnya tersedia untuk skrip Anda dengan:
Untuk mengupload file ke Google Cloud Storage, Anda dapat menggunakan browser penyimpanan atau gsutil. Anda juga dapat menjalankan data yang bersifat publik atau dibagikan dengan akun layanan Anda, alamat email yang dapat Anda temukan di Google Cloud Console.
Untuk menentukan file masukan dan keluaran, gunakan tanda --input
dan --output
:
dsub
...
--input INPUT_FILE_1=gs://my-bucket/my-input-file-1
--input INPUT_FILE_2=gs://my-bucket/my-input-file-2
--output OUTPUT_FILE=gs://my-bucket/my-output-file
--command 'cat "${INPUT_FILE_1}" "${INPUT_FILE_2}" > "${OUTPUT_FILE}"'
Dalam contoh ini:
gs://my-bucket/my-input-file-1
ke jalur di disk data${INPUT_FILE_1}
gs://my-bucket/my-input-file-2
ke jalur di disk data${INPUT_FILE_2}
--command
dapat mereferensikan jalur file menggunakan variabel lingkungan.
Juga dalam contoh ini:
${OUTPUT_FILE}
${OUTPUT_FILE}
Setelah --command
selesai, file output akan disalin ke jalur bucket gs://my-bucket/my-output-file
Beberapa parameter --input
, dan --output
dapat ditentukan dan dapat ditentukan dalam urutan apa pun.
Untuk menyalin folder, bukan file, gunakan tanda --input-recursive
dan output-recursive
:
dsub
...
--input-recursive FOLDER=gs://my-bucket/my-folder
--command 'find ${FOLDER} -name "foo*"'
Beberapa parameter --input-recursive
, dan --output-recursive
dapat ditentukan dan dapat ditentukan dalam urutan apa pun.
Meskipun menentukan input secara eksplisit akan meningkatkan pelacakan asal data Anda, ada kalanya Anda mungkin tidak ingin secara jelas melokalkan semua input dari Cloud Storage ke VM tugas Anda.
Misalnya, jika Anda memiliki:
ATAU
ATAU
maka Anda mungkin merasa lebih efisien atau nyaman mengakses data ini dengan memasang read-only:
Penyedia google-cls-v2
dan google-batch
mendukung metode penyediaan akses ke data sumber daya ini.
Penyedia local
mendukung pemasangan direktori lokal dengan cara yang sama untuk mendukung pengembangan lokal Anda.
Agar penyedia google-cls-v2
atau google-batch
memasang bucket Cloud Storage menggunakan Cloud Storage FUSE, gunakan tanda baris perintah --mount
:
--mount RESOURCES=gs://mybucket
Bucket akan dipasang hanya-baca ke dalam wadah Docker yang menjalankan --script
atau --command
Anda dan lokasinya tersedia melalui variabel lingkungan ${RESOURCES}
. Di dalam skrip Anda, Anda dapat mereferensikan jalur yang dipasang menggunakan variabel lingkungan. Harap baca Perbedaan utama dari sistem file POSIX dan Semantik sebelum menggunakan Cloud Storage FUSE.
Agar penyedia google-cls-v2
atau google-batch
memasang disk persisten yang telah Anda buat dan isi sebelumnya, gunakan tanda baris perintah --mount
dan url disk sumber:
--mount RESOURCES="https://www.googleapis.com/compute/v1/projects/your-project/zones/your_disk_zone/disks/your-disk"
Agar penyedia google-cls-v2
atau google-batch
memasang disk persisten yang dibuat dari gambar, gunakan tanda baris perintah --mount
dan url gambar sumber serta ukuran (dalam GB) disk:
--mount RESOURCES="https://www.googleapis.com/compute/v1/projects/your-project/global/images/your-image 50"
Gambar tersebut akan digunakan untuk membuat persisten disk baru, yang akan dilampirkan ke VM Compute Engine. Disk akan dipasang ke wadah Docker yang menjalankan --script
atau --command
Anda dan lokasinya disediakan oleh variabel lingkungan ${RESOURCES}
. Di dalam skrip Anda, Anda dapat mereferensikan jalur yang dipasang menggunakan variabel lingkungan.
Untuk membuat gambar, lihat Membuat gambar kustom.
local
) Agar penyedia local
memasang direktori hanya-baca, gunakan tanda baris perintah --mount
dan awalan file://
:
--mount RESOURCES=file://path/to/my/dir
Direktori lokal akan dipasang ke dalam wadah Docker yang menjalankan --script
atau --command
Anda dan lokasinya tersedia melalui variabel lingkungan ${RESOURCES}
. Di dalam skrip Anda, Anda dapat mereferensikan jalur yang dipasang menggunakan variabel lingkungan.
tugas dsub
yang dijalankan menggunakan penyedia local
akan menggunakan sumber daya yang tersedia di mesin lokal Anda.
tugas dsub
yang dijalankan menggunakan penyedia google-cls-v2
atau google-batch
dapat memanfaatkan beragam opsi CPU, RAM, disk, dan akselerator perangkat keras (mis. GPU).
Lihat dokumentasi Sumber Daya Komputasi untuk mengetahui detailnya.
Secara default, dsub
menghasilkan job-id
dengan bentuk job-name--userid--timestamp
yang mana job-name
dipotong menjadi 10 karakter dan timestamp
berbentuk YYMMDD-HHMMSS-XX
, unik untuk seperseratus detik . Jika Anda mengirimkan beberapa pekerjaan secara bersamaan, Anda mungkin masih mengalami situasi di mana job-id
tidak unik. Jika Anda memerlukan job-id
unik untuk situasi ini, Anda dapat menggunakan parameter --unique-job-id
.
Jika parameter --unique-job-id
disetel, job-id
akan berupa UUID unik 32 karakter yang dibuat oleh https://docs.python.org/3/library/uuid.html. Karena beberapa penyedia mengharuskan job-id
dimulai dengan huruf, dsub
akan mengganti digit awal dengan huruf dengan cara yang menjaga keunikan.
Masing-masing contoh di atas telah menunjukkan penyerahan satu tugas dengan satu set variabel, masukan, dan keluaran. Jika Anda memiliki sekumpulan input dan ingin menjalankan operasi yang sama pada input tersebut, dsub
memungkinkan Anda membuat pekerjaan batch.
Daripada memanggil dsub
berulang kali, Anda bisa membuat file nilai yang dipisahkan tab (TSV) yang berisi variabel, input, dan output untuk setiap tugas, lalu memanggil dsub
satu kali. Hasilnya akan menjadi satu job-id
dengan banyak tugas. Tugas akan dijadwalkan dan dijalankan secara independen, namun dapat dipantau dan dihapus sebagai grup.
Baris pertama file TSV menentukan nama dan jenis parameter. Misalnya:
--env SAMPLE_ID<tab>--input VCF_FILE<tab>--output OUTPUT_PATH
Setiap baris tambahan dalam file harus menyediakan nilai variabel, input, dan output untuk setiap tugas. Setiap baris di luar header mewakili nilai untuk tugas terpisah.
Beberapa parameter --env
, --input
, dan --output
dapat ditentukan dan dapat ditentukan dalam urutan apa pun. Misalnya:
--env SAMPLE<tab>--input A<tab>--input B<tab>--env REFNAME<tab>--output O
S1<tab>gs://path/A1.txt<tab>gs://path/B1.txt<tab>R1<tab>gs://path/O1.txt
S2<tab>gs://path/A2.txt<tab>gs://path/B2.txt<tab>R2<tab>gs://path/O2.txt
Teruskan file TSV ke dsub menggunakan parameter --tasks
. Parameter ini menerima jalur file dan secara opsional serangkaian tugas untuk diproses. File dapat dibaca dari sistem file lokal (di mesin tempat Anda memanggil dsub
), atau dari bucket di Google Cloud Storage (nama file dimulai dengan "gs://").
Misalnya, my-tasks.tsv
berisi 101 baris: header satu baris dan 100 baris parameter untuk menjalankan tugas. Kemudian:
dsub ... --tasks ./my-tasks.tsv
akan menciptakan pekerjaan dengan 100 tugas, sedangkan:
dsub ... --tasks ./my-tasks.tsv 1-10
akan membuat pekerjaan dengan 10 tugas, satu untuk masing-masing baris 2 hingga 11.
Nilai rentang tugas dapat berupa salah satu bentuk berikut:
m
menunjukkan untuk menyerahkan tugas m
(baris m+1)m-
menunjukkan untuk menyerahkan semua tugas dimulai dengan tugas m
mn
menunjukkan untuk menyerahkan semua tugas dari m
hingga n
(inklusif). Bendera --logging
menunjuk ke lokasi untuk file log tugas dsub
. Untuk detail tentang cara menentukan jalur logging Anda, lihat Logging.
Mungkin saja menunggu suatu pekerjaan selesai sebelum memulai pekerjaan lain. Untuk detailnya, lihat kontrol pekerjaan dengan dsub.
dsub
dapat secara otomatis mencoba kembali tugas yang gagal. Untuk detailnya, lihat percobaan ulang dengan dsub.
Anda dapat menambahkan label khusus ke pekerjaan dan tugas, yang memungkinkan Anda memantau dan membatalkan tugas menggunakan pengidentifikasi Anda sendiri. Selain itu, pada penyedia Google, pelabelan tugas akan memberi label pada sumber daya komputasi terkait seperti mesin virtual dan disk.
Untuk lebih jelasnya, lihat Memeriksa Status dan Mengatasi Masalah Pekerjaan
Perintah dstat
menampilkan status pekerjaan:
dstat --provider google-cls-v2 --project my-cloud-project
Tanpa argumen tambahan, dstat akan menampilkan daftar pekerjaan yang berjalan untuk USER
saat ini.
Untuk menampilkan status pekerjaan tertentu, gunakan tanda --jobs
:
dstat --provider google-cls-v2 --project my-cloud-project --jobs job-id
Untuk pekerjaan batch, outputnya akan mencantumkan semua tugas yang berjalan .
Setiap pekerjaan yang dikirimkan oleh dsub diberikan serangkaian nilai metadata yang dapat digunakan untuk identifikasi pekerjaan dan kontrol pekerjaan. Metadata yang terkait dengan setiap pekerjaan meliputi:
job-name
: defaultnya adalah nama file skrip Anda atau kata pertama dari perintah skrip Anda; itu dapat diatur secara eksplisit dengan parameter --name
.user-id
: nilai variabel lingkungan USER
.job-id
: pengidentifikasi pekerjaan, yang dapat digunakan dalam panggilan ke dstat
dan ddel
untuk masing-masing memantau dan membatalkan pekerjaan. Lihat Pengidentifikasi Pekerjaan untuk detail selengkapnya tentang format job-id
.task-id
: jika pekerjaan dikirimkan dengan parameter --tasks
, setiap tugas mendapat nilai berurutan dalam bentuk "task -n " di mana n berbasis 1.Perhatikan bahwa nilai metadata pekerjaan akan diubah agar sesuai dengan "Batasan Label" yang tercantum dalam panduan Memeriksa Status dan Pemecahan Masalah Pekerjaan.
Metadata dapat digunakan untuk membatalkan pekerjaan atau tugas individual dalam pekerjaan batch.
Untuk lebih jelasnya, lihat Memeriksa Status dan Mengatasi Masalah Pekerjaan
Secara default, dstat mengeluarkan satu baris per tugas. Jika Anda menggunakan pekerjaan batch dengan banyak tugas maka Anda bisa mendapatkan keuntungan dari --summary
.
$ dstat --provider google-cls-v2 --project my-project --status '*' --summary
Job Name Status Task Count
------------- ------------- -------------
my-job-name RUNNING 2
my-job-name SUCCESS 1
Dalam mode ini, dstat mencetak satu baris per pasangan (nama pekerjaan, status tugas). Anda bisa melihat sekilas berapa banyak tugas yang selesai, berapa banyak yang masih berjalan, dan berapa banyak yang gagal/dibatalkan.
Perintah ddel
akan menghapus pekerjaan yang sedang berjalan.
Secara default, hanya pekerjaan yang dikirimkan oleh pengguna saat ini yang akan dihapus. Gunakan tanda --users
untuk menentukan pengguna lain, atau '*'
untuk semua pengguna.
Untuk menghapus pekerjaan yang sedang berjalan:
ddel --provider google-cls-v2 --project my-cloud-project --jobs job-id
Jika pekerjaan tersebut merupakan pekerjaan batch, semua tugas yang berjalan akan dihapus.
Untuk menghapus tugas tertentu:
ddel
--provider google-cls-v2
--project my-cloud-project
--jobs job-id
--tasks task-id1 task-id2
Untuk menghapus semua pekerjaan yang berjalan untuk pengguna saat ini:
ddel --provider google-cls-v2 --project my-cloud-project --jobs '*'
Saat Anda menjalankan perintah dsub
dengan penyedia google-cls-v2
atau google-batch
, ada dua kumpulan kredensial berbeda yang perlu dipertimbangkan:
pipelines.run()
untuk menjalankan perintah/skrip Anda di VM Akun yang digunakan untuk mengirimkan permintaan pipelines.run()
biasanya adalah kredensial pengguna akhir Anda. Anda akan mengaturnya dengan menjalankan:
gcloud auth application-default login
Akun yang digunakan pada VM adalah akun layanan. Gambar di bawah menggambarkan hal ini:
Secara default, dsub
akan menggunakan akun layanan Compute Engine default sebagai akun layanan resmi pada instance VM. Anda dapat memilih untuk menentukan alamat email akun layanan lain menggunakan --service-account
.
Secara default, dsub
akan memberikan cakupan akses berikut ke akun layanan:
Selain itu, API akan selalu menambahkan cakupan ini:
Anda dapat memilih untuk menentukan cakupan menggunakan --scopes
.
Meskipun mudah untuk menggunakan akun layanan default, akun ini juga memiliki hak istimewa luas yang diberikan kepadanya secara default. Mengikuti Prinsip Hak Istimewa Terkecil Anda mungkin ingin membuat dan menggunakan akun layanan yang hanya memiliki hak istimewa yang cukup untuk menjalankan perintah/skrip dsub
Anda.
Untuk membuat akun layanan baru, ikuti langkah-langkah di bawah ini:
Jalankan perintah gcloud iam service-accounts create
. Alamat email akun layanan adalah [email protected]
.
gcloud iam service-accounts create "sa-name"
Berikan akses IAM pada bucket, dll. ke akun layanan.
gsutil iam ch serviceAccount:[email protected]:roles/storage.objectAdmin gs://bucket-name
Perbarui perintah dsub
Anda untuk menyertakan --service-account
dsub
--service-account [email protected]
...
Lihat contohnya:
Lihat dokumentasi lainnya untuk: