This package provides simple http.Client
creation that wraps all outgoing HTTP requests with Amazon AWS signatures using the AWS SDK for Go.
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.
Thank you to both @deoxxa and @Saikat for fixing signature issues when they arose. Without them, this would not work.
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")
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)