Программа пойдет для создания С3 presigned положите url


Я сделал простой программы для создания С3 presigned положите url:

package main

import (
    "fmt"
    "log"
    "time"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3"
    "github.com/kelseyhightower/envconfig"
)

type Configuration struct {
  Bucket string
}

func main() {
    var configuration Configuration
    // Add Bucket to configuration from environment variable
    // e.g:
    //    CONFIGURATION_BUCKET -> configuration.Bucket
    err := envconfig.Process("configuration", &configuration)
    if err != nil {
        log.Fatal(err.Error())
    }

    sess := session.Must(session.NewSessionWithOptions(session.Options{
      SharedConfigState: session.SharedConfigEnable,
    }))
    svc := s3.New(sess)

    req, _ := svc.PutObjectRequest(&s3.PutObjectInput{
      Bucket: aws.String(configuration.Bucket),
      Key: aws.String("default"),
    })

    url, err := req.Presign(15 * time.Minute)
    if err != nil {
        log.Fatal(err.Error())
    }

    fmt.Println("Url is", url)
}

Я хотел бы попросить помощи, чтобы превратиться в более модульный код / идиоматические. Это мой первый код, написанный на Go, и у меня в основном JavaScript в фоновом режиме, так что я привык использовать асинхронное программирование с использованием обратных вызовов (теперь обещает, асинхронный/ждут), а в Go вещи очень разные (нет классов, например).



151
1
задан 20 февраля 2018 в 10:02 Источник Поделиться
Комментарии