Skip to content

Latest commit

 

History

History
66 lines (47 loc) · 2.18 KB

README.md

File metadata and controls

66 lines (47 loc) · 2.18 KB

AWS Signing Client

This package provides simple http.Client creation that wraps all outgoing HTTP requests with Amazon AWS signatures using the AWS SDK for Go.

Requirements

In order to use signing graciously provided by @nicolai86 in the AWS SDK for Go, you must be using a version that has been updated since the merge of pull request #735 for the SDK (tagged release v1.2.0). Additionally, you may use the v2 sdk: https://github.com/aws/aws-sdk-go-v2.

Acknowledgements

Thank you to both @deoxxa and @Saikat for fixing signature issues when they arose. Without them, this would not work.

Usage

You can provide your own *http.Client to have any existing fields persist or your RoundTripper wrapped:

import (
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/aws/signer/v4"
	"github.com/sha1sum/aws_signing_client"
)

var credentials *credentials.Credentials
// ... set credentials ...
var signer = v4.NewSigner(credentials)

var myClient *http.Client
// ...

// *v4.Signer, *http.Client, AWS service abbreviation, AWS region
var awsClient = aws_signing_client.New(signer, myClient, "es", "us-east-1")

... or you can simply have the default client with default client and transport created for you:

import (
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/aws/signer/v4"
	"github.com/sha1sum/aws_signing_client"
)

var credentials *credentials.Credentials
// ... set credentials ...
var signer = v4.NewSigner(credentials)

// aws_signing_client.AWSSigner, *http.Client, AWS service abbreviation, AWS region
var awsClient = aws_signing_client.New(signer, nil, "es", "us-east-1")

v2 aws sdk

Using aws sdk v2 is as simple as changing the package and configuring with CredentialsProvider.

import (
	"https://github.com/aws/aws-sdk-go-v2/aws"
	"https://github.com/aws/aws-sdk-go-v2/aws/signer/v4"
)

var credsProvider aws.CredentialsProvider
// ... set credentials ...
var signer = v4.NewSigner(credsProvider)