Ceph 配置URL访问s3 Bucket

本文介绍如何通过创建JSON文件来配置Amazon S3 Bucket的公共访问策略,并使用s3cmd命令使策略生效,实现对Bucket中文件及目录的公共只读访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建json文件,用于编辑policy,文件内容如下(Version并不重要),Action存在多种选择(如步骤三所示),并且允许同时选择多个,本文只是通过URL访问Bucket中的文件,因此只选择了s3:GetObject。

{

     "Version": "2012-10-17",

     "Statement": [

         {

             "Effect": "Allow",

             "Principal":"*",

             "Action":"s3:GetObject",

             "Resource": "*"

         }

     ]

 }

二、配置Policy生效,命令如下(File为上一步生成的文件)。

s3cmd setpolicy <File> s3://<Bucket>/ --acl-public  //这一条命令使得<Bucket>中的所有内容权限为Public(只读),包括续传的文件。其中,<File>为上一步创建的json文件。

s3cmd setacl --acl-public s3://<Bucket>/           //这一条命令使得<Bucket>的文件目录权限为Public(只读),即可通过URL看到<Bucket>中的文件目录。

三、S3 Action

  • s3:AbortMultipartUpload
  • s3:CreateBucket
  • s3:DeleteBucketPolicy
  • s3:DeleteBucket
  • s3:DeleteBucketWebsite
  • s3:DeleteObject
  • s3:DeleteObjectVersion
  • s3:DeleteReplicationConfiguration
  • s3:GetAccelerateConfiguration
  • s3:GetBucketAcl
  • s3:GetBucketCORS
  • s3:GetBucketLocation
  • s3:GetBucketLogging
  • s3:GetBucketNotification
  • s3:GetBucketPolicy
  • s3:GetBucketRequestPayment
  • s3:GetBucketTagging
  • s3:GetBucketVersioning
  • s3:GetBucketWebsite
  • s3:GetLifecycleConfiguration
  • s3:GetObjectAcl
  • s3:GetObject
  • s3:GetObjectTorrent
  • s3:GetObjectVersionAcl
  • s3:GetObjectVersion
  • s3:GetObjectVersionTorrent
  • s3:GetReplicationConfiguration
  • s3:ListAllMyBuckets
  • s3:ListBucketMultiPartUploads
  • s3:ListBucket
  • s3:ListBucketVersions
  • s3:ListMultipartUploadParts
  • s3:PutAccelerateConfiguration
  • s3:PutBucketAcl
  • s3:PutBucketCORS
  • s3:PutBucketLogging
  • s3:PutBucketNotification
  • s3:PutBucketPolicy
  • s3:PutBucketRequestPayment
  • s3:PutBucketTagging
  • s3:PutBucketVersioning
  • s3:PutBucketWebsite
  • s3:PutLifecycleConfiguration
  • s3:PutObjectAcl
  • s3:PutObject
  • s3:PutObjectVersionAcl
  • s3:PutReplicationConfiguration
  • s3:RestoreObject
### Ceph 共享存储的实现方式 Ceph 是一种分布式存储系统,支持多种共享存储方案。它主要通过 RBD(RADOS Block Device)、Ceph 文件系统(CephFS)和 RADOS 网关(RGW)来实现共享存储功能。 #### 1. **RBD(RADOS Block Device)** RBD 提供块级别的存储服务,适合用于虚拟化环境中的虚拟机磁盘镜像管理[^1]。以下是其实现细节: - 用户可以在 Ceph 集群上创建逻辑卷并将其导出给多个客户端使用。 - 客户端可以通过内核模块或 librbd 库连接到 Ceph 集群。 - 支持快照、克隆等功能,能够满足高可用性和性能需求。 代码示例:创建一个名为 `myvolume` 的 RBD 卷,并设置大小为 1GB。 ```bash rbd create myvolume --size 1024 ``` #### 2. **Ceph 文件系统(CephFS)** CephFS 提供了一个 POSIX 兼容的文件系统接口,允许多个客户端同时挂载同一个文件系统实例[^2]。这种方式特别适合需要共享文件系统的场景。 - 数据被分布到多个 OSD 上,从而实现了高扩展性和高性能。 - 可以通过 NFS-Ganesha 或直接挂载的方式让客户端访问 CephFS。 代码示例:挂载 CephFS 到本地目录 `/mnt/cephfs`。 ```bash mount -t ceph mon_node_ip:/ /mnt/cephfs -o name=admin,secret=your_secret_key ``` #### 3. **RADOS 网关(RGW)** RADOS 网关提供对象存储服务,兼容 Amazon S3 和 Swift API。虽然 RGW 主要面向对象存储,但它也可以作为一种间接形式的共享存储解决方案。 - 不同的应用程序可以通过 RESTful 接口上传和下载数据。 - 多个用户可以并发操作相同的桶(bucket),从而达到资源共享的目的。 代码示例:初始化一个新的 S3 桶。 ```python import boto3 s3 = boto3.client(&#39;s3&#39;, endpoint_url=&#39;http://rgw_host&#39;) response = s3.create_bucket(Bucket=&#39;new-bucket-name&#39;) print(response) ``` --- ### §相关问题§ 1. 如何优化 Ceph 集群的硬件配置以提高性能? 2. 在 OpenStack 平台上如何集成 Ceph 块设备? 3. 如果误删了 Ceph 配置文件,有哪些恢复策略?[^3] 4. 使用 CephFS 进行多客户端共享时需要注意哪些事项? 5. 对比分析 Ceph 与其他分布式存储系统(如 HDFS、GlusterFS)的特点和适用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值