func NewWithSNS(awsSNS snsiface.SNSAPI) *Sender {
	return &Sender{
		awsSNS:            awsSNS,
		MessageAttributes: make(map[string]*sns.MessageAttributeValue),
	}
}
NewWithSNS initialise sender with custom SNS
package sms
import (
	"fmt"
	"strings"
	"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/sns"
	"github.com/aws/aws-sdk-go/service/sns/snsiface"
	"github.com/pkg/errors"
	log "github.com/sirupsen/logrus"
)
type Sender struct {
	awsSNS            snsiface.SNSAPI
	MessageAttributes map[string]*sns.MessageAttributeValue
}
func New(config Config) *Sender {
	awsConfig := aws.NewConfig().
		WithCredentials(credentials.NewStaticCredentials(
			config.AWSAccessKey,
			config.AWSSecretAccessKey, "")).
		WithRegion(config.AWSRegion)
	awsSession, err := session.NewSession(awsConfig)
	if err != nil {
		log.WithError(err).Fatal("failed to initialise a new AWS session")
	}
	return &Sender{
		awsSNS:            sns.New(awsSession, awsConfig),
		MessageAttributes: GetMessageAttributes(&config),
	}
}