Merge pull request #1086 from kamsz/iam

Add support for IAM instance profile
This commit is contained in:
Alexander Neumann 2017-07-05 20:53:31 +02:00
commit 80f0303b21

View file

@ -14,6 +14,7 @@ import (
"restic/errors" "restic/errors"
"github.com/minio/minio-go" "github.com/minio/minio-go"
"github.com/minio/minio-go/pkg/credentials"
"restic/debug" "restic/debug"
) )
@ -38,9 +39,24 @@ func open(cfg Config) (*Backend, error) {
minio.MaxRetry = int(cfg.MaxRetries) minio.MaxRetry = int(cfg.MaxRetries)
} }
client, err := minio.New(cfg.Endpoint, cfg.KeyID, cfg.Secret, !cfg.UseHTTP) var client *minio.Client
if err != nil { var err error
return nil, errors.Wrap(err, "minio.New")
if cfg.KeyID == "" || cfg.Secret == "" {
debug.Log("key/secret not found, trying to get them from IAM")
creds := credentials.NewIAM("")
client, err = minio.NewWithCredentials(cfg.Endpoint, creds, !cfg.UseHTTP, "")
if err != nil {
return nil, errors.Wrap(err, "minio.NewWithCredentials")
}
} else {
debug.Log("key/secret found")
client, err = minio.New(cfg.Endpoint, cfg.KeyID, cfg.Secret, !cfg.UseHTTP)
if err != nil {
return nil, errors.Wrap(err, "minio.New")
}
} }
sem, err := backend.NewSemaphore(cfg.Connections) sem, err := backend.NewSemaphore(cfg.Connections)