Я пробовал несколько разных способов указания учетных данных (файл учетных данных, переменные среды, установка переменных env в программе golang), но все равно получаю ту же ошибку. но когда я использую их в Python, все работает без проблем. Я читал подобные случаи, но ни одно из решений мне не помогло.
Ниже приведен мой код.
основной пакет
импорт (
"fmt"
Код: Выделить всё
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
type S3Client struct {
строка URL
строка accessKey
строка secretKey
bucketName string
//httpClient *http.Client
}
func NewClient(endpointUrl, accessKey, secretKey, BucketName string) (S3Client, ошибка) {
Код: Выделить всё
justS3 := S3Client{
url: endpointUrl,
accessKey: accessKey,
secretKey: secretKey,
bucketName: bucketName,
}
return justS3, nil
Код: Выделить всё
creds := credentials.NewStaticCredentials(c.accessKey, c.secretKey, "")
sess, err := session.NewSession(&aws.Config{
Credentials: creds,
Endpoint: aws.String(c.url),
Region: aws.String("us-east-01"),
DisableSSL: aws.Bool(true),
})
if err != nil {
fmt.Printf("Unable to login, due to error %v", err)
}
//create an s3 service client
svc := s3.New(sess)
//get list of all items
resp, err := svc.ListObjectsV2(&s3.ListObjectsV2Input{Bucket:
aws.String(c.bucketName)})
if err != nil {
fmt.Printf("unable to list items in bucket %q, %v,", c.bucketName, err)
}
for _, item := range resp.Contents {
fmt.Printf("Below is a list of Items under the bucket %s .\n", c.bucketName)
fmt.Print("*********************************")
fmt.Println("Name: ", item.Key)
fmt.Print("Last Modified", item.LastModified)
fmt.Print("Size", item.Size)
fmt.Println("")
}
основной пакет
импорт (
"fmt"
)
func main() {
Код: Выделить всё
client, err := NewClient("", "Accesskey", "SecretKey", "bucketname")
if err != nil {
fmt.Println("The logging has failed")
}
client.ListBucketContents()
Подробнее здесь: https://stackoverflow.com/questions/792 ... tch-the-si