Skip to content

Instantly share code, notes, and snippets.

@jakexks
Created August 2, 2016 08:56
Show Gist options
  • Save jakexks/2f876697dfca1fe15b92f7bb6032780d to your computer and use it in GitHub Desktop.
Save jakexks/2f876697dfca1fe15b92f7bb6032780d to your computer and use it in GitHub Desktop.
Proxy in AWS SDK GO
package main
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"net/http"
"net/url"
)
func main() {
httpclient := &http.Client{
Transport: &http.Transport{
Proxy: func(*http.Request) (*url.URL, error) {
return url.Parse("http://user:pass@proxy:8080") // Or your own implementation that decides a proxy based on the URL in the request
},
},
}
s := session.New(&aws.Config{
Region: aws.String("eu-west-1"),
HTTPClient: httpclient,
})
}
@eduardonunesp
Copy link

Use this if you want to send files to fakes3

package main

import (
	"bytes"
	"io/ioutil"
	"log"
	"net/http"
	"net/url"
	"os"
	"testing"

	"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"
	"github.com/aws/aws-sdk-go/service/s3/s3manager"
)

func TestE2ERequest(t *testing.T) {
	fakeS3Host, found := os.LookupEnv("FAKE_S3_HOST")

	if !found {
		fakeS3Host = "127.0.0.1"
	}

	httpclient := &http.Client{
		Transport: &http.Transport{
			Proxy: func(*http.Request) (*url.URL, error) {
				return url.Parse("http://" + fakeS3Host + ":4567")
			},
		},
	}

	sess, err := session.NewSession(&aws.Config{
		Region:      aws.String("us-west-2"),
		Endpoint:    aws.String("http://" + fakeS3Host + ":4567"),
		Credentials: credentials.NewStaticCredentials("123", "123", "123"),
		HTTPClient:  httpclient,
	})

	bucketName := "fakes3"
	keyName := "myfile.pdf"
	file, _ := ioutil.ReadFile("fixtures/cheatsheet.pdf")

	buf := bytes.NewBuffer(file)

	// S3 service client the Upload manager will use.
	s3Svc := s3.New(sess)
	uploader := s3manager.NewUploaderWithClient(s3Svc)

	upParams := &s3manager.UploadInput{
		Bucket: &bucketName,
		Key:    &keyName,
		Body:   buf,
	}

	result, err := uploader.Upload(upParams)

	log.Println(result, err)
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment