Home Knowledge base Skyline Cloud S3 兼容对象存储入门指南 KNOWLEDGE BASE

S3 兼容对象存储入门指南

了解 S3 兼容对象存储的工作原理,以及如何在 Skyline Cloud 上创建存储桶、生成访问密钥、配置 AWS CLI、上传与同步文件、生成预签名 URL,并将其接入您的应用——所有数据均保存在沙特境内。

S3 兼容对象存储入门指南

什么是 S3 兼容对象存储?

对象存储将您的文件作为一个个独立的 对象 保存在称为 存储桶(bucket) 的扁平容器中,而不是采用传统磁盘所使用的文件夹与块(folders-and-blocks)模型。每个对象都包含其数据、一个唯一的键(即它的名称)以及元数据。您可以通过 HTTP,使用 Amazon S3 API 来访问它——这是数千种工具、SDK 和备份软件早已支持的事实标准。

由于 Skyline Cloud 对象存储是 S3 兼容 的,凡是能与 Amazon S3 协作的工具——AWS CLI、s3cmdrclone、MinIO 客户端,Laravel/Django/Node 的 SDK、Veeam,或者您 CMS 的媒体插件——在这里同样可以使用。区别在于您的数据字节实际存放在哪里:境内(沙特王国境内),这让您符合 PDPL 数据驻留要求,并能在您自己的时区获得讲阿拉伯语的支持。

何时使用对象存储(以及何时不该用)

适合使用对象存储

适合使用块/磁盘存储

备份、归档、快照

需要低延迟随机 I/O 的数据库

静态资源:图片、视频、PDF

操作系统 / 启动卷

Web/移动应用中的用户上传内容

需要 mmap 或 POSIX 文件系统的应用

数据湖、日志、大型非结构化数据集

期望挂载磁盘的软件

对象存储可扩展至数十亿个对象,每 GB 成本低廉且持久可靠,并通过 URL 访问——但它 不是 文件系统。您无法 cd 进入其中,也无法在其上运行数据库。

第 1 步:创建存储桶

在您 注册 Skyline Cloud 后,打开控制台的 Object Storage(对象存储) 部分并创建一个存储桶。

事先需要了解的几条规则:

  • 存储桶名称在该端点(endpoint)内全局唯一,并且必须符合 DNS 规范:仅限小写字母、数字和连字符;长度 3–63 个字符;不允许下划线或大写字母。示例:acme-app-uploads
  • 默认选择 Private(私有) 访问权限。仅当您打算直接在 Web 上提供对象时(例如,CDN 后面的一个公开图片存储桶),才将对象设为公开。
  • 从存储桶详情中记下您的 端点 URL(endpoint URL)区域(region)——使用 CLI 时这两项都会用到。

第 2 步:生成访问密钥

S3 使用一对密钥进行身份验证,而不是用户名和密码:

  • Access Key ID(访问密钥 ID)——属于较为公开的标识符。
  • Secret Access Key(私有访问密钥)——仅显示一次。请立即复制并将其保存在密码管理器或密钥保险库中。

在控制台的 Access Keys(访问密钥) 区域生成这对密钥。请遵循最小权限原则:为每个应用或环境(预发布 vs. 生产)创建独立的密钥,这样您可以吊销其中一个而不会影响其他密钥。切勿将密钥提交到 Git,也不要将其粘贴到客户端代码中。

第 3 步:配置 AWS CLI

AWS CLI 是验证一切正常运行的最快方式。安装它,然后创建一个命名配置文件(profile),以免与任何真实的 AWS 配置冲突:

# Install (Linux/macOS)
pip install awscli   # or: brew install awscli

aws configure --profile skyline
# AWS Access Key ID     [None]: <YOUR_ACCESS_KEY_ID>
# AWS Secret Access Key [None]: <YOUR_SECRET_ACCESS_KEY>
# Default region name   [None]: <YOUR_REGION>
# Default output format [None]: json

之后每条命令都通过 --endpoint-url 和该配置文件指向您的 Skyline 端点:

# List your buckets
aws s3 ls --profile skyline \
  --endpoint-url https://<YOUR_ENDPOINT>

# List objects in one bucket
aws s3 ls s3://acme-app-uploads --profile skyline \
  --endpoint-url https://<YOUR_ENDPOINT>

提示:导出 AWS_PROFILE=skyline 并在 shell 中设置端点,这样您就可以省略这些参数。请将 <YOUR_ENDPOINT><YOUR_REGION> 替换为存储桶详情中的实际值。

第 4 步:上传、下载与同步

EP="--endpoint-url https://<YOUR_ENDPOINT> --profile skyline"

# Upload one file
aws s3 cp ./logo.png s3://acme-app-uploads/logo.png $EP

# Download it back
aws s3 cp s3://acme-app-uploads/logo.png ./logo-copy.png $EP

# Sync a whole local directory to a bucket prefix
aws s3 sync ./public/assets s3://acme-app-uploads/assets $EP

# Delete an object
aws s3 rm s3://acme-app-uploads/old.zip $EP

aws s3 sync 只传输发生变化的文件,因此非常适合增量备份和部署流水线。

更喜欢用 s3cmd

s3cmd --configure   # set host_base / host_bucket to <YOUR_ENDPOINT>
s3cmd put ./report.pdf s3://acme-app-uploads/report.pdf
s3cmd ls s3://acme-app-uploads

第 5 步:使用预签名 URL 分享文件

要在不将整个存储桶公开的情况下,授予对某个私有对象的临时、限时访问权限,请生成一个预签名 URL(presigned URL):

aws s3 presign s3://acme-app-uploads/report.pdf \
  --expires-in 3600 \
  --endpoint-url https://<YOUR_ENDPOINT> --profile skyline

该链接有效期为一小时,随后即失效。对于发票下载、一次性交付链接以及面向特定用户的媒体内容,这是正确的做法——远比将存储桶切换为公开更安全。

第 6 步:将其接入您的应用

让应用的 S3 SDK 指向 Skyline 端点,而非 AWS。以 Laravel 为例,在 config/filesystems.php 中配置 s3 磁盘:

's3' => [
    'driver'   => 's3',
    'key'      => env('AWS_ACCESS_KEY_ID'),
    'secret'   => env('AWS_SECRET_ACCESS_KEY'),
    'region'   => env('AWS_DEFAULT_REGION'),
    'bucket'   => env('AWS_BUCKET'),
    'endpoint' => env('AWS_ENDPOINT'), // https://<YOUR_ENDPOINT>
    'use_path_style_endpoint' => true,
],

use_path_style_endpoint(或 AWS SDK for JavaScript 中等效的 forcePathStyle)设为 true,使请求采用 endpoint/bucket/key 形式,而非虚拟主机式子域名。完成之后,Storage::disk('s3')->put(...) 便会直接写入您位于境内的存储桶。

最佳实践

  • 生命周期规则(Lifecycle rules)——自动让旧对象(日志、临时上传文件)过期或降级到更低存储层级,以控制成本。
  • 版本控制(Versioning)——对保存不可替代数据的存储桶保持开启,这样意外覆盖也能恢复。
  • 服务端加密(Server-side encryption)——对 PDPL 下的任何敏感数据进行静态加密。
  • 作用域受限的密钥(Scoped keys)——每个服务一个密钥;定期轮换并吊销。

对象存储能与您技术栈的其余部分天然契合:在您的网站运行于 Skyline 云托管 的同时,从存储桶提供资源服务;并将您的 企业邮箱 和数据库的备份保存在另一个启用版本控制的独立存储桶中。如需更深入的境内对象存储指南,请参阅我们的 对象存储资源中心

几分钟即可开始

启动一个 S3 兼容存储桶,数据保存在沙特境内,价格透明,并提供本地阿拉伯语支持。创建您的免费 Skyline Cloud 账户,今天就创建您的第一个存储桶吧。

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

See author profile
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Skyline Cloud for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.