S3

v0.74.0起,GoReleaser 支持将存档推送到 Amazon S3 和其他 API 兼容的云存储(例如minio).

现在,实现非常简单,也可能不会涵盖所有用例。如果您需要其中一个用例,请打开问题/请求.

定制

# .goreleaser.yml
s3:
  # 你可以有多个s3配置
  - # Bucket名称(不带 s3:// 前缀)
    # 默认为空。
    bucket: my-bucket
    # AWS区域使用。
    # 默认值为 us-east-1
    region: us-east-1
    # Bucket内 路径/名称 的模板。
    # 默认为`{{ .ProjectName }}/{{ .Tag }}`
    folder: 'foo/bar/{{.Version}}'
    # 如果你有多个profiles在〜/.aws配置中, 
    # 设置用于此s3配置的自定义配置文件。这将有助于定义哪个
    # s3桶使用哪个配置文件。
    # 默认为空。
    profile: my-profile
    # Endpoint允许您设置自定义端点,这对
    # 例如,想要将您的存档推送到minio服务器很有用。
    # 默认为AWS S3 URL。
    endpoint: 'http://minio.foo.com'
    # 使用指定的固定ACL,设置对象的ACL。
    # 默认为私有。
    acl: public-read

了解有关命名模板引擎的更多信息.了解有关acl的更多信息.

认证

GoReleaser 使用由 aws-cli 定义的相同方法进行身份验证.你可以看看其文档了解更多信息.

目前它支持身份验证:

  • 一个是EnvProvider,它从正在运行的进程的环境变量中检索凭据。环境凭据永不过期.使用的环境变量:

    • 访问密钥ID-Access Key ID: AWS_ACCESS_KEY_IDAWS_ACCESS_KEY

    • Secret Access Key: AWS_SECRET_ACCESS_KEYAWS_SECRET_KEY

  • 一个是SharedCredentialsProvider,它从当前用户的主目录中检索凭据,并跟踪这些凭据是否已过期.

配置文件 ini 文件示例:$HOME/.aws/credentials

  • 还有具有启用 SharedConfigStateAssumeRoleTokenProvider,它使用 MFA 提示 stdin 上的令牌代码.去其会议文档了解更多细节.

您还可以为每个 S3 配置设置不同的配置文件名称,例如,您可以将其推送到不同帐户中的Bucket.