Amazon S3 及兼容服务器
首先使用 dvc remote add
来定义远程存储。设置一个名称和有效的 S3 URL:
$ dvc remote add -d myremote s3://<bucket>/<key>
在执行 dvc push
(或需要时),DVC 将尝试使用您的 AWS CLI 配置 进行身份验证。这会读取默认的 AWS 凭证文件(如果存在)或 环境变量。
AWS 用户需要以下权限:s3:ListBucket
、s3:GetObject
、s3:PutObject
、s3:DeleteObject
。
要使用 自定义认证方式 或进一步配置 DVC 远程存储,请使用 dvc remote modify
设置任何受支持的配置参数。
自定义身份验证
如果您环境中未配置 AWS CLI,想要覆盖其值,或更改认证方法,请使用这些配置选项。
需要使用 dvc remote modify --local
标志将敏感用户信息写入 Git 忽略的配置文件(.dvc/config.local
),以防止通过 Git 泄露任何密钥。参见 dvc config
。
若要使用自定义的 AWS CLI 配置或凭证文件,或指定配置文件名称,请使用 configpath
、credentialpath
或 profile
:
$ 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(例如 Nebius、MinIO、IBM Cloud Object Storage 等)。例如,我们来配置一个名为 mystore
的 DigitalOcean 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 秒) -
listobjects
(true
或false
)- 是否使用list_objects()
S3 API 方法,而非默认的list_objects_v2()
。对 Ceph 和其他 S3 模拟器有用 -
use_ssl
(true
或false
)- 是否使用 SSL。默认启用 -
ssl_verify
- 是否验证 SSL 证书(true
或false
),或指向自定义 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'
-
sse
(AES256
或aws: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),例如private
、public-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_login
(true
或false
)- 是否允许匿名访问。默认为false
。
环境变量
如果未设置配置参数,则可通过 boto3
环境变量 设置认证和其他配置。例如:
$ dvc remote add -d myremote s3://mybucket
$ export AWS_ACCESS_KEY_ID='myid'
$ export AWS_SECRET_ACCESS_KEY='mysecret'
$ dvc push