signed-url
签名 URL
分享链接与签名 URL
T4 有两种链接模型。控制台分享链接使用 T4 token,不需要 API 密钥。 S3 签名 URL 使用 SigV4,面向 API 客户端。
从控制台创建(token 链接)
打开存储桶 → 点击对象行上的分享图标 → 选择有效期 → 创建链接。 结果会显示在弹窗中,包含复制按钮和到期时间。
URL 形式为 https://t4.dalang.io/s/<token>。T4 只存储 token 的 SHA-256 哈希,绝不存储 token 本身。链接独立于 API 密钥:吊销或轮换密钥不会影响它。 链接在 1 小时、24 小时或 7 天后过期;如果对象被删除或重命名,链接返回 404。
S3 签名 URL
签名 URL 使用 SigV4 查询参数,为一个对象授予临时访问权限。它在 X-Amz-Expires 到期前有效,并绑定到一个 API 密钥。
从 CLI 创建
aws --endpoint-url https://t4.dalang.io \
s3 presign s3://assets/branding/logo.png --expires-in 3600
从 boto3 创建
url = s3.generate_presigned_url(
"get_object",
Params={"Bucket": "assets", "Key": "branding/logo.png"},
ExpiresIn=3600,
)
使用签名 PUT 上传
url = s3.generate_presigned_url(
"put_object",
Params={"Bucket": "assets", "Key": "uploads/photo.jpg", "ContentType": "image/jpeg"},
ExpiresIn=600,
)
# 以 Content-Type: image/jpeg 把请求体 PUT 到 url
限制与安全
X-Amz-Expires从 1 秒到 7 天(604.800 秒)。- 链接自带签名;任何持有链接的人都能在到期前读取对象。请勿公开发布。
- 控制台 token 链接独立于 API 密钥;S3 签名 URL 使用密钥签名,密钥被吊销或
轮换后会 立即失效。每次 S3 请求都应重新解析密钥;敏感数据请使用较短有效期。
- URL 绑定到签名时使用的方法和路径;修改查询参数或路径会使签名失效。