
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
这是一个用于读写通用负载到Amazon S3的API服务,支持通过UUID标识对数据进行PUT、GET和DELETE操作。该服务可配置从Kafka读取负载并存储到S3,适用于需要将通用格式数据持久化到S3或从Kafka消费数据并存储的场景。
| 环境变量 | 描述 | 默认值 | 是否必填 |
|---|---|---|---|
PORT | 服务监听端口 | 无 | 是 |
BUCKET_NAME | S3存储桶名称 | 无 | 是 |
AWS_REGION | AWS区域(如eu-west-1) | 无 | 是 |
AWS_ACCESS_KEY_ID | AWS访问密钥ID(或通过~/.aws/credentials文件配置) | 无 | 是 |
AWS_SECRET_ACCESS_KEY | AWS密钥(或通过~/.aws/credentials文件配置) | 无 | 是 |
BUCKET_PREFIX | S3对象前缀路径(添加到所有上传项的文件夹路径) | 空 | 否 |
WORKERS | 并发下载数量(下载所有项时的并发数) | 10 | 否 |
SRC_CONCURRENT_PROCESSING | 是否启用Kafka消息并发处理 | false | 否 |
RESOURCE_PATH | 资源路径(如"concepts",用于自定义API路径) | 空 | 否 |
基础启动命令
bashdocker run -d \ -p 8080:8080 \ -e PORT=8080 \ -e BUCKET_NAME="my-s3-bucket" \ -e AWS_REGION="eu-west-1" \ -e AWS_ACCESS_KEY_ID="AKID1234567890" \ -e AWS_SECRET_ACCESS_KEY="MY-SECRET-KEY" \ docker.xuanyuan.run/coco/generic-rw-s3
带Kafka集成的启动命令
bashdocker run -d \ -p 8080:8080 \ -e PORT=8080 \ -e BUCKET_NAME="my-s3-bucket" \ -e AWS_REGION="eu-west-1" \ -e AWS_ACCESS_KEY_ID="AKID1234567890" \ -e AWS_SECRET_ACCESS_KEY="MY-SECRET-KEY" \ -e BUCKET_PREFIX="kafka-data" \ docker.xuanyuan.run/coco/generic-rw-s3 --source-addresses="kafka-broker:9092" --source-group="consumer-group-1" --source-topic="data-topic"
bash# 安装dep curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh # 获取源码 go get github.com/Financial-Times/generic-rw-s3 cd $GOPATH/src/github.com/Financial-Times/generic-rw-s3 # 安装依赖 dep ensure -v -vendor-only # 编译 go install
bash# 设置必填环境变量 export PORT=8080 export BUCKET_NAME="my-s3-bucket" export AWS_REGION="eu-west-1" # 配置AWS凭证(或通过~/.aws/credentials文件) export AWS_ACCESS_KEY_ID="AKID1234567890" export AWS_SECRET_ACCESS_KEY="MY-SECRET-KEY" # 可选配置 export BUCKET_PREFIX="data-prefix" export WORKERS=20 export SRC_CONCURRENT_PROCESSING=true # 启动服务 $GOPATH/bin/generic-rw-s3
bash$GOPATH/bin/generic-rw-s3 --port=8080 --bucketName="my-s3-bucket" --source-addresses="kafka-broker:9092" --source-group="consumer-group" --source-topic="data-topic"
PUT /UUID
通过UUID写入负载到S3,请求头需指定Content-Type(将作为S3对象的Content-Type存储)。
示例:
bashcurl -H "Content-Type: application/json" -X PUT -d '{"key":"value"}' http://localhost:8080/bcac6326-dd23-4b6a-9dfa-c2fbeb9737d9
S3对象路径格式:<bucket_prefix>/<uuid前8位>/<uuid中间4位>/<uuid中间4位>/<uuid中间4位>/<uuid后12位>(如prefix/123e4567/e89b/12d3/a456/426655440000)
GET /UUID
读取指定UUID对应的S3对象,返回存储的负载数据。若不存在返回404。
示例:
bashcurl http://localhost:8080/bcac6326-dd23-4b6a-9dfa-c2fbeb9737d9
DELETE /UUID
删除指定UUID对应的S3对象,成功返回204。
示例:
bashcurl -X DELETE http://localhost:8080/bcac6326-dd23-4b6a-9dfa-c2fbeb9737d9
GET /
流式返回存储桶中所有负载数据。
GET /__ids
流式返回存储桶中所有UUID列表,每行一个JSON对象。
示例响应:
json{"ID":"dcfa65d6-3849-445e-ac6a-15bc5a17e954"} {"ID":"2136f8ad-e94e-45cb-b616-336f38533214"}
http://localhost:8080/__healthhttp://localhost:8080/__build-info 或 http://localhost:8080/build-infohttp://localhost:8080/__gtg服务会在S3对象元数据中存储负载的哈希值。当ONLY_UPDATES_ENABLED环境变量设为true时,会对比新负载与存储哈希:
X-Ignore-Hash: true绕过哈希检查,强制写入。需确保AWS凭证对目标S3存储桶有读写权限,推荐策略配置:
json{ "Version": "2012-10-17", "Id": "PolicyForS3RW", "Statement": [ { "Sid": "AllowFullAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<AWS账户ID>:user/<IAM用户名>" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::<BUCKET_NAME>", "arn:aws:s3:::<BUCKET_NAME>/*" ] } ] }
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务