Создание хранилища объектов Vultr с помощью клиента Vultr Go

Вступление

В этом руководстве объясняется, как создать Vultr Object Storage в приложении Go с помощью клиента Vultr Go . Vultr Object Storage совместим с S3 API.

Предпосылки

  • Компьютер под управлением Windows, Linux или macOS с установленной Go 1.12+.
  • Базовые знания программирования.
  • Необязательно: IDE, поддерживающая Go (например, код Visual Studio, emacs или Atom).

Создание хранилища объектов с помощью клиента Vultr Go

Клиент Vultr Go используется для взаимодействия с API Vultr . Vultr API позволяет вам контролировать ресурсы, связанные с вашей учетной записью, включая Vultr Object Storage. Подробная информация о клиенте Vultr Go доступна в этой статье .

Создать папку проекта

Создайте папку в текущем каталоге.

$ mkdir vultr_demo

Введите новую папку.

$ cd vultr_demo

Инициализируйте модуль

$ go mod init vultr_demo

Скачать библиотеку

$ go get github.com/vultr/govultr

Установите переменную среды ключа API

Установите переменную среды VULTR_API_KEY в свой ключ API. Ваш ключ API находится здесь: https://my.vultr.com/settings/#settingsapi

Предупреждение. Защитите свой ключ API, как если бы вы защищали свой пароль. Ключ API имеет доступ ко всей вашей учетной записи, включая биллинг, серверы и хранилище.

Например, в Ubuntu Linux добавьте эту строку в ~/.profile.

export VULTR_API_KEY=YOUR_API_KEY_HERE

Создать программу Go

Вставьте каждый из следующих фрагментов кода в новый файл с именем main.go. Полный файл также доступен для скачивания .

Установите пакет и импортируйте необходимые библиотеки.

package main

import (
    "context"
    "log"
    "os"
    "time"

    "github.com/vultr/govultr"
)

Начните main()функцию.

func main() {

Прочитайте переменную среды ключа API.

var (
    // Get our Vultr API Key from an environment variable.
    VultrAPIKey = os.Getenv("VULTR_API_KEY")
)

Создайте клиент Vultr.

// Create a Vultr client with our API Key.
vultr := govultr.NewClient(nil, VultrAPIKey)

Укажите местоположение для создания хранилища объектов. Получите местоположения кластера, убедитесь, что он доступен, выберите кластер и отобразите его.

// 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)

Создайте хранилище объектов в выбранном кластере.

// 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)

Подождите, пока хранилище объектов не станет активным.

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)
}

Показать имя конечной точки и учетные данные подключения.

// 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)

Конец основной функции.

// end main()
}

Сохраните и запустите готовый main.goфайл.

go run main.go

Пример вывода

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]

В этом примере имя конечной точки - ewr1.vultrobjects.com, а ключи отредактированы. Получите доступ к новому хранилищу объектов с помощью любого S3-совместимого клиента, используя имя конечной точки, ключ доступа и секретный ключ, показанные вашей программой Go.



Leave a Comment

Как установить Golang 1.8 на Ubuntu 16.04

Как установить Golang 1.8 на Ubuntu 16.04

Go (Golang) - это современный язык программирования, разработанный в Google и ориентированный на простоту и безопасность. Это стало популярным языком, используемым для сервера-sid

Как установить Golang 1.8.3 на CentOS 7, Ubuntu 16.04 и Debian 9

Как установить Golang 1.8.3 на CentOS 7, Ubuntu 16.04 и Debian 9

Golang - это язык программирования, разработанный Google. Благодаря своей универсальности, простоте и надежности, Голанг стал одним из самых популярных

Как установить Golang 1.13 в CentOS 8, Ubuntu 18.04, Debian 10 и Fedora 31

Как установить Golang 1.13 в CentOS 8, Ubuntu 18.04, Debian 10 и Fedora 31

Go (также известный как Golang) - это статически типизированный, скомпилированный, C-подобный язык программирования, разработанный Google. Gos простота и универсальность сделали это б

Настройка обратного прокси-сервера Nginx и Golang на FreeBSD

Настройка обратного прокси-сервера Nginx и Golang на FreeBSD

Требования Базовые знания UNIX. FreeBSD x64 с установленным Nginx. Инструменты для установки Вам понадобятся несколько программ, которые не поставляются с FreeBSD. Ру

Установка Golang на Ubuntu 14.04

Установка Golang на Ubuntu 14.04

Golang - это язык программирования, разработанный Google, который сохранил традиции C, но сосредоточился на простоте и безопасности. Это стало популярным языком

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше