You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Spring创建Ceph存储桶的方法及相关问题咨询

Spring 集成 Ceph 创建存储桶指南

一、获取 Ceph 的 AccessKey 和 SecretKey

Ceph 对象网关(RGW)兼容 S3 协议,密钥获取主要有两种方式:

  • 命令行创建用户:执行命令 radosgw-admin user create --uid=自定义用户ID --display-name="用户名称",命令输出结果里会直接返回 access_key 和 secret_key 字段,直接取用即可。
  • Ceph 控制台(Dashboard):如果已部署可视化控制台,登录后进入「对象网关用户管理」模块,新建用户或查看已有用户的密钥信息。

二、Spring 中创建 Ceph 存储桶的实现

由于 Ceph RGW 兼容 S3 协议,可通过 AWS S3 SDK 或 Spring Cloud AWS 两种方式集成,以下是具体实现:

方式1:原生 AWS S3 SDK(适配你提供的代码)

先引入 Maven 依赖:

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
    <version>1.12.500</version> <!-- 建议使用最新稳定版本 -->
</dependency>

基于你的代码改造实现存储桶创建:

import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.CreateBucketRequest;

public class CephBucketCreator {
    public static void main(String[] args) {
        String accessKey = "你的accessKey";
        String secretKey = "你的secretKey";
        String endpoint = "你的Ceph RGW端点(如http://ceph-rgw:8080)";
        String bucketName = "自定义存储桶名称";

        AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
        AmazonS3 conn = new AmazonS3Client(credentials);
        conn.setEndpoint(endpoint);
        
        // 检查存储桶是否存在,不存在则创建
        if (!conn.doesBucketExistV2(bucketName)) {
            conn.createBucket(new CreateBucketRequest(bucketName));
            System.out.println("存储桶创建成功");
        }
    }
}

方式2:Spring Cloud AWS 集成(更贴合 Spring 生态)

引入 Maven 依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-aws</artifactId>
    <version>2.2.6.RELEASE</version>
</dependency>

在 application.yml 中配置参数:

cloud:
  aws:
    credentials:
      access-key: 你的accessKey
      secret-key: 你的secretKey
    s3:
      endpoint: 你的Ceph RGW端点
    region:
      static: default # Ceph 可填默认或自定义区域

编写 Spring 服务类实现存储桶创建:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.aws.core.io.s3.S3Operations;
import org.springframework.stereotype.Service;

@Service
public class CephBucketService {
    @Autowired
    private S3Operations s3Operations;

    public void createBucket(String bucketName) {
        if (!s3Operations.doesBucketExist(bucketName)) {
            s3Operations.createBucket(bucketName);
        }
    }
}

三、参考文档说明

  • Ceph 官方文档:重点查看「Ceph Object Gateway (RGW)」章节,涵盖 S3 兼容性、用户管理、存储桶操作的完整说明。
  • Spring Cloud AWS 官方文档:参考 S3 集成模块内容,了解 Spring 生态下的配置与使用规范。
  • AWS S3 SDK 官方文档:因 Ceph 兼容 S3 协议,该文档的 API 说明、操作示例均可直接复用。

内容的提问来源于stack exchange,提问作者user19709202

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 14:06:15