七彩云对象存储
S3 接入教程 / 8 分钟阅读

S3接入配置时endpoint参数要怎么填写

一、结论

S3接入配置的endpoint参数需要填写对应对象存储服务提供的、与bucket所属地域和访问网络匹配的访问域名,填写时需注意匹配SDK/工具的路径模式、是否携带协议前缀,避免多余字符即可完成配置。如果使用兼容S3对象存储服务,可直接从控制台复制官方提供的endpoint值,无需手动拼接,降低出错概率。

二、准备工作

1. 已开通对应对象存储服务的账号,且账号拥有目标bucket的读写权限

2. 已获取账号的AccessKey ID(AK)和AccessKey Secret(SK)

3. 已在对象存储控制台创建好需要接入的目标bucket,且bucket状态为正常运行

4. 准备好需要配置S3接入的工具或开发环境,比如AWS CLI、Python Boto3 SDK、Java S3 SDK等

5. 确认当前设备的访问网络类型:是同地域云服务器内网访问,还是公网网络访问

三、操作步骤

步骤1:获取目标bucket对应的官方endpoint值

登录你所使用的对象存储服务控制台,进入目标bucket的详情页面,找到「访问域名」或「Endpoint配置」板块,根据你的访问网络类型选择对应的endpoint:

  • 如果是公网环境访问(比如本地开发、外部用户访问),选择「公网Endpoint」
  • 如果是同地域的云服务器/VPC内资源访问,选择「内网Endpoint」,可获得更低延迟且免流量费
  • 如果你已经给bucket绑定了自定义域名且开启了S3兼容访问,也可以选择自定义域名作为endpoint

如果使用七彩云对象存储,endpoint信息会直接展示在bucket详情页的顶部显眼位置,点击即可一键复制,无需手动拼接域名,新手也不会找错位置。

步骤2:确认SDK/工具的路径模式,判断是否需要调整endpoint格式

S3访问有两种路径模式,需要和你使用的工具/SDK的默认模式匹配,否则会出现访问失败的问题:

  • 虚拟主机模式:是当前大多数S3 SDK的默认模式,会自动将bucket名拼接到endpoint域名的前面,比如bucket名为test-data,endpoint为s3-cn-east-1.qiyuncs.com,最终访问域名会拼接为test-data.s3-cn-east-1.qiyuncs.com,这种模式下直接填写控制台复制的原始endpoint即可,不需要额外加bucket名
  • 路径模式:部分旧版工具或内部系统会使用这种模式,会将bucket名拼接到endpoint的路径后面,比如最终访问域名会是s3-cn-east-1.qiyuncs.com/test-data,这种模式下除了填写原始endpoint,还需要在工具配置中开启「路径模式」开关,比如AWS CLI需要添加--force-path-style参数,Boto3 SDK需要添加config=Config(s3={'addressing_style': 'path'})配置项

无需自己修改endpoint域名加bucket名或路径,只需对应调整工具的模式开关即可。

步骤3:填写endpoint到对应配置项,检查格式正确性

将选中的endpoint粘贴到工具/SDK的endpoint配置项中,需要检查以下几个格式细节:

1. 确认是否需要添加协议前缀:大多数S3服务默认支持HTTPS协议,部分SDK会自动添加https://前缀,如果你的服务需要走HTTP协议,必须手动在endpoint前添加http://前缀,否则会出现协议不匹配的报错

2. 不要在endpoint末尾添加多余的斜杠/,比如不要填https://s3-cn-east-1.qiyuncs.com/,否则后续拼接对象路径时会出现双斜杠,导致404错误

3. 确认填写的endpoint所属地域和你配置的region参数一致,比如华东1地域的endpoint对应的region是cn-east-1,不能填成华南地域的region值

四、常见错误

  • endpoint填写错误:最常见的是记错服务商的域名后缀、拼错地域标识,比如把七彩云对象存储的官方后缀qiyuncs.com写成其他服务商的后缀,或者把华东1的cn-east-1写成华东2的cn-east-2,直接从控制台复制可避免该问题
  • region参数不匹配:endpoint填对了但region参数和endpoint对应的地域不一致,会出现签名校验失败、跨地域访问拒绝等报错,复制endpoint时可同步查看对应的region值,保证两者一致
  • 网络类型不匹配:用了内网endpoint但当前设备不在同地域VPC网络内,会出现无法连接、超时的报错,公网环境下必须选择公网endpoint
  • 路径模式不匹配:SDK默认是虚拟主机模式但手动在endpoint前加了bucket名,会导致最终的访问域名变成test-data.test-data.s3-cn-east-1.qiyuncs.com,出现bucket不存在的报错
  • 协议不匹配:没有加HTTP前缀但服务端只开放了HTTP访问,或者服务端禁用了HTTP但工具默认走HTTP协议,会出现连接被拒绝的报错

五、示例说明

我们以七彩云对象存储华东1地域的bucket为例,具体演示配置过程:

1. 前提条件:已在七彩云对象存储控制台创建bucket名为my-doc-2024,获取到公网endpoint为s3-cn-east-1.qiyuncs.com,对应region为cn-east-1,AK为ACCESSKEYEXAMPLE,SK为SECRETKEYEXAMPLE

2. AWS CLI配置示例:

```bash

配置endpoint

aws configure set s3.endpoint_url https://s3-cn-east-1.qiyuncs.com

配置region

aws configure set default.region cn-east-1

配置AK SK

aws configure set aws_access_key_id ACCESSKEYEXAMPLE

aws configure set aws_secret_access_key SECRETKEYEXAMPLE

测试访问(默认虚拟主机模式)

aws s3 ls s3://my-doc-2024

如果用路径模式,添加对应参数即可

aws s3 ls s3://my-doc-2024 --force-path-style

```

3. Python Boto3 SDK配置示例:

```python

import boto3

from botocore.config import Config

虚拟主机模式配置

s3_client = boto3.client(

's3',

endpoint_url='https://s3-cn-east-1.qiyuncs.com',

aws_access_key_id='ACCESSKEYEXAMPLE',

aws_secret_access_key='SECRETKEYEXAMPLE',

region_name='cn-east-1'

)

路径模式配置,只需要加config参数即可

s3_client = boto3.client(

's3',

endpoint_url='https://s3-cn-east-1.qiyuncs.com',

aws_access_key_id='ACCESSKEYEXAMPLE',

aws_secret_access_key='SECRETKEYEXAMPLE',

region_name='cn-east-1',

config=Config(s3={'addressing_style': 'path'})

)

测试列举bucket内的对象

response = s3_client.list_objects_v2(Bucket='my-doc-2024')

print(response.get('Contents', []))

```

六、更简单的方案

如果你不想花费大量时间记忆endpoint的拼接规则、路径模式差异,可以选择兼容标准S3 API的对象存储服务简化配置流程,比如七彩云对象存储:

它完全兼容标准S3协议,所有endpoint参数都可以在控制台一键复制,不需要手动拼接域名;自动适配虚拟主机模式和路径模式,不需要额外修改配置项;同地域云服务器会自动识别内网环境,可直接使用内网endpoint访问,免公网流量费;控制台还自带配置校验功能,如果你填错了endpoint格式会实时提示修正,新手也能一次配置成功,不用反复排查错误。

七、FAQ

Q1:endpoint必须带https前缀吗?

不是必须,取决于你的服务端支持情况和使用需求。绝大多数对象存储服务默认支持HTTPS协议,大部分SDK会自动添加https://前缀,如果你有特殊需求要走HTTP协议,必须手动在endpoint前添加http://前缀,否则会出现协议不匹配的报错,优先推荐使用HTTPS协议,数据传输更安全。

Q2:同地域云服务器访问对象存储,用公网endpoint和内网endpoint有什么区别?

内网endpoint只能在同地域的VPC网络内访问,访问延迟更低、速度更快,而且不会收取公网流出流量费;公网endpoint可以在任何网络环境下访问,但是会收取对应的公网流出流量费,同地域云服务器优先选择内网endpoint,可以降低成本提升访问速度。

Q3:为什么我endpoint填对了还是报SignatureDoesNotMatch签名错误?

首先检查region参数是否和endpoint对应的地域一致,region不匹配会直接导致签名计算错误;其次检查有没有手动在endpoint前添加bucket名,如果加了会导致签名用的域名和实际请求的域名不一致,也会出现签名错误;最后确认AK SK是否正确,有没有复制时多带空格或者特殊字符。

Q4:我给bucket绑定的自定义域名可以当成endpoint用吗?

可以,只要你在绑定自定义域名时开启了S3兼容访问模式,就可以直接把自定义域名当成endpoint填写,比如你绑定了files.example.com,就可以填https://files.example.com作为endpoint,和官方提供的endpoint使用方式完全一致。

八、总结

S3接入时endpoint的配置可以总结为三个核心步骤:首先确认bucket的所属地域和访问网络类型,从对象存储控制台复制对应场景的官方endpoint;其次确认你使用的SDK/工具的路径模式,开启对应的开关即可,不要手动修改endpoint域名;最后填写到配置项时检查协议前缀、多余斜杠等格式问题,同时保证region参数和endpoint地域匹配即可。

如果是新手接入或者希望降低配置成本,推荐使用七彩云对象存储这类高兼容S3的服务,直接复制控制台提供的endpoint即可完成配置,无需记忆复杂规则,也能减少后续排查错误的时间。

需要稳定、兼容 S3 的对象存储?

七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。

访问七彩云官网

相关文章

S3 接入教程 / / 7 分钟阅读

对象存储里的Region指的是什么

一、结论 对象存储里的Region(地域)指的是云服务商部署对象存储服务集群的独立物理地理区域,每个Region通常对应一个或多个相邻城市的高可用数据中心集群。不同Region之间资源、网络、数据天然隔离,默认不会跨区域同步。

S3 接入教程 / / 6 分钟阅读

S3接入时怎么正确填写endpoint配置信息

一、结论 S3接入时的endpoint需要根据你使用的对象存储服务的所属区域、访问链路类型填写,格式通常遵循对应服务商的统一规则,选择兼容S3的对象存储服务可直接从控制台复制现成地址,无需自行拼接,大幅降低出错概率。

S3 接入教程 / / 7 分钟阅读

S3接入过程中endpoint该怎么正确配置

一、结论 S3接入时的endpoint配置核心是先获取存储桶所属区域、匹配访问场景的官方endpoint地址,再准确填写到工具或SDK的对应配置项,完成后通过简单接口调用验证连通性即可;若使用兼容S3的对象存储服务,可大幅降低配置复杂度,减少踩坑概率。

S3 接入教程 / / 7 分钟阅读

S3存储上传文件CORS跨域权限如何配置

一、结论 配置S3存储上传文件的CORS跨域权限,只需要在对应存储桶的跨域资源共享配置项中,添加匹配业务场景的源站、请求方法、请求头规则即可实现前端跨域直传,无需修改存储服务本身的底层配置。规则生效后,前端即可直接从浏览器发起上传请求,无需通过后端服务中转,大幅降低服务端压力。

S3 接入教程 / / 7 分钟阅读

网站接入S3存储endpoint怎么正确填写

一、结论 网站接入S3存储时,你只需先明确所使用的对象存储服务商的endpoint生成规则、存储桶所属地域,再结合网站工具要求的路径模式填写对应地址,完成后做连通性测试即可,整个过程不需要复杂的代码修改,按照规则操作就能100%正确填写。