GitHub | Panduan Developer OSS Go SDK V2 | API OSS SDK untuk Go
Panduan Cepat
Persiapan lingkungan
Diperlukan Go 1.18 atau versi yang lebih baru.
Gunakan perintah go -version untuk memeriksa versi Go Anda. Jika Go belum terinstal atau versi Anda lebih lama dari 1.18, instal Golang.
Instal SDK
-
Buat direktori proyek dan inisialisasi modul Go.
mkdir oss-go-example && cd oss-go-example && go mod init oss-go-example -
Jalankan perintah berikut untuk mendapatkan paket. Kami merekomendasikan versi terbaru agar contoh kode berfungsi dengan benar.
go get github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss -
Impor paket SDK.
import "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
Konfigurasi kredensial akses
Gunakan AccessKey Pengguna RAM untuk mengonfigurasi kredensial akses.
-
Di Konsol RAM, buat pengguna RAM dengan Access By Using Permanent AccessKey, simpan AccessKey tersebut, lalu berikan izin
AliyunOSSFullAccesskepada pengguna RAM tersebut. -
Gunakan AccessKey pengguna RAM untuk mengonfigurasi variabel lingkungan.
Linux
-
Jalankan perintah berikut untuk menambahkan variabel lingkungan ke file
~/.bashrc.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc-
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bashrc -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
macOS
-
Jalankan perintah berikut di terminal untuk memeriksa shell default Anda.
echo $SHELL-
Konfigurasikan variabel lingkungan sesuai dengan shell default Anda.
Zsh
-
Jalankan perintah berikut untuk menambahkan variabel lingkungan ke file
~/.zshrc.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.zshrc -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
Jalankan perintah berikut untuk menambahkan variabel lingkungan ke file
~/.bash_profile.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bash_profile -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
-
Windows
CMD
-
Jalankan perintah berikut di CMD.
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"-
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
-
PowerShell
-
Jalankan perintah berikut di PowerShell.
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)-
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
-
Inisialisasi klien
Karena adanya perubahan kebijakan untuk meningkatkan kepatuhan dan keamanan, mulai 20 Maret 2025, pengguna OSS baru harus menggunakan nama domain kustom (CNAME) untuk melakukan operasi API data pada bucket OSS yang berada di wilayah daratan Tiongkok. Titik akhir publik default dibatasi untuk operasi ini. Lihat pengumuman resmi untuk daftar lengkap operasi yang terdampak. Jika Anda mengakses data melalui HTTPS, Anda harus mengikat Sertifikat SSL yang valid ke domain kustom Anda. Ini adalah wajib untuk akses Konsol OSS, karena konsol menerapkan HTTPS.
Sebelum menjalankan kode contoh, ganti placeholder seperti<region-id>dengan wilayah dan titik akhir aktual Anda, misalnya,ap-southeast-1.
package main
import (
"context"
"log"
"strings"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
/*
Konfigurasi inisialisasi klien Go SDK V2:
1. Versi signature: Go SDK V2 menggunakan signature v4 secara default untuk memberikan keamanan yang lebih baik.
2. Konfigurasi wilayah: Anda harus menentukan ID wilayah Alibaba Cloud untuk mengidentifikasi wilayah permintaan.
3. Konfigurasi titik akhir:
- Anda dapat menggunakan parameter endpoint untuk menentukan nama domain kustom untuk permintaan layanan.
- Jika parameter ini tidak ditentukan, SDK akan secara otomatis membuat titik akhir publik berdasarkan informasi wilayah.
4. Konfigurasi protokol:
- SDK menggunakan protokol HTTPS secara default untuk membuat titik akhir.
- Untuk menggunakan HTTP, Anda harus menentukan titik akhir yang dimulai dengan http://.
*/
func main() {
// Metode 1: Tentukan hanya wilayah (direkomendasikan).
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("<region-id>") // Tentukan wilayah tempat bucket berada.
// Metode 2: Tentukan wilayah dan titik akhir.
// cfg := oss.LoadDefaultConfig().
// WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
// WithRegion("<region-id>"). // Tentukan wilayah tempat bucket berada.
// WithEndpoint("<endpoint>") // Tentukan titik akhir publik wilayah tempat bucket berada.
// Buat klien OSS.
client := oss.NewClient(cfg)
// Buat isi unggahan.
body := strings.NewReader("hi oss")
// Buat permintaan untuk mengunggah objek.
request := &oss.PutObjectRequest{
Bucket: oss.Ptr("Your Bucket Name"), // Nama bucket.
Key: oss.Ptr("Your Object Key"), // Nama objek.
Body: body, // Konten string yang akan diunggah.
}
// Kirim permintaan untuk mengunggah objek.
result, err := client.PutObject(context.TODO(), request)
if err != nil {
log.Fatalf("gagal mengunggah objek %v", err)
}
// Cetak hasil operasi unggah.
log.Printf("Status: %#v\n", result.Status)
log.Printf("RequestId: %#v\n", result.ResultCommon.Headers.Get("X-Oss-Request-Id"))
log.Printf("ETag: %#v\n", *result.ETag)
}
Output sukses:
Status: "200 OK"
RequestId: "68746C5FE001B434303B90B6"
ETag: "B22E0DC370A7F7067FACF5F75D7FA385"
Konfigurasi klien
Nama domain kustom
Ikat nama domain kustom untuk mengaktifkan pratinjau file berbasis browser dan akselerasi CDN.
Sebelum menjalankan kode contoh, ganti placeholder<region-id>dengan wilayah dan titik akhir Anda, seperti atauap-southeast-1.
package main
import (
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
// Tentukan wilayah tempat bucket berada.
// Tentukan nama domain kustom Anda, misalnya, https://www.example-***.com
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("<region-id>").
WithEndpoint("https://www.example-***.com").
WithUseCName(true) // Atur parameter ini ke true untuk menggunakan nama domain kustom melalui CNAME.
// Buat klien OSS.
client := oss.NewClient(cfg)
// Gunakan klien untuk melakukan operasi selanjutnya...
}
Kontrol waktu tunggu
Sebelum menjalankan kode contoh, ganti placeholder<region-id>dengan wilayah dan titik akhir Anda, seperti atauap-southeast-1.
package main
import (
"time"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("<region-id>"). // Wilayah tempat bucket Anda berada.
WithConnectTimeout(10 * time.Second). // Waktu tunggu koneksi. Default 5 detik.
WithReadWriteTimeout(30 * time.Second) // Waktu tunggu baca/tulis. Default 10 detik.
// Buat klien OSS.
client := oss.NewClient(cfg)
// Gunakan klien untuk melakukan operasi lebih lanjut...
}
Jumlah maksimum percobaan ulang
OSSClient mencoba ulang permintaan yang gagal sebanyak 3 kali secara default.
Gunakan WithRetryMaxAttempts untuk meningkatkan jumlah percobaan ulang pada beban kerja konkurensi tinggi atau jaringan yang tidak stabil.
Sebelum menjalankan kode contoh, ganti placeholder<region-id>dengan wilayah dan titik akhir, seperti atauap-southeast-1.
package main
import (
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("<region-id>"). // Menentukan wilayah bucket.
WithRetryMaxAttempts(5) // Menetapkan jumlah maksimum percobaan ulang. Default adalah 3.
// Buat instance OSSClient.
client := oss.NewClient(cfg)
// Gunakan klien untuk operasi selanjutnya...
}
Protokol HTTP/HTTPS
Gunakan WithDisableSSL(true) untuk menonaktifkan protokol HTTPS.
Sebelum menjalankan kode contoh, ganti placeholder<region-id>dengan wilayah dan titik akhir aktual, seperti atauap-southeast-1.
package main
import (
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("<region-id>"). // Tentukan wilayah tempat bucket berada.
WithDisableSSL(true) // Nonaktifkan protokol HTTPS, yang diaktifkan secara default.
// Buat klien OSS.
client := oss.NewClient(cfg)
// Gunakan klien untuk operasi selanjutnya...
}
Server proxy
Gunakan WithProxyHost untuk mengarahkan permintaan OSS melalui server proxy.
Sebelum menjalankan kode contoh, ganti placeholder<region-id>dengan wilayah dan titik akhir, sepertiap-southeast-1.
package main
import (
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("<region-id>"). // Tentukan wilayah tempat bucket berada.
WithUserAgent("aliyun-sdk-go"). // Atur user agent untuk header User-Agent HTTP.
WithProxyHost("http://user:passswd@proxy.example-***.com") // Atur server proxy, misalnya "http://user:passswd@proxy.example-***.com".
// Buat klien OSS.
client := oss.NewClient(cfg)
// Gunakan klien untuk melakukan operasi selanjutnya...
}
Titik akhir internal
Gunakan titik akhir internal ketika aplikasi Anda berjalan pada instance ECS di wilayah yang sama dengan bucket untuk mengurangi biaya dan latensi.
Sebelum menjalankan kode contoh, ganti placeholder seperti<region-id>dengan Wilayah dan Titik Akhir Anda, seperti atauap-southeast-1.
package main
import (
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main()
// Metode 1: Tentukan wilayah dan atur WithUseInternalEndpoint ke true.
// Tentukan wilayah tempat bucket berada.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("<region-id>").
WithUseInternalEndpoint(true)
// Metode 2: Langsung tentukan wilayah dan titik akhir.
// Tentukan titik akhir internal yang sesuai dengan wilayah bucket.
// cfg := oss.LoadDefaultConfig().
// WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
// WithRegion("<region-id>").
// WithEndpoint("<endpoint>")
// Buat klien OSS.
client := oss.NewClient(cfg)
// Gunakan klien ini untuk operasi lebih lanjut.
}
Titik akhir dipercepat
Sebelum menjalankan kode contoh, ganti placeholder<region-id>dengan ID wilayah dan titik akhir Anda, sepertiap-southeast-1.
package main
import (
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
// Metode 1: Tentukan wilayah dan atur WithUseAccelerateEndpoint ke true.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("<region-id>").
WithUseAccelerateEndpoint(true)
// Metode 2: Langsung tentukan wilayah dan titik akhir.
// cfg := oss.LoadDefaultConfig().
// WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
// WithRegion("<region-id>").
// WithEndpoint("https://oss-accelerate.aliyuncs.com").
// Buat klien OSS.
client := oss.NewClient(cfg)
// Gunakan klien untuk melakukan operasi...
}
Domain privat
Sebelum menjalankan kode contoh, ganti placeholder<region-id>dengan ID yang benar berdasarkan wilayah dan titik akhir Anda, sepertiap-southeast-1.
package main
import (
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
// Tentukan wilayah yang berisi bucket.
// Tentukan domain privat Anda. Contoh: https://service.corp.example.com
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("<region-id>").
WithEndpoint("https://service.corp.example.com")
// Buat klien OSS.
client := oss.NewClient(cfg)
// Gunakan klien untuk melakukan operasi selanjutnya...
}
Titik akhir cloud pemerintah
Contoh berikut menunjukkan cara mengonfigurasi klien OSS untuk menggunakan titik akhir cloud pemerintah.
package main
import (
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
// Tentukan wilayah tempat bucket berada dan titik akhir internal yang sesuai.
// Misalnya, untuk wilayah China North 2 Ali Gov 1, atur Region ke "cn-north-2-gov-1" dan Endpoint ke "https://oss-cn-north-2-gov-1-internal.aliyuncs.com".
// Untuk menggunakan protokol HTTP, gunakan titik akhir HTTP: "http://oss-cn-north-2-gov-1-internal.aliyuncs.com".
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("cn-north-2-gov-1").
WithEndpoint("https://oss-cn-north-2-gov-1-internal.aliyuncs.com")
// Buat klien OSS.
client := oss.NewClient(cfg)
// Gunakan klien untuk melakukan operasi lebih lanjut...
}
Akses bucket CloudBox
Sebelum menjalankan kode contoh, ganti placeholder<region-id>dengan wilayah dan titik akhir aktual, sepertiap-southeast-1.
package main
import (
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
// Metode 1: Deteksi ID CloudBox secara otomatis.
// Tentukan wilayah tempat bucket berada.
// Atur titik akhir ke nama domain data bucket CloudBox. Contoh: http://cb-xxxxxx.<region-id>.oss-cloudbox.aliyuncs.com
// Atur WithEnableAutoDetectCloudBoxId ke true untuk mendeteksi ID CloudBox secara otomatis.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithEndpoint("http://cb-xxxxxx.<region-id>.oss-cloudbox.aliyuncs.com").
WithEnableAutoDetectCloudBoxId(true)
// Metode 2: Atur ID CloudBox secara manual.
// Tentukan wilayah tempat bucket berada.
// Atur titik akhir ke nama domain data bucket CloudBox. Contoh: http://cb-xxxxxx.<region-id>.oss-cloudbox.aliyuncs.com
// Tentukan ID CloudBox secara manual. Contoh: cb-xxxxxx
// cfg := oss.LoadDefaultConfig().
// WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
// WithEndpoint("http://cb-xxxxxx.<region-id>.oss-cloudbox.aliyuncs.com").
// WithCloudBoxId("cb-xxxxxx")
// Buat klien OSS.
client := oss.NewClient(cfg)
// Gunakan klien untuk operasi OSS...
}
Kustomisasi klien HTTP
Gunakan WithHTTPClient untuk mengganti klien HTTP default ketika parameter standar tidak mencukupi.
Sebelum menjalankan kode contoh, ganti placeholder<region-id>dengan wilayah dan titik akhir aktual Anda, seperti atauap-southeast-1.
package main
import (
"crypto/tls"
"net/http"
"time"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/transport"
)
func main() {
// Pengaturan umum waktu tunggu atau lainnya.
transConfig := transport.Config{
// Waktu tunggu koneksi. Default: 5 detik.
ConnectTimeout: oss.Ptr(10 * time.Second),
// Waktu tunggu untuk membaca data dari dan menulis data ke koneksi. Default: 10 detik.
ReadWriteTimeout: oss.Ptr(20 * time.Second),
// Waktu tunggu koneksi idle. Default: 50 detik.
IdleConnectionTimeout: oss.Ptr(40 * time.Second),
// Waktu tunggu keep-alive untuk koneksi jaringan. Default: 30 detik.
KeepAliveTimeout: oss.Ptr(40 * time.Second),
// Mengaktifkan pengalihan HTTP. Dinonaktifkan secara default.
EnabledRedirect: oss.Ptr(true),
}
// Pengaturan http.Transport.
var transports []func(*http.Transport)
// Jumlah maksimum koneksi. Default: 100.
transports = append(transports, transport.MaxConnections(200))
// Waktu maksimum untuk menunggu header respons pertama dari server setelah header permintaan ditulis jika permintaan memiliki header 'Expect: 100-Continue'. Default: 1 detik.
transports = append(transports, transport.ExpectContinueTimeout(2*time.Second))
// Versi TLS minimum. Default: TLS 1.2.
transports = append(transports, transport.TLSMinVersion(tls.VersionTLS13))
// Melewati verifikasi sertifikat. Default adalah false (sertifikat diverifikasi).
transports = append(transports, transport.InsecureSkipVerify(true))
// Untuk parameter transport lebih lanjut, lihat https://pkg.go.dev/net/http#Transport.
// Buat klien HTTP kustom.
customClient := transport.NewHttpClient(&transConfig, transports...)
cfg := oss.LoadDefaultConfig().
WithHttpClient(customClient).
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("<region-id>")
// Buat klien OSS.
client := oss.NewClient(cfg)
// Gunakan klien untuk melakukan operasi selanjutnya...
}
Konfigurasi kredensial akses
Pilih metode kredensial yang sesuai dengan kebutuhan autentikasi Anda.
Gunakan AK pengguna RAM
Untuk akses jangka panjang di lingkungan aman, inisialisasi penyedia kredensial dengan pasangan AccessKey pengguna RAM (ID AccessKey dan rahasia AccessKey). Manajemen kunci manual meningkatkan risiko keamanan.
-
Akun Alibaba Cloud memiliki izin penuh atas sumber daya. Kebocoran pasangan AccessKey menimbulkan risiko keamanan signifikan. Gunakan pasangan AccessKey pengguna RAM dengan izin minimal yang diperlukan.
-
Untuk membuat pasangan AccessKey untuk pengguna RAM, lihat Buat AccessKey. ID AccessKey dan rahasia AccessKey hanya ditampilkan saat Anda membuatnya. Simpan dengan aman. Jika Anda lupa rahasia AccessKey, Anda harus membuat pasangan AccessKey baru.
Variabel lingkungan
-
Atur variabel lingkungan menggunakan pasangan AccessKey pengguna RAM.
Linux
-
Jalankan perintah berikut di CLI untuk menambahkan konfigurasi variabel lingkungan ke file
~/.bashrc:echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc-
Terapkan perubahan.
source ~/.bashrc -
Periksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
macOS
-
Jalankan perintah berikut di terminal untuk melihat jenis shell default:
echo $SHELL-
Konfigurasikan variabel lingkungan berdasarkan jenis shell default.
Zsh
-
Jalankan perintah berikut untuk menambahkan konfigurasi variabel lingkungan ke file
~/.zshrc:echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
Terapkan perubahan.
source ~/.zshrc -
Periksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
Jalankan perintah berikut untuk menambahkan konfigurasi variabel lingkungan ke file
~/.bash_profile:echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile -
Terapkan perubahan.
source ~/.bash_profile -
Periksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
-
Windows
CMD
-
Jalankan perintah berikut di CMD:
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"-
Periksa apakah variabel lingkungan berlaku:
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
-
PowerShell
-
Jalankan perintah berikut di PowerShell:
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)-
Periksa apakah variabel lingkungan berlaku:
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
-
-
Setelah mengatur variabel lingkungan sistem, restart atau refresh lingkungan pengembangan Anda, termasuk IDE, antarmuka baris perintah, aplikasi desktop, dan layanan latar belakang, untuk memuat variabel baru.
-
Muat kredensial dari variabel lingkungan.
Sebelum menjalankan kode contoh ini, ganti placeholder
<region-id>dengan wilayah dan titik akhir aktual Anda, seperti atauap-southeast-1.package main import ( "log" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" ) func main() { // Atur wilayah berdasarkan kebutuhan Anda. region := "<region-id>" // Muat kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. provider := credentials.NewEnvironmentVariableCredentialsProvider() // Muat konfigurasi default, lalu atur penyedia kredensial dan wilayah. cfg := oss.LoadDefaultConfig(). WithCredentialsProvider(provider). WithRegion(region) // Buat klien OSS. client := oss.NewClient(cfg) log.Printf("ossclient: %v", client) }
Kredensial statis
Kode berikut menunjukkan cara menyematkan kredensial statis langsung di aplikasi Anda.
Jangan menyematkan kredensial akses di kode aplikasi untuk lingkungan produksi. Metode ini hanya untuk tujuan pengujian.
Sebelum menjalankan kode contoh ini, ganti placeholder<region-id>dengan wilayah dan titik akhir aktual Anda, seperti atauap-southeast-1.
package main
import (
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
// Atur wilayah berdasarkan kebutuhan Anda.
region := "<region-id>"
// Tentukan ID AccessKey dan rahasia AccessKey pengguna RAM.
accessKeyID := "yourAccessKeyID"
accessKeySecret := "yourAccessKeySecret"
// Gunakan metode NewStaticCredentialsProvider untuk langsung mengatur ID AccessKey dan rahasia AccessKey.
provider := credentials.NewStaticCredentialsProvider(accessKeyID, accessKeySecret)
// Muat konfigurasi default, lalu atur penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(provider).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
log.Printf("ossclient: %v", client)
}
Kredensial akses sementara STS
Untuk akses OSS sementara, inisialisasi penyedia kredensial dengan kredensial STS (ID AccessKey, rahasia AccessKey, dan token keamanan). Metode ini memerlukan manajemen dan refresh token secara manual.
-
Untuk mendapatkan kredensial akses sementara dengan cepat dengan memanggil operasi API, lihat AssumeRole - Dapatkan kredensial akses sementara untuk role.
-
Untuk mendapatkan kredensial akses sementara dengan menggunakan SDK, lihat Gunakan kredensial akses sementara STS untuk mengakses OSS.
-
Anda harus menentukan waktu kedaluwarsa saat menghasilkan token STS. Token STS tidak dapat digunakan setelah kedaluwarsa.
-
Untuk daftar titik akhir layanan STS, lihat Titik Akhir Layanan.
Variabel lingkungan
-
Atur variabel lingkungan dengan kredensial akses sementara Anda.
Mac OS X/Linux/Unix
Peringatan-
Perhatikan bahwa kredensial yang digunakan di sini adalah kredensial akses sementara (ID AccessKey, rahasia AccessKey, dan token keamanan) dari STS, bukan ID AccessKey dan rahasia AccessKey pengguna RAM.
-
ID AccessKey dari STS diawali dengan
STS., misalnya,STS.****************.
export OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID> export OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET> export OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>Windows
Peringatan-
Perhatikan bahwa kredensial yang digunakan di sini adalah kredensial akses sementara (ID AccessKey, rahasia AccessKey, dan token keamanan) dari STS, bukan ID AccessKey dan rahasia AccessKey pengguna RAM.
-
ID AccessKey dari STS diawali dengan
STS., misalnya,STS.****************.
set OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID> set OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET> set OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN> -
-
Muat kredensial dari variabel lingkungan.
Sebelum menjalankan kode contoh, ganti placeholder
<region-id>dengan wilayah dan titik akhir aktual, seperti atauap-southeast-1.package main import ( "log" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" ) func main() { // Atur wilayah berdasarkan kebutuhan Anda. region := "<region-id>" // Muat kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, dan OSS_SESSION_TOKEN telah diatur. provider := credentials.NewEnvironmentVariableCredentialsProvider() // Muat konfigurasi default, lalu atur penyedia kredensial dan wilayah. cfg := oss.LoadDefaultConfig(). WithCredentialsProvider(provider). WithRegion(region) // Buat klien OSS. client := oss.NewClient(cfg) log.Printf("ossclient: %v", client) }
Kredensial statis
Anda dapat menyematkan kredensial akses sementara langsung di aplikasi Anda.
Jangan menyematkan kredensial akses di kode produksi. Metode ini hanya untuk pengujian.
Sebelum menjalankan kode contoh, ganti placeholder<region-id>dengan wilayah dan titik akhir aktual, seperti atauap-southeast-1.
package main
import (
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
// Atur wilayah berdasarkan kebutuhan Anda.
region := "<region-id>"
// Gunakan kredensial akses sementara (ID AccessKey, rahasia AccessKey, dan token keamanan) dari STS.
// Jangan gunakan kredensial pengguna RAM.
// Perhatikan bahwa ID AccessKey dari STS diawali dengan `STS.`.
accessKeyID := "STS.****************"
accessKeySecret := "yourAccessKeySecret"
// Tentukan token keamanan STS.
stsToken := "yourSecurityToken"
// Gunakan metode NewStaticCredentialsProvider untuk langsung mengatur ID AccessKey, rahasia AccessKey, dan token STS.
provider := credentials.NewStaticCredentialsProvider(accessKeyID, accessKeySecret, stsToken)
// Muat konfigurasi default, lalu atur penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(provider).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
log.Printf("ossclient: %v", client)
}
Gunakan RAMRoleARN
Untuk akses OSS lintas akun atau delegasi, gunakan RAMRoleARN. Tentukan ARN role RAM, dan alat Credentials secara otomatis mendapatkan serta merefresh token STS melalui API AssumeRole. Gunakan parameter policy untuk membatasi izin.
-
Akun Alibaba Cloud memiliki izin penuh atas sumber daya. Kebocoran kunci akses menimbulkan risiko keamanan signifikan. Gunakan kunci akses pengguna RAM dengan izin minimal yang diperlukan.
-
Untuk membuat kunci akses untuk pengguna RAM, kunjungi Buat kunci akses. ID kunci akses dan rahasia kunci akses hanya ditampilkan saat pembuatan. Simpan dengan aman. Jika Anda kehilangannya, buat kunci akses baru dan rotasi kredensial Anda.
-
Untuk mendapatkan RAMRoleARN, kunjungi Buat role.
-
Tambahkan dependensi kredensial.
go get github.com/aliyun/credentials-go/credentials -
Konfigurasikan kredensial akses.
Sebelum menjalankan kode contoh, ganti placeholder
<region-id>dengan wilayah aktual, seperti atauap-southeast-1.package main import ( "context" "log" "os" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" openapicred "github.com/aliyun/credentials-go/credentials" ) func main() { // Atur wilayah berdasarkan kebutuhan Anda. region := "<region-id>" config := new(openapicred.Config). // Tentukan jenis kredensial. Nilai ini harus ram_role_arn. SetType("ram_role_arn"). // Dapatkan ID kunci akses dan rahasia kunci akses untuk pengguna RAM dari variabel lingkungan. SetAccessKeyId(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")). SetAccessKeySecret(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")). // Parameter berikut diatur dengan string placeholder. Di lingkungan produksi, Anda harus memuat nilai-nilai ini dari sumber aman, seperti variabel lingkungan. // Tentukan ARN role RAM yang akan diasumsikan. Formatnya adalah acs:ram::$accountID:role/$roleName. SetRoleArn("ALIBABA_CLOUD_ROLE_ARN"). // Variabel lingkungan konvensional untuk RoleArn adalah ALIBABA_CLOUD_ROLE_ARN. // Tentukan nama sesi role kustom untuk membedakan antara token yang berbeda. SetRoleSessionName("ALIBABA_CLOUD_ROLE_SESSION_NAME"). // Variabel lingkungan konvensional untuk RoleSessionName adalah ALIBABA_CLOUD_ROLE_SESSION_NAME. // (Opsional) Batasi izin token STS. SetPolicy("Policy"). // (Opsional) Tentukan periode validitas token STS. SetRoleSessionExpiration(3600) arnCredential, gerr := openapicred.NewCredential(config) provider := credentials.CredentialsProviderFunc(func(ctx context.Context) (credentials.Credentials, error) { if gerr != nil { return credentials.Credentials{}, gerr } cred, err := arnCredential.GetCredential() if err != nil { return credentials.Credentials{}, err } return credentials.Credentials{ AccessKeyID: *cred.AccessKeyId, AccessKeySecret: *cred.AccessKeySecret, SecurityToken: *cred.SecurityToken, }, nil }) // Muat konfigurasi default, dan atur penyedia kredensial dan wilayah. cfg := oss.LoadDefaultConfig(). WithCredentialsProvider(provider). WithRegion(region) // Buat klien OSS. client := oss.NewClient(cfg) log.Printf("ossclient: %v", client) }
Gunakan ECSRAMRole
Untuk aplikasi pada ECS, ECI, atau node pekerja Container Service for Kubernetes, gunakan ECSRAMRole. Ini mengaitkan role dengan ECS, ECI, atau node pekerja Container Service for Kubernetes untuk secara otomatis merefresh token STS, sehingga menghilangkan manajemen kredensial manual. Buat role sebelum melanjutkan.
-
Tambahkan dependensi kredensial.
go get github.com/aliyun/credentials-go/credentials -
Konfigurasikan kredensial akses.
Sebelum menjalankan kode contoh, ganti placeholder
<region-id>dengan wilayah dan titik akhir Anda, seperti atauap-southeast-1.package main import ( "context" "log" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" openapicred "github.com/aliyun/credentials-go/credentials" ) func main() { // Atur wilayah. region := "<region-id>" config := new(openapicred.Config). // Tentukan jenis kredensial. Atur nilainya ke ecs_ram_role. SetType("ecs_ram_role"). // (Opsional) Tentukan nama role. Jika diabaikan, klien OSS akan menemukannya secara otomatis. Disarankan untuk menentukan nama role untuk mengurangi permintaan. SetRoleName("RoleName") arnCredential, gerr := openapicred.NewCredential(config) provider := credentials.CredentialsProviderFunc(func(ctx context.Context) (credentials.Credentials, error) { if gerr != nil { return credentials.Credentials{}, gerr } cred, err := arnCredential.GetCredential() if err != nil { return credentials.Credentials{}, err } return credentials.Credentials{ AccessKeyID: *cred.AccessKeyId, AccessKeySecret: *cred.AccessKeySecret, SecurityToken: *cred.SecurityToken, }, nil }) // Muat konfigurasi default dan atur penyedia kredensial serta wilayah. cfg := oss.LoadDefaultConfig(). WithCredentialsProvider(provider). WithRegion(region) // Buat klien OSS. client := oss.NewClient(cfg) log.Printf("ossclient: %v", client) }
Gunakan OIDCRoleARN
Untuk aplikasi tidak tepercaya pada node pekerja Container Service for Kubernetes (ACK), gunakan RRSA berbasis OIDC untuk menerapkan hak istimewa minimal tingkat pod alih-alih berbagi token metadata-service node. ACK memasang file token OIDC per pod; alat Credentials membacanya dan memanggil AssumeRoleWithOIDC untuk mendapatkan token STS secara otomatis. Gunakan RRSA untuk mengonfigurasi izin RAM untuk akun layanan guna mengisolasi izin pod.
-
Tambahkan dependensi kredensial.
go get github.com/aliyun/credentials-go/credentials -
Konfigurasikan kredensial akses.
Sebelum menjalankan kode contoh, ganti placeholder
<region-id>dengan wilayah dan titik akhir Anda, seperti atauap-southeast-1.package main import ( "context" "log" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" openapicred "github.com/aliyun/credentials-go/credentials" ) func main() { // Tentukan wilayah. region := "<region-id>" config := new(openapicred.Config). // Jenis kredensial. Harus "oidc_role_arn". SetType("oidc_role_arn"). // Tentukan ARN penyedia OIDC. Formatnya adalah acs:ram::account-id:oidc-provider/provider-name. SetOIDCProviderArn("OIDCProviderArn"). // Tentukan path ke file token OIDC. SetOIDCTokenFilePath("OIDCTokenFilePath"). // Tentukan nama sesi role kustom untuk membedakan antara token. SetRoleSessionName("RoleSessionName"). // Variabel lingkungan default untuk RoleSessionName adalah ALIBABA_CLOUD_ROLE_SESSION_NAME. // (Opsional) Tentukan kebijakan yang akan digunakan saat mengasumsikan role. SetPolicy("Policy"). // ARN role ram yang akan diasumsikan, dalam format acs:ram::account-id:role/role-name. SetRoleArn("RoleArn"). // Durasi sesi dalam detik. SetSessionExpiration(3600) arnCredential, gerr := openapicred.NewCredential(config) provider := credentials.CredentialsProviderFunc(func(ctx context.Context) (credentials.Credentials, error) { if gerr != nil { return credentials.Credentials{}, gerr } cred, err := arnCredential.GetCredential() if err != nil { return credentials.Credentials{}, err } return credentials.Credentials{ AccessKeyID: *cred.AccessKeyId, AccessKeySecret: *cred.AccessKeySecret, SecurityToken: *cred.SecurityToken, }, nil }) // Muat konfigurasi default dan atur penyedia kredensial serta wilayah. cfg := oss.LoadDefaultConfig(). WithCredentialsProvider(provider). WithRegion(region) // Buat klien OSS. client := oss.NewClient(cfg) log.Printf("ossclient: %v", client) }
Penyedia kredensial kustom
Implementasikan penyedia kustom jika metode standar tidak memenuhi kebutuhan Anda.
-
Gunakan antarmuka credentials.CredentialsProviderFunc
Sebelum menjalankan kode contoh, ganti placeholder
<region-id>dengan wilayah dan titik akhir yang valid, sepertiap-southeast-1.package main import ( "context" "log" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" ) func main() { // Atur wilayah berdasarkan kebutuhan Anda. region := "<region-id>" // Buat penyedia kredensial kustom. provider := credentials.CredentialsProviderFunc(func(ctx context.Context) (credentials.Credentials, error) { // Kembalikan kredensial jangka panjang. return credentials.Credentials{AccessKeyID: "id", AccessKeySecret: "secret"}, nil // Kembalikan kredensial sementara. //return credentials.Credentials{AccessKeyID: "id", AccessKeySecret: "secret", SecurityToken: "token"}, nil }) // Muat konfigurasi default dan atur penyedia kredensial serta wilayah. cfg := oss.LoadDefaultConfig(). WithCredentialsProvider(provider). WithRegion(region) // Buat klien OSS. client := oss.NewClient(cfg) log.Printf("ossclient: %v", client) } -
Implementasikan antarmuka credentials.CredentialsProvider
Sebelum menjalankan kode contoh, ganti placeholder
<region-id>dengan wilayah dan titik akhir yang valid, sepertiap-southeast-1.package main import ( "context" "log" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" ) type CustomerCredentialsProvider struct { // TODO } func NewCustomerCredentialsProvider() CustomerCredentialsProvider { return CustomerCredentialsProvider{} } func (s CustomerCredentialsProvider) GetCredentials(_ context.Context) (credentials.Credentials, error) { // Kembalikan kredensial jangka panjang. return credentials.Credentials{AccessKeyID: "id", AccessKeySecret: "secret"}, nil // Kembalikan kredensial sementara. //return credentials.Credentials{AccessKeyID: "id", AccessKeySecret: "secret", SecurityToken: "token"}, nil } func main() { // Atur wilayah berdasarkan kebutuhan Anda. region := "<region-id>" // Buat penyedia kredensial kustom. provider := NewCustomerCredentialsProvider() // Muat konfigurasi default dan atur penyedia kredensial serta wilayah. cfg := oss.LoadDefaultConfig(). WithCredentialsProvider(provider). WithRegion(region) // Buat klien OSS. client := oss.NewClient(cfg) log.Printf("ossclient: %v", client) }
Gunakan rantai penyedia kredensial default
Jika tidak ada parameter yang diberikan, SDK menggunakan rantai penyedia kredensial default untuk menemukan kredensial secara otomatis.
Sebelum menjalankan kode contoh, ganti placeholder<region-id>dengan wilayah dan titik akhir Anda, seperti atauap-southeast-1.
package main
import (
"context"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
osscred "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
"github.com/aliyun/credentials-go/credentials"
)
func main() {
// Atur wilayah berdasarkan kebutuhan Anda.
region := "<region-id>"
// Mengirimkan nil menggunakan rantai penyedia kredensial default untuk menemukan kredensial.
arnCredential, gerr := credentials.NewCredential(nil)
provider := osscred.CredentialsProviderFunc(func(ctx context.Context) (osscred.Credentials, error) {
if gerr != nil {
return osscred.Credentials{}, gerr
}
cred, err := arnCredential.GetCredential()
if err != nil {
return osscred.Credentials{}, err
}
return osscred.Credentials{
AccessKeyID: *cred.AccessKeyId,
AccessKeySecret: *cred.AccessKeySecret,
SecurityToken: *cred.SecurityToken,
}, nil
})
// Muat konfigurasi default dan atur penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(provider).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
log.Printf("ossclient: %v", client)
}
Pemecahan Masalah
Kesalahan OSS mencakup kode status HTTP, pesan, ID permintaan, dan kode kesalahan EC. Gunakan kode EC untuk mengidentifikasi akar penyebabnya.
-
Sebagai contoh, saat Anda menggunakan kode berikut untuk mengunduh objek yang tidak ada:
package main import ( "context" "flag" "io" "log" "os" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" ) // Definisikan variabel global. var ( region string // Wilayah tempat bucket berada. bucketName string // Nama bucket. objectName string // Nama objek. ) // Fungsi init menginisialisasi parameter baris perintah. func init() { flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.") flag.StringVar(&bucketName, "bucket", "", "Nama bucket.") flag.StringVar(&objectName, "object", "", "Nama objek.") } func main() { // Parsing parameter baris perintah. flag.Parse() // Periksa apakah nama bucket kosong. if len(bucketName) == 0 { flag.PrintDefaults() log.Fatalf("parameter tidak valid, nama bucket diperlukan") } // Periksa apakah wilayah kosong. if len(region) == 0 { flag.PrintDefaults() log.Fatalf("parameter tidak valid, wilayah diperlukan") } // Periksa apakah nama objek kosong. if len(objectName) == 0 { flag.PrintDefaults() log.Fatalf("parameter tidak valid, nama objek diperlukan") } // Definisikan path file output. outputFile := "downloaded.txt" // Ganti dengan path file yang diinginkan. // Muat konfigurasi default dan atur penyedia kredensial serta wilayah. cfg := oss.LoadDefaultConfig(). WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()). WithRegion(region) // Buat klien OSS. client := oss.NewClient(cfg) // Buat permintaan untuk mendapatkan objek. request := &oss.GetObjectRequest{ Bucket: oss.Ptr(bucketName), // Nama bucket. Key: oss.Ptr(objectName), // Nama objek. } // Dapatkan objek dan proses hasilnya. result, err := client.GetObject(context.TODO(), request) if err != nil { log.Fatalf("gagal mendapatkan objek %v", err) } defer result.Body.Close() // Pastikan badan respons ditutup saat fungsi selesai. // Baca seluruh konten objek sekaligus. data, err := io.ReadAll(result.Body) if err != nil { log.Fatalf("gagal membaca objek %v", err) } // Tulis konten ke file. err = os.WriteFile(outputFile, data, 0644) if err != nil { log.Fatalf("gagal menulis ke file output %v", err) } log.Printf("file berhasil diunduh ke %s", outputFile) } -
Berikut adalah contoh pesan kesalahan yang dikembalikan. Ini mencakup kode kesalahan EC 'EC': '0026-00000001', yang secara unik mengidentifikasi penyebab kesalahan.
2025/03/07 15:13:46 gagal mendapatkan objek operation error GetObject: Error returned by Service. Kode Status Http: 404. Kode Kesalahan: NoSuchKey. ID Permintaan: 67CA9CAADC44E03938AD91F0. Pesan: The specified key does not exist.. EC: 0026-00000001. Timestamp: 2025-03-07 07:13:46 +0000 UTC. Titik Akhir Permintaan: GET https://xxx.oss-cn-hangzhou.aliyuncs.com/asdgkhfk. -
Untuk memecahkan masalah kesalahan menggunakan kode kesalahan EC dari contoh, ikuti langkah-langkah berikut:
-
Di kotak pencarian, masukkan kode kesalahan EC, misalnya 0026-00000001. Lalu, tempel pesan kesalahan yang berisi ID permintaan ke kotak teks dan klik Diagnose.
-
Hasil pencarian memberikan penyebab kesalahan dan solusinya. Untuk kode kesalahan EC
0026-00000001, diagnosis menunjukkan bahwa objek target tidak ada. Kemungkinan penyebabnya termasuk unggahan objek gagal, penghapusan yang dipicu oleh aturan siklus hidup, penghapusan oleh pengguna lain, atau penghapusan yang disinkronkan oleh replikasi lintas wilayah. Solusinya adalah memverifikasi keberadaan objek dengan HeadObject, melihat informasi versi dengan ListObjectVersions, dan memeriksa konvensi penamaan objek, aturan siklus hidup, izin pengguna, dan aturan replikasi lintas wilayah. Untuk informasi lebih lanjut, lihat NoSuchKey dan NoSuchVersion.
Kode contoh
Referensikan atau gunakan kode contoh berikut.
|
Deskripsi |
File contoh |
|
- |
|
|
- |
|
|
- |
|
|
- |