在 GitHub 上编辑

Amazon S3 及兼容服务器

首先使用 dvc remote add 来定义远程存储。设置一个名称和有效的 S3 URL:

$ dvc remote add -d myremote s3://<bucket>/<key>

在执行 dvc push(或需要时),DVC 将尝试使用您的 AWS CLI 配置 进行身份验证。这会读取默认的 AWS 凭证文件(如果存在)或 环境变量

AWS 用户需要以下权限:s3:ListBuckets3:GetObjects3:PutObjects3:DeleteObject

要使用 自定义认证方式 或进一步配置 DVC 远程存储,请使用 dvc remote modify 设置任何受支持的配置参数。

自定义身份验证

如果您环境中未配置 AWS CLI,想要覆盖其值,或更改认证方法,请使用这些配置选项。

需要使用 dvc remote modify --local 标志将敏感用户信息写入 Git 忽略的配置文件(.dvc/config.local),以防止通过 Git 泄露任何密钥。参见 dvc config

若要使用自定义的 AWS CLI 配置或凭证文件,或指定配置文件名称,请使用 configpathcredentialpathprofile

$ dvc remote modify --local myremote \
                    configpath 'path/to/config'
# or
$ dvc remote modify --local myremote \
                    credentialpath 'path/to/credentials'
# and (optional)
$ dvc remote modify myremote profile 'myprofile'

另一个选择是使用 AWS 访问密钥 ID(access_key_id)和密钥(secret_access_key),如有需要,还可加上 MFA 会话令牌(session_token):

$ dvc remote modify --local myremote \
                    access_key_id 'mysecret'
$ dvc remote modify --local myremote \
                    secret_access_key 'mysecret'
$ dvc remote modify --local myremote \
                    session_token 'mysecret'

S3 兼容服务器(非亚马逊)

endpointurl 参数设置为连接到 S3 兼容服务的 URL(例如 NebiusMinIOIBM Cloud Object Storage 等)。例如,我们来配置一个名为 mystoreDigitalOcean Space(相当于 S3 中的存储桶),位于 nyc3 区域:

$ dvc remote add -d myremote s3://mystore/path
$ dvc remote modify myremote endpointurl \
                    https://nyc3.digitaloceanspaces.com

也可为 S3 兼容存储设置其他任意 S3 参数。其有效性取决于各个存储平台。

更多配置参数

有关更多命令使用细节,请参阅 dvc remote modify

  • url - 修改远程位置(详见上方说明)

  • region - 特定的 AWS 区域

    $ dvc remote modify myremote region 'us-east-2'
  • read_timeout - 从连接读取数据时,抛出超时异常前的等待秒数(默认为 60 秒)

  • connect_timeout - 建立连接时,抛出超时异常前的等待秒数(默认为 60 秒)

  • listobjectstruefalse)- 是否使用 list_objects() S3 API 方法,而非默认的 list_objects_v2()。对 Ceph 和其他 S3 模拟器有用

  • use_ssltruefalse)- 是否使用 SSL。默认启用

  • ssl_verify - 是否验证 SSL 证书(truefalse),或指向自定义 CA 证书包的路径(等同于 true)。默认会使用在 AWS CLI 配置文件ca_bundle)中找到的任何证书。

    $ dvc remote modify myremote ssl_verify false
    # or
    $ dvc remote modify myremote \
                        ssl_verify 'path/to/ca_bundle.pem'
  • sseAES256aws:kms)- 要使用的服务器端加密算法。默认不启用。

    $ dvc remote modify myremote sse 'AES256'
  • sse_kms_key_id - 使用SSE-KMS时的加密密钥 ID(或别名)(参见 sse)。

  • sse_customer_key - 在使用客户提供的密钥(SSE-C)上传数据时用于加密的密钥。该值应为经过 base64 编码的 256 位密钥。

  • sse_customer_algorithm - 与 sse_customer_key 配合使用的算法。默认为 AES256

  • acl - 对象级别的访问控制列表(ACL),例如 privatepublic-read 等。默认无设置。不能与下面的 grant_ 参数一起使用。

    $ dvc remote modify myremote \
                        acl 'bucket-owner-full-control'
  • grant_read - 在对象级 ACL 上向特定被授权者授予 READ 权限。不能与 acl 一起使用。

    $ dvc remote modify myremote grant_read \
          'id=myuser,id=anotheruser'
  • grant_read_acp - 在对象级 ACL 上向特定被授权者授予 READ_ACP 权限。不能与 acl 一起使用。

  • grant_write_acp - 在对象级 ACL 上向特定被授权者授予 WRITE_ACP 权限。不能与 acl 一起使用。

  • grant_full_control - 在对象级 ACL 上向特定被授权者授予 FULL_CONTROL 权限。不能与 acl 一起使用。

  • allow_anonymous_logintruefalse)- 是否允许匿名访问。默认为 false

环境变量

如果未设置配置参数,则可通过 boto3 环境变量 设置认证和其他配置。例如:

$ dvc remote add -d myremote s3://mybucket
$ export AWS_ACCESS_KEY_ID='myid'
$ export AWS_SECRET_ACCESS_KEY='mysecret'
$ dvc push
内容

🐛 发现问题?告诉我们!或者修复它:

在 GitHub 上编辑

有疑问?加入我们的聊天,我们会为您提供帮助:

Discord 聊天