--- title: S3 series: customization hideFromIndex: true weight: 115 --- Since [v0.74.0](https://github.com/goreleaser/goreleaser/releases/tag/v0.74.0), GoReleaser supports pushing artifacts to Amazon S3 and other API-compatible block storages ([minio][] for example). [minio]: https://www.minio.io Right now, the implementation is quite simple and probably won't cover all use cases. If you need one of such use cases, please open an issue/pull request. ## Customization ```yaml # .goreleaser.yml s3: # You can have multiple s3 configs - # Bucket name (without the s3:// prefix) # Default is empty. bucket: my-bucket # AWS Region to use. # Defaults is us-east-1 region: us-east-1 # path inside the bucket. # This is parsed with the Go template engine and the following variables # are available: # - ProjectName # - Tag # - Version (Git tag without `v` prefix) # There is also a template function "time" that takes a Go time format # string to insert a formated timestamp into the release name. # Default is `{{ .ProjectName }}/{{ .Tag }}` folder: "foo/bar/{{.Version}}" # Set a custom profile to use for this s3 config. If you have multiple # profiles setup in you ~/.aws config, this shall help defining which # profile to use in which s3 bucket. # Default is empty. profile: my-profile # Endpoint allows you to set a custom endpoint, which is useful if you # want to push your artifacts to a minio server for example. # Default is AWS S3 URL. endpoint: "http://minio.foo.com" ``` ## Authentication GoReleaser will authenticate using the [same methods defined by aws-cli][auth]. You can read the [docs][auth] to find out more about it. You can also set diferent profile names for each S3 config, so you may be able to push to buckets in different accounts, for example. [auth]: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html