in s3plugin/s3plugin.go [226:270]
func readConfigAndStartSession(c *cli.Context) (*PluginConfig, *session.Session, error) {
configPath := c.Args().Get(0)
config, err := readAndValidatePluginConfig(configPath)
if err != nil {
return nil, nil, err
}
disableSSL := !ShouldEnableEncryption(config.Options.Encryption)
awsConfig := request.WithRetryer(aws.NewConfig(), CustomRetryer{DefaultRetryer: client.DefaultRetryer{NumMaxRetries: 10}}).
WithRegion(config.Options.Region).
WithEndpoint(config.Options.Endpoint).
WithS3ForcePathStyle(true).
WithDisableSSL(disableSSL).
WithUseDualStack(true)
// Will use default credential chain if none provided
if config.Options.AwsAccessKeyId != "" {
awsConfig = awsConfig.WithCredentials(
credentials.NewStaticCredentials(
config.Options.AwsAccessKeyId,
config.Options.AwsSecretAccessKey, ""))
}
if config.Options.HttpProxy != "" {
httpclient := &http.Client{
Transport: &http.Transport{
Proxy: func(*http.Request) (*url.URL, error) {
return url.Parse(config.Options.HttpProxy)
},
},
}
awsConfig.WithHTTPClient(httpclient)
}
sess, err := session.NewSession(awsConfig)
if err != nil {
return nil, nil, err
}
if config.Options.RemoveDuplicateBucket == "true" {
sess.Handlers.Build.PushFront(removeBucketFromPath)
}
return config, sess, nil
}