В этой статье блога мы рассмотрим, как вызывать операции службы с помощью библиотеки aws-sdk-go-v2. Независимо от того, являетесь ли вы новичком или имеете некоторый опыт работы с AWS SDK и Golang, это руководство предоставит вам необходимую информацию и примеры кода для начала работы. Давайте погрузимся!
-
Настройка учетных данных AWS.
Прежде чем мы сможем начать выполнять вызовы API, нам необходимо настроить учетные данные AWS. aws-sdk-go-v2 предоставляет удобный способ настройки учетных данных с использованием переменных среды, общих файлов конфигурации или ролей IAM. Вот пример настройки учетных данных с использованием переменных среды:import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/config" ) func main() { cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"), config.WithCredentialsProvider(aws.NewEnvCredentialsProvider()), ) if err != nil { panic("unable to load SDK config, " + err.Error()) } // Use the `cfg` object to make API calls } -
Выполнение простого вызова API.
Как только мы настроим учетные данные, мы сможем начать выполнять вызовы API к сервисам AWS. Давайте рассмотрим пример вызова операцииListBucketsсервиса Amazon S3:import ( "context" "fmt" "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() { cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"), config.WithCredentialsProvider(aws.NewEnvCredentialsProvider()), ) if err != nil { panic("unable to load SDK config, " + err.Error()) } client := s3.NewFromConfig(cfg) resp, err := client.ListBuckets(context.TODO(), &s3.ListBucketsInput{}) if err != nil { panic("failed to list buckets, " + err.Error()) } for _, bucket := range resp.Buckets { fmt.Println(*bucket.Name) } } -
Разбиение на страницы.
В некоторых случаях ответ от операции службы может быть разбит на страницы. aws-sdk-go-v2 предоставляет удобный способ управления нумерацией страниц с помощью поляNextToken. Вот пример разбиения на страницы результатов операцииListObjectsV2в Amazon S3:import ( "context" "fmt" "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() { cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"), config.WithCredentialsProvider(aws.NewEnvCredentialsProvider()), ) if err != nil { panic("unable to load SDK config, " + err.Error()) } client := s3.NewFromConfig(cfg) var nextToken *string for { resp, err := client.ListObjectsV2(context.TODO(), &s3.ListObjectsV2Input{ Bucket: aws.String("my-bucket"), MaxKeys: 1000, ContinuationToken: nextToken, }) if err != nil { panic("failed to list objects, " + err.Error()) } for _, object := range resp.Contents { fmt.Println(*object.Key) } if !resp.IsTruncated { break } nextToken = resp.NextContinuationToken } } -
Обработка ошибок.
При выполнении вызовов API важно правильно обрабатывать ошибки. aws-sdk-go-v2 предоставляет такие параметры обработки ошибок, как повтор неудачных запросов, регистрация ошибок и пользовательская обработка ошибок. Вот пример включения повторных попыток для операций службы:import ( "context" "fmt" "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() { cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"), config.WithCredentialsProvider(aws.NewEnvCredentialsProvider()), config.WithRetryer(func() aws.Retryer { return aws.NewStandardRetryer(func(options *aws.StandardRetryerOptions) { options.MaxAttempts = 3 }) }), ) if err != nil { panic("unable to load SDK config, " + err.Error()) } client := s3.NewFromConfig(cfg) resp, err := client.ListBuckets(context.TODO(), &s3.ListBucketsInput{}) if err != nil { panic("failed to list buckets, " + err.Error()) } for _, bucket := range resp.Buckets { fmt.Println(*bucket.Name) } }
В этой статье мы рассмотрели основы вызова операций службы с использованием библиотеки aws-sdk-go-v2. Мы обсудили настройку учетных данных AWS, выполнение простых вызовов API, обработку нумерации страниц и обработку ошибок. Вооружившись этими примерами, вы теперь можете приступить к созданию более сложных приложений с помощью AWS SDK и Golang. Приятного кодирования!