Introducció
Requisits previs
Creació d'emmagatzematge d'objectes amb el client Vultr Go
Creeu la carpeta del projecte
Inicialitzar el mòdul
Descarrega't la Biblioteca
Establiu la variable d'entorn de la clau de l'API
Creeu el programa Go
Sortida d'exemple
Introducció
Aquesta guia explica com crear Vultr Object Storage a la vostra aplicació Go amb el client Vultr Go . Vultr Object Storage és compatible amb l'API S3.
Requisits previs
- Un ordinador amb Windows, Linux o macOS amb Go 1.12+ instal·lat.
- Coneixements bàsics de programació.
- Opcional: un IDE que admet Go (per exemple, Visual Studio Code, emacs o Atom).
Creació d'emmagatzematge d'objectes amb el client Vultr Go
El client Vultr Go s'utilitza per interactuar amb l' API Vultr . L'API Vultr us permet controlar els recursos associats al vostre compte, inclòs Vultr Object Storage. En aquest article trobareu informació detallada sobre el client Vultr Go
.
Creeu la carpeta del projecte
Creeu la carpeta al directori actual.
$ mkdir vultr_demo
Introduïu la nova carpeta.
$ cd vultr_demo
Inicialitzar el mòdul
$ go mod init vultr_demo
Descarrega't la Biblioteca
$ go get github.com/vultr/govultr
Establiu la variable d'entorn de la clau de l'API
Estableix la variable d'entorn VULTR_API_KEY a la teva clau d'API. La vostra clau d'API es troba aquí: https://my.vultr.com/settings/#settingsapi
Avís: protegiu la vostra clau de l'API com protegiu la contrasenya. La clau d'API té accés a tot el vostre compte, inclosos la facturació, els servidors i l'emmagatzematge.
Per exemple, a Ubuntu Linux, afegiu aquesta línia a ~/.profile.
export VULTR_API_KEY=YOUR_API_KEY_HERE
Creeu el programa Go
Enganxeu cadascun dels fragments de codi següents en un fitxer nou anomenat main.go. El fitxer complet també es pot descarregar .
Configureu el paquet i importeu les biblioteques necessàries.
package main
import (
"context"
"log"
"os"
"time"
"github.com/vultr/govultr"
)
Comença la main()funció.
func main() {
Llegiu la variable d'entorn de la clau de l'API.
var (
// Get our Vultr API Key from an environment variable.
VultrAPIKey = os.Getenv("VULTR_API_KEY")
)
Creeu el client Vultr.
// Create a Vultr client with our API Key.
vultr := govultr.NewClient(nil, VultrAPIKey)
Especifiqueu una ubicació per crear l'emmagatzematge d'objectes. Recupereu les ubicacions del clúster, comproveu que n'hi hagi un disponible, trieu un clúster i visualitzeu-lo.
// 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)
Creeu l'emmagatzematge d'objectes al clúster seleccionat.
// 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)
Espereu fins que l'emmagatzematge d'objectes estigui actiu.
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)
}
Mostra el nom del punt final i les credencials de connexió.
// 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)
Finalitzar la funció principal.
// end main()
}
Deseu i executeu el main.gofitxer completat .
go run main.go
Sortida d'exemple
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]
En aquest exemple, el nom del punt final és ewr1.vultrobjects.com i les claus estan redactades. Accediu al vostre nou emmagatzematge d'objectes amb qualsevol client compatible amb S3 mitjançant el nom del punt final, la clau d'accés i la clau secreta que mostra el vostre programa Go.