Go Connecting to S3

Jorge Olivero :

Working on learning Go, and I am writing a component to manage pictures.

I've been looking at the s3 library here: https://godoc.org/launchpad.net/goamz/s3#ACL

In Node, I use the Knox client and connect to my bucket like this:

    var bucket = knox.createClient({
        key: config.get('AWS_KEY'),
        secret: config.get('AWS_SECRET'),
        bucket: "bucketName"
    });

In the Go s3 library I see all of the functions I need to work with the s3 bucket, but I can't find the connect function - similar to this one above.

So far, I've found this in the Docs:

    type Auth struct {
        AccessKey, SecretKey string
    }

And it seems like I need to call this function:

    func EnvAuth() (auth Auth, err error)

This is the EnvAuth function:

    func EnvAuth() (auth Auth, err error) {
        auth.AccessKey = os.Getenv("AWS_ACCESS_KEY_ID")
        auth.SecretKey = os.Getenv("AWS_SECRET_ACCESS_KEY")
        // We fallback to EC2_ env variables if the AWS_ variants are not used.
        if auth.AccessKey == "" && auth.SecretKey == "" {
            auth.AccessKey = os.Getenv("EC2_ACCESS_KEY")
            auth.SecretKey = os.Getenv("EC2_SECRET_KEY")
        }
        if auth.AccessKey == "" {
            err = errors.New("AWS_ACCESS_KEY_ID not found in environment")
        }
        if auth.SecretKey == "" {
            err = errors.New("AWS_SECRET_ACCESS_KEY not found in environment")
        }
        return
     }

In the S3 docs, I see all of the things that I need. I am just unsure about how I use the library, this is the first time I use a Go library.

A guide on connecting to AWS/S3, then making a delete call would be very helpful!

Many thanks :)

topskip :

It's probably easier than you've thought. This sample code lists a bucket. You have to use your credentials and a bucket name, of course...

package main

import (
    "fmt"
    "launchpad.net/goamz/aws"
    "launchpad.net/goamz/s3"
    "log"
)

func main() {
    auth := aws.Auth{
        AccessKey: "ASDFASDFASDFASDK",
        SecretKey: "DSFSDFDWESDADSFASDFADFDSFASDF",
    }
    euwest := aws.EUWest

    connection := s3.New(auth, euwest)
    mybucket := connection.Bucket("mytotallysecretbucket")
    res, err := mybucket.List("", "", "", 1000)
    if err != nil {
        log.Fatal(err)
    }
    for _, v := range res.Contents {
        fmt.Println(v.Key)
    }
}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

Connecting to specific path in s3

connecting postgresql to go

Connecting to Oracle DB in Go

Connecting Athena and S3 in same Cloudformation Stack

Spark streaming connecting to S3 gives socket timeout

Connecting to S3 Athena in R via JDBC

Connecting Apache Drill to Amazon S3 using DefaultAWSCredentialsProviderChain

AWS S3 Bucket Access when connecting to Lumen

deploying Go binary on S3

Connecting to Go RPC using curl

How to specify credentials when connecting to boto3 S3?

Connecting to google cloud datastore using go

Angular 8 CORS when connecting to Go Gin

Connecting go and postgres with docker-compose

Connecting PC to TV screen; Both go black

How to force S3 requests to go through cloudfront

Go proxy to S3 files works for localhost but not in production

AWS S3 cp failing to go through

Can s3 prefix be deleted on go-sdk?

Send go test coverage output to stdout - send it to S3

Stream file upload to AWS S3 using go

Go - Download S3 file under a prefix

Boto [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed while connecting to S3

Connecting to S3 Using AWS SDK v2 (iOS)

What is the equivalent of connecting to google cloud storage(gcs) like in aws s3 using s3fs?

How do I fix this AWS Error while connecting AWS EC2 Server and AWS S3 Storage Files (InvalidAccessKeyId)?

Having trouble connecting to Alexa Voice Service with http/2 using Go

Connecting to CloudSQL from App Engine (Second Generation CloudSQL) GO

go-mysql connection refused when connecting to kubernetes mysql service