Saya masuk ke instance GCE melalui SSH. Dari sana saya ingin mengakses Penyimpanan dengan bantuan Akun Layanan:
GCE> gcloud auth list
Credentialed accounts:
- [email protected] (active)
Pertama-tama, saya memastikan bahwa akun Layanan ini ditandai "Dapat mengedit" pada izin proyek yang saya kerjakan. Saya juga memastikan untuk memberinya ACL Tulis di keranjang. Saya ingin dia menyalin file:
local> gsutil acl ch -u [email protected]:W gs://mybucket
Tapi kemudian perintah berikut gagal:
GCE> gsutil cp test.txt gs://mybucket/logs
(Saya juga memastikan bahwa "logs" dibuat di bawah "mybucket").
Pesan kesalahan yang saya dapatkan adalah:
Copying file://test.txt [Content-Type=text/plain]...
AccessDeniedException: 403 Insufficient Permission 0 B
Apa yang saya lewatkan?
google-cloud-storage
Christophe
sumber
sumber
Jawaban:
Satu hal lain yang harus diperhatikan adalah memastikan Anda menyiapkan cakupan yang sesuai saat membuat VM GCE. Meskipun VM memiliki akun layanan yang terpasang, VM tersebut harus diberi cakupan devstorage untuk mengakses GCS.
Misalnya, jika Anda telah membuat VM dengan
devstorage.read_only
scope, mencoba menulis ke bucket akan gagal, meskipun akun layanan Anda memiliki izin untuk menulis ke bucket. Anda akan membutuhkandevstorage.full_control
ataudevstorage.read_write
.Lihat bagian tentang Mempersiapkan instance untuk menggunakan akun layanan untuk mengetahui detailnya.
Catatan: akun layanan komputasi default memiliki cakupan yang sangat terbatas (termasuk memiliki hanya baca ke GCS). Ini dilakukan karena akun layanan default memiliki izin IAM Editor Proyek. Jika Anda menggunakan akun layanan pengguna, ini biasanya bukan masalah karena akun layanan yang dibuat pengguna mendapatkan semua akses cakupan secara default.
Setelah menambahkan cakupan yang diperlukan ke VM,
gsutil
mungkin masih menggunakan kredensial yang disimpan dalam cache yang tidak memiliki cakupan baru. Hapus~/.gsutil
sebelum mencoba perintah gsutil lagi. (Terima kasih kepada @mndrix karena menunjukkan hal ini di komentar.)sumber
gsutil
mungkin masih menggunakan kredensial yang disimpan dalam cache yang tidak memiliki cakupan baru. Hapus ~ / .gsutil sebelum mencobagsutil
perintah lagi.Anda harus masuk dengan akun yang memiliki izin yang Anda perlukan untuk proyek itu:
sumber
gcloud auth revoke <email-account>
setelah Anda selesai.gsutil config -b
Kemudian jelajahi URL yang disediakannya, [KLIK Izinkan]
Kemudian salin kode verifikasi dan tempel ke terminal.
sumber
gsutil
darissh
.-b
. Itu tidak akan membuka browser, tetapi hanya akan mengeluarkan url yang dapat dibuka di luar shell.sumber
Saya telah menulis jawaban untuk pertanyaan ini karena saya tidak dapat mengirim komentar:
Kesalahan ini juga dapat terjadi jika Anda menjalankan
gsutil
perintah dengansudo
awalan dalam beberapa kasus.sumber
gcloud auth login
dan ikuti langkah-langkahnya.Ref: https://groups.google.com/d/msg/gce-discussion/0L6sLRjX8kg/kP47FklzBgAJ
sumber
Jadi saya mencoba banyak hal yang mencoba menyalin dari ember GCS ke VM saya. Semoga posting ini membantu seseorang.
Melalui koneksi SSHed:
dan mengikuti skrip ini:
Punya kesalahan ini:
Yang memperbaikinya adalah mengikuti bagian "Mengaktifkan API" yang disebutkan di tautan ini - https://cloud.google.com/storage/docs/json_api/
Setelah saya mengaktifkan API, saya mengotentikasi diri saya di jendela SSHed melalui
Mengikuti prosedur otentikasi, saya akhirnya dapat mengunduh dari Google Storage Bucket ke VM saya.
PS
Saya memang memastikan untuk:
Buka keranjang saya, buka tab izin dan tambahkan akun layanan yang diinginkan dan setel izin / peran Admin Penyimpanan.
3. Pastikan VM saya memiliki cakupan akses Cloud API yang tepat:
sumber
Dari dokumen: https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes
Anda harus menghentikan instance terlebih dahulu -> buka halaman edit -> buka "cakupan akses Cloud API" dan pilih "penyimpanan akses penuh atau baca / tulis atau apa pun yang Anda butuhkan"
sumber
Ubah izin bucket.
Tambahkan pengguna untuk "Semua Pengguna" dan berikan akses "Admin Penyimpanan".
sumber