Задать вопрос
@D_K_D
Junior

Yandex Cloud s3 — ListBuckets, failed to resolve service endpoint, unknown endpoint requested?

Создал bucket и статический ключ для подключения к s3 Yandex. Делаю всё по документации, но выдаёт ошибку.
operation error S3: ListBuckets, failed to resolve service endpoint, unknown endpoint requested

Не могу понять в чём ошибка, в коде, в ключах доступах или с endpoints ?
Также как и в документации создал папку .aws для конфигов.

.aws/credentials
[default]
aws_access_key_id = xxx
aws_secret_access_key = yyy


.aws/config
[default]
region=ru-central1

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/service/s3"
)

func main() {

	// Создаем кастомный обработчик эндпоинтов, который для сервиса S3 и региона ru-central1 выдаст корректный URL
	customResolver := aws.EndpointResolverWithOptionsFunc(func(service, region string, options ...interface{}) (aws.Endpoint, error) {
		if service == s3.ServiceID && region == "ru-central1" {
			return aws.Endpoint{
				PartitionID:   "yc",
				URL:           "https://storage.yandexcloud.net",
				SigningRegion: "ru-central1",
			}, nil
		}
		return aws.Endpoint{}, fmt.Errorf("unknown endpoint requested")
	})

	// Подгружаем конфигрурацию из ~/.aws/*
	cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithEndpointResolverWithOptions(customResolver))
	if err != nil {
		log.Fatal(err)
	}

	// Создаем клиента для доступа к хранилищу S3
	client := s3.NewFromConfig(cfg)

	fmt.Println(client)

	// Запрашиваем список бакетов
	result, err := client.ListBuckets(context.TODO(), &s3.ListBucketsInput{})
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println(result)
}
  • Вопрос задан
  • 756 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
deepblack
@deepblack
Сделал точно как в документации, у меня работает:
62f5703f091a7156311757.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы