Pengenalan
Panduan ini menerangkan cara membuat Simpanan Objek Vultr dalam aplikasi Go anda dengan pelanggan Vultr Go . Penyimpanan Objek Vultr serasi dengan S3 API.
Prasyarat
- Komputer yang menjalankan Windows, Linux, atau macOS dengan pemasangan Go 1.12+.
- Pengetahuan pengaturcaraan asas.
- Pilihan: IDE yang menyokong Go (contohnya Visual Studio Code, emacs, atau Atom).
Mewujudkan Penyimpanan Objek dengan Pelanggan Vultr Go
Pelanggan Vultr Go digunakan untuk berinteraksi dengan API Vultr . API Vultr membolehkan anda mengawal sumber daya yang berkaitan dengan akaun anda, termasuk Penyimpanan Objek Vultr. Maklumat terperinci mengenai klien Vultr Go boleh didapati dalam artikel ini .
Buat Folder Projek
Buat folder dalam direktori semasa.
$ mkdir vultr_demo
Masukkan folder baru.
$ cd vultr_demo
Mulakan modul
$ go mod init vultr_demo
Muat turun Perpustakaan
$ go get github.com/vultr/govultr
Tetapkan Pembolehubah Persekitaran Utama API
Tetapkan pembolehubah persekitaran VULTR_API_KEY ke kunci API anda. Kunci API anda terdapat di sini: https://my.vultr.com/settings/#settingsapi
Amaran: Lindungi kunci API anda seperti melindungi kata laluan anda. Kunci API mempunyai akses ke seluruh akaun anda, termasuk penagihan, pelayan dan penyimpanan.
Sebagai contoh, pada Ubuntu Linux, tambahkan baris ini kepada ~/.profile.
export VULTR_API_KEY=YOUR_API_KEY_HERE
Buat Program Go
Tampalkan setiap fragmen kod berikut ke dalam fail bernama baru main.go. Fail lengkap juga tersedia untuk dimuat turun .
Sediakan pakej dan import perpustakaan yang diperlukan.
package main
import (
"context"
"log"
"os"
"time"
"github.com/vultr/govultr"
)
Mulakan main()fungsi.
func main() {
Baca pembolehubah persekitaran kunci API.
var (
// Get our Vultr API Key from an environment variable.
VultrAPIKey = os.Getenv("VULTR_API_KEY")
)
Buat pelanggan Vultr.
// Create a Vultr client with our API Key.
vultr := govultr.NewClient(nil, VultrAPIKey)
Tentukan lokasi untuk membuat Penyimpanan Objek. Mendapatkan lokasi kluster, mengesahkan ada yang tersedia, pilih kluster, dan paparkannya.
// Find the clusters we can create our Object Storage in.
clusters, err := vultr.ObjectStorage.ListCluster(ctx)
if err != nil {
log.Fatalf("Error listing clusters: %s", err)
}
// Verify there's at least one cluster.
if len(clusters) < 1 {
log.Fatal("Could not find any clusters to create our Object Storage")
}
// Choose the first cluster, and print it.
cluster := clusters[0]
log.Printf("Chosen cluster: %+v", cluster)
Buat Penyimpanan Objek dalam kelompok yang dipilih.
// Create our Object Storage in the first cluster listed with our custom label.
label := "my-object-storage"
storageID, err := vultr.ObjectStorage.Create(ctx, cluster.ObjectStoreClusterID, label)
if err != nil {
log.Fatalf("Error creating storage: %s", err)
}
log.Printf("Created our Object Storage with the ID: %d", storageID.ID)
Tunggu sehingga Penyimpanan Objek aktif.
var storage govultr.ObjectStorage
// Query the API every five seconds to until our server is ready.
for {
// List all of the Object Storage containers with our label and include the S3 credentials.
list, err := vultr.ObjectStorage.List(ctx, &govultr.ObjectListOptions{
Label: label,
IncludeS3: true,
})
if err != nil {
log.Fatalf("Error listing storage with label \"%s\": %s", label, err)
}
// Make sure we found one (and only one) Object Storage container.
if len(list) != 1 {
log.Fatalf("%d object storage containers exist with the label \"%s\"; we need 1", len(list), label)
}
storage = list[0]
// If the server is active, break out of this loop.
if storage.Status == "active" {
break
}
// Wait for five seconds before querying the API again.
log.Printf("The Object Storage's status is currently \"%s\", waiting for another five seconds to check if it's \"active\".", storage.Status)
time.Sleep(time.Second * 5)
}
Paparkan nama endpoint dan bukti sambungan.
// Print the information of our new Object Storage.
log.Print("Successfully created and listed our Object Storage!")
log.Printf("Object Storage: %+v", storage)
// We also have S3 credentials here now, so we could open an S3 compatible client.
log.Printf("S3 credentials: %s - %s - %s", storage.S3Hostname, storage.S3AccessKey, storage.S3SecretKey)
Tamatkan fungsi utama.
// end main()
}
Simpan dan jalankan main.gofail yang telah dilengkapkan .
go run main.go
Output Contoh
2020/03/03 13:05:48 Chosen cluster: {ObjectStoreClusterID:2 RegionID:1 Location:New Jersey Hostname:ewr1.vultrobjects.com Deploy:yes}
2020/03/03 13:05:48 Created our Object Storage with the ID: xxxxxxxx
2020/03/03 13:05:49 The Object Storage's status is currently pending, waiting for another five seconds to check if it's active.
2020/03/03 13:06:06 Object Storage: {ID:34214512 DateCreated:2020-03-03 13:05:47 ObjectStoreClusterID:2 RegionID:1 Location:New Jersey Label:my-object-storage Status:active S3Keys:{S3Hostname:ewr1.vultrobjects.com S3AccessKey:[REDACTED ACCESS KEY] S3SecretKey:[REDACTED SECRET KEY]}}
2020/03/03 13:06:06 S3 credentials: ewr1.vultrobjects.com - [REDACTED ACCESS KEY] - [REDACTED SECRET KEY]
Dalam contoh ini, nama akhir titik ialah ewr1.vultrobjects.com, dan kekunci itu dikurangkan. Akses penyimpanan objek baru anda dengan mana-mana klien yang sesuai dengan S3 menggunakan nama titik akhir, kunci akses dan kunci rahsia yang ditunjukkan oleh program Go anda.