introduction
Ce guide explique comment créer un stockage d'objets Vultr dans votre application Go avec le client Vultr Go . Vultr Object Storage est compatible avec l'API S3.
Conditions préalables
- Un ordinateur exécutant Windows, Linux ou macOS avec Go 1.12+ installé.
- Connaissances de base en programmation.
- Facultatif: un IDE prenant en charge Go (par exemple Visual Studio Code, emacs ou Atom).
Création d'un stockage d'objets avec le client Vultr Go
Le client Vultr Go est utilisé pour interagir avec l' API Vultr . L'API Vultr vous permet de contrôler les ressources associées à votre compte, y compris le stockage d'objets Vultr. Des informations détaillées sur le client Vultr Go sont disponibles dans cet article .
Créer le dossier de projet
Créez le dossier dans le répertoire actuel.
$ mkdir vultr_demo
Entrez dans le nouveau dossier.
$ cd vultr_demo
Initialiser le module
$ go mod init vultr_demo
Téléchargez la bibliothèque
$ go get github.com/vultr/govultr
Définir la variable d'environnement de clé API
Définissez la variable d'environnement VULTR_API_KEY sur votre clé API. Votre clé API se trouve ici: https://my.vultr.com/settings/#settingsapi
Avertissement: protégez votre clé API comme vous le feriez pour votre mot de passe. La clé API a accès à l'ensemble de votre compte, y compris la facturation, les serveurs et le stockage.
Par exemple, sur Ubuntu Linux, ajoutez cette ligne à ~/.profile
.
export VULTR_API_KEY=YOUR_API_KEY_HERE
Créer le programme Go
Collez chacun des fragments de code suivants dans un nouveau fichier nommé main.go
. Le fichier complet est également disponible en téléchargement .
Configurez le package et importez les bibliothèques requises.
package main
import (
"context"
"log"
"os"
"time"
"github.com/vultr/govultr"
)
Commencez la main()
fonction.
func main() {
Lisez la variable d'environnement de clé API.
var (
// Get our Vultr API Key from an environment variable.
VultrAPIKey = os.Getenv("VULTR_API_KEY")
)
Créez le client Vultr.
// Create a Vultr client with our API Key.
vultr := govultr.NewClient(nil, VultrAPIKey)
Spécifiez un emplacement pour créer le stockage d'objets. Récupérez les emplacements de cluster, vérifiez qu'un est disponible, choisissez un cluster et affichez-le.
// 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)
Créez le stockage d'objets dans le cluster sélectionné.
// 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)
Attendez que le stockage d'objets soit actif.
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)
}
Affichez le nom du noeud final et les informations d'identification de connexion.
// 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)
Terminez la fonction principale.
// end main()
}
Enregistrez et exécutez le main.go
fichier terminé .
go run main.go
Exemple de sortie
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]
Dans cet exemple, le nom du noeud final est ewr1.vultrobjects.com et les clés sont caviardées. Accédez à votre nouveau stockage d'objets avec n'importe quel client compatible S3 en utilisant le nom du point de terminaison, la clé d'accès et la clé secrète affichés par votre programme Go.