# AWS-S3-Service **Repository Path**: mpos/AWS-S3-Service ## Basic Information - **Project Name**: AWS-S3-Service - **Description**: 一款小巧精简版本的 AWS-S3-Service - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-03-12 - **Last Updated**: 2026-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目简介 AWS S3 Service是一个用Go语言开发的轻量级对象存储服务,完全兼容AWS S3 API,提供了类似Amazon S3的对象存储功能。该项目支持本地部署,适用于需要私有对象存储解决方案的场景,如企业内部文件管理、开发测试环境、小型网站存储等。 # Windows 启动方法 1. 打开CMD或PowerShell 2. cd 到程序目录 3. 运行程序 ./aws-s3-service.exe # Linux 启动方法 1. 打开终端 2. cd 到程序目录 3. 给程序添加可执行权限 chmod +x ./aws-s3-service 4. 运行程序 ./aws-s3-service 或是 sudo ./aws-s3-service # WebDav 的使用与配置 1. 在配置文件 ./Data/Etc/ConFig.json 中设置 webdav.enabled 为 true 2. 重启程序 3. 如果没有开启 HTTPS 的话,需要修改本机配置(也就是你要添加网络磁盘的机器) - a. 打开注册表编辑器(按 Win + R,输入 regedit,回车。) - b. 定位到注册表项(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters) - c. 修改 BasicAuthLevel值(双击 BasicAuthLevel,将“数值数据”改为 2,点击“确定”。) - d. 重启 WebClient 服务 (按 Win + R,输入 services.msc,回车。找到 WebClient​ 服务,右键选择“重新启动”。) - e. 删除网络驱动器(net use Z: /delete) # 程序自创目录 - Data/Etc // 配置文件目录 - Data/Logs // 日志目录 - Data/Other // 其他目录(S3数据库保存目录) - Data/Tmp // 临时目录(分片上传缓存目录) # AWS CLI 命令行配置 *注意修改自己的参数 # 配置文件路径 ./Data/Etc/ConFig.json (第一次启动会自动创建,如果修改了配置需要重启程序) - aws configure set aws_access_key_id 90bebc3046dea844 - aws configure set aws_secret_access_key b3aed976cccc793b4591d8d9d61cad83 - aws configure set region cn-east-1 - aws configure set endpoint_url http://localhost:9000 # 桶操作(带 * 为程序已支持命令) - aws s3api create-bucket --bucket mybucket (创建桶)* - aws s3 mb s3://mybucket (创建桶,桶只能以小写字母开头 不能包含特殊字符)* - aws s3 ls (列出所有桶)* - aws s3 ls s3://mybucket (列出桶中的所有对象)* - aws s3 ls s3://mybucket/ --recursive (递归列出桶中的所有对象)* - aws s3 rb s3://mybucket (删除桶,如果桶里包含对象,会报错。空子目录不包括在内)* - aws s3 rb s3://mybucket --force(删除桶,无论桶是否为空,并且会删除桶中的所有对象)* - aws s3 rm s3://mybucket/folder/(递归删除桶中的所有对象,包括子文件夹和目录自身)* - aws s3 cp s3://mybucket/ ./local/ --recursive (递归下载桶中的所有对象到本地文件夹)* - aws s3 sync s3://mybucket/ ./local/(同步桶中的所有对象到本地文件夹,支持 --delete 参数)* - aws s3 sync ./local/ s3://mybucket/(同步本地文件夹到桶,支持 --delete 参数)* - aws s3 cp s3://mybucket/ ./local/ --recursive --exclude "*.mod" (递归下载桶中的所有对象到本地文件夹,排除.mod文件)* # 对象操作(带 * 为程序已支持命令) - aws s3 cp test.txt s3://mybucket/folder/subfolder/ (上传对象到指定文件夹)* - aws s3 cp test.txt s3://mybucket/folder/subfolder/abc.txt (上传对象到指定文件夹并指定文件名)* - aws s3api put-object --bucket mybucket --key folder/subfolder/def.txt --body test.txt (上传对象)* - aws s3api delete-object --bucket mybucket --key folder/subfolder/test.txt (删除对象)* - aws s3 rm s3://mybucket/folder/subfolder/test.txt (删除对象)* - aws s3 cp s3://mybucket/folder/subfolder/test.txt ./abc.txt (下载对象)* - curl -i http://localhost:9000/mybucket/folder/subfolder/test.txt(测试桶公开下载)* # 策略操作(带 * 为程序已支持命令) - aws s3api put-bucket-policy --bucket mybucket --policy file://policy.json (设置桶策略)* - aws s3api get-bucket-policy --bucket mybucket (获取桶策略)* - aws s3api delete-bucket-policy --bucket mybucket (删除桶策略)* # 配置文件说明(./Data/Etc/ConFig.json) ```json { "s3": { "access_id": "90bebc3046dea844", // AWS 访问密钥 ID(初次使用随机生成) "secret_key": "b3aed976cccc793b4591d8d9d61cad83", // AWS 密钥(初次使用随机生成) "allowed_file_extensions": ["*"], // 允许上传的文件扩展名 * 为不限制后缀,示例 ["jpg", "png", "txt"] "max_upload_size": 5368709120, // 最大上传文件大小(字节)默认5GB "region": [{ "name": "cn-east-1", "data_dir": "Data/cn-east-1" }] // S3 区域和数据目录 }, "server": { "host": "0.0.0.0", // 服务器主机地址 "port": 9000, // 服务器端口号 "enable_https": false, // 是否启用 HTTPS "cert_file": "", // HTTPS 证书文件路径 "key_file": "" // HTTPS 密钥文件路径 }, "webdav": { "enable": false, // 是否启用 WebDAV "name": "admin", // WebDAV 用户名 "password": "123456", // WebDAV 密码 "region": "dav", // WebDAV 路由设置(默认 dav 示例 xiaomi/dav 前后都不能有 / ) "data_dir": "Data/webdav" // WebDAV 数据目录 }, "whitelist": ["localhost", "127.0.0.1"] // 白名单 IP 地址列表(当前未实现功能) } ``` # 设置一个桶的访问对象为公开策略(注意桶的名字) ``` - aws s3api put-bucket-policy --bucket mybucket --policy "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":[\"s3:GetObject\"],\"Resource\":\"arn:aws:s3:::mybucket/*\"}]}" ``` # 许可证 本项目采用MIT许可证,详情请参阅LICENSE文件。 # 联系方式 如有问题或建议,请通过以下方式联系: - 开发者:大有 - 邮箱:[admin@4h6.cn](mailto:admin@4h6.cn) - QQ群:7146824