diff --git a/pkg/buildcontext/s3.go b/pkg/buildcontext/s3.go index 5b77d9c4a9..6a2c3dc753 100644 --- a/pkg/buildcontext/s3.go +++ b/pkg/buildcontext/s3.go @@ -19,6 +19,7 @@ package buildcontext import ( "os" "path/filepath" + "strings" "github.com/GoogleContainerTools/kaniko/pkg/constants" "github.com/GoogleContainerTools/kaniko/pkg/util" @@ -36,9 +37,21 @@ type S3 struct { // UnpackTarFromBuildContext download and untar a file from s3 func (s *S3) UnpackTarFromBuildContext() (string, error) { bucket, item := util.GetBucketAndItem(s.context) - sess, err := session.NewSessionWithOptions(session.Options{ + option := session.Options{ SharedConfigState: session.SharedConfigEnable, - }) + } + endpoint := os.Getenv(constants.S3EndpointEnv) + forcePath := false + if strings.ToLower(os.Getenv(constants.S3ForcePathStyle)) == "true" { + forcePath = true + } + if endpoint != "" { + option.Config = aws.Config{ + Endpoint: aws.String(endpoint), + S3ForcePathStyle: aws.Bool(forcePath), + } + } + sess, err := session.NewSessionWithOptions(option) if err != nil { return bucket, err } diff --git a/pkg/constants/constants.go b/pkg/constants/constants.go index 0eb29cb9de..6cc3669935 100644 --- a/pkg/constants/constants.go +++ b/pkg/constants/constants.go @@ -70,6 +70,10 @@ const ( // Name of the .dockerignore file Dockerignore = ".dockerignore" + + // S3 Custom endpoint ENV name + S3EndpointEnv = "S3_ENDPOINT" + S3ForcePathStyle = "S3_FORCE_PATH_STYLE" ) // ScratchEnvVars are the default environment variables needed for a scratch image.