用途
S3 部署技能用于把本地目录(例如生成的静态站点、幻灯片等文件)上传到 AWS S3 存储桶,或任何兼容 S3 的对象存储服务(如 MinIO、阿里云 OSS、腾讯云 COS),以便进行静态网站托管和公开访问。
主要能力
- 遍历指定的源目录,按相对路径结构逐个上传文件。
- 支持通过 endpoint_url 配置非 AWS 的 S3 兼容服务。
- 根据文件扩展名为每个文件设置正确的 ContentType(例如 .html 使用 text/html、.css 使用 text/css、.png 使用 image/png),确保浏览器正确渲染。
- 在存储桶策略允许或需要 ACL 的情况下,可将对象设为公开。
- 上传完成后打印最终网站 URL。
使用方式
前置条件:确保环境中存在有效凭证:
- S3_ACCESS_KEY_ID
- S3_SECRET_ACCESS_KEY
- S3_BUCKET(可选,若作为参数提供)
- S3_REGION(可选)
- S3_ENDPOINT_URL(非 AWS 服务如 MinIO 或阿里云 OSS 时必需)
- S3_CUSTOM_DOMAIN(可选,用于覆盖生成的 URL)
确保环境中已安装 boto3,若未安装则需安装。
确定源目录(例如 slides/<ppt-name>/dist/)和目标 S3 存储桶名称。
使用随附脚本上传文件:
# 显式指定存储桶名称
uv run {baseDir}/scripts/upload_to_s3.py "slides/my-presentation/dist" "my-bucket" --prefix "presentations/my-presentation"
# 使用环境变量中的 S3_BUCKET
uv run {baseDir}/scripts/upload_to_s3.py "slides/my-presentation/dist" --prefix "presentations/my-presentation"
使用指引:
- 存储桶名称:检查环境中是否设置了 S3_BUCKET,若未设置则向用户询问 S3 存储桶名称。
- Endpoint URL:检查用户是否使用非 AWS 服务(如 MinIO 或阿里云),若是则请求或验证 endpoint_url。
- 源路径:若未指定,默认在 slides/ 目录下查找 dist 文件夹。
适用场景
- 将生成的静态网站或幻灯片上传到 S3 或兼容对象存储以供公开访问。
- 使用 MinIO、阿里云 OSS、腾讯云 COS 等 S3 兼容服务进行静态托管。
限制
资料中未提供关于收费、价格、平台限制或具体效果的信息。