как получить список объектов из ceph, используя s3 api c # - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь получить объекты от ceph. Для подключения к ceph я использую радос-шлюз с аутентификацией LDAP. Я использую S3 API и пример кода, который приведен здесь http://docs.ceph.com/docs/master/radosgw/s3/csharp/

Я написал код на C #, этот код успешно получает корзину, но не показывает список объектов. В журнале сервера ceph я вижу запросы, но не вижу запросов к пакету "bucket-310824". Я заметил странную вещь, если к имени слота bucket добавлено "/ bucket-310824", то в журнале видны запросы с именем bucket, но программа выдает сообщение об ошибке:

Amazon.S3.AmazonS3Exception: «Ошибка при выполнении запроса с кодом ошибки NoSuchBucket и кодом состояния Http NotFound. Никакая дополнительная информация об ошибке не была возвращена службой. '

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Amazon.S3;
using Amazon.S3.Model;
using System.IO;
using System.Threading.Tasks;

namespace S3CSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            string accessKey = "Base64String";
            string secretKey = "1";            

            AmazonS3Config config = new AmazonS3Config();
            config.ServiceURL = "http://ceph132v12.ceph.int:7480";
            AmazonS3Client s3Client = new AmazonS3Client(
                    accessKey,
                    secretKey,
                    config
                    );        
            //---------------List Buckets-----------------------
            ListBucketsResponse buckets = s3Client.ListBuckets();
            foreach (S3Bucket b in buckets.Buckets)
            {
                Console.WriteLine("{0}\t{1}", b.BucketName, b.CreationDate);
            }
            //---------------List Objects-----------------------
            string bucket = "bucket-310824";
            ListObjectsRequest request = new ListObjectsRequest { BucketName = bucket};
            ListObjectsResponse response = s3Client.ListObjects(request.BucketName);
            foreach (S3Object o in response.S3Objects)
            {
                Console.WriteLine("{0}\t{1}\t{2}", o.Key, o.Size, o.LastModified);
            }
            Console.ReadKey();
        }
    }
}

Журналы без косой черты bucket = "bucket-310824";

host:bucket-310824.ceph132v12.ceph.int:7480
user-agent:aws-sdk-dotnet-45/3.3.21.1 aws-sdk-dotnet-core/3.3.25.1 .NET_Runtime/4.0 .NET_Framework/4.0 OS/Microsoft_Windows_NT_6.1.7601_Service_Pack_1 ClientSync
x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
x-amz-date:20180905T073124Z

host;user-agent;x-amz-content-sha256;x-amz-date
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
2018-09-05 10:31:30.354060 7f605cc42700 10 canonical request hash = 0b88cfa29314a7db70a4f9a269a310d1f37b0097a9fee97a3668bcdd2288663e
2018-09-05 10:31:30.354080 7f605cc42700 10 string to sign = AWS4-HMAC-SHA256
20180905T073124Z
20180905/us-east-1/s3/aws4_request
0b88cfa29314a7db70a4f9a269a310d1f37b0097a9fee97a3668bcdd2288663e
2018-09-05 10:31:30.354209 7f605cc42700 12 auth search filter: (cn=cephldap)
2018-09-05 10:31:30.367681 7f605cc42700 20 rgw::auth::s3::LDAPEngine granted access
2018-09-05 10:31:30.367698 7f605cc42700 20 rgw::auth::s3::AWSv2ExternalAuthStrategy granted access
2018-09-05 10:31:30.367700 7f605cc42700 20 rgw::auth::s3::AWSAuthStrategy granted access
2018-09-05 10:31:30.367710 7f605cc42700 20 get_system_obj_state: rctx=0x7f605cc3a190 obj=default.rgw.meta:users.uid:cephldap$cephldap state=0x564a3a07e720 s->prefetch_data=0
2018-09-05 10:31:30.367716 7f605cc42700 10 cache get: name=default.rgw.meta+users.uid+cephldap$cephldap : type miss (requested=0x6, cached=0x0)
2018-09-05 10:31:30.369611 7f605cc42700 10 cache put: name=default.rgw.meta+users.uid+cephldap$cephldap info.flags=0x0
2018-09-05 10:31:30.369624 7f605cc42700 10 moving default.rgw.meta+users.uid+cephldap$cephldap to cache LRU end
2018-09-05 10:31:30.369635 7f605cc42700 20 get_system_obj_state: rctx=0x7f605cc3a190 obj=default.rgw.meta:users.uid:cephldap state=0x564a3a07e720 s->prefetch_data=0
2018-09-05 10:31:30.369640 7f605cc42700 10 cache get: name=default.rgw.meta+users.uid+cephldap : type miss (requested=0x6, cached=0x3)
2018-09-05 10:31:30.371177 7f605cc42700 10 cache put: name=default.rgw.meta+users.uid+cephldap info.flags=0x6
2018-09-05 10:31:30.371194 7f605cc42700 10 moving default.rgw.meta+users.uid+cephldap to cache LRU end
2018-09-05 10:31:30.371199 7f605cc42700 20 get_system_obj_state: s->obj_tag was set empty
2018-09-05 10:31:30.371202 7f605cc42700 10 cache get: name=default.rgw.meta+users.uid+cephldap : hit (requested=0x1, cached=0x7)
2018-09-05 10:31:30.371216 7f605cc42700  2 req 2:0.017440:s3:GET /:list_buckets:normalizing buckets and tenants
2018-09-05 10:31:30.371219 7f605cc42700 10 s->object=<NULL> s->bucket=
2018-09-05 10:31:30.371221 7f605cc42700  2 req 2:0.017445:s3:GET /:list_buckets:init permissions
2018-09-05 10:31:30.371240 7f605cc42700  2 req 2:0.017464:s3:GET /:list_buckets:recalculating target
2018-09-05 10:31:30.371241 7f605cc42700  2 req 2:0.017466:s3:GET /:list_buckets:reading permissions
2018-09-05 10:31:30.371243 7f605cc42700  2 req 2:0.017467:s3:GET /:list_buckets:init op
2018-09-05 10:31:30.371244 7f605cc42700  2 req 2:0.017468:s3:GET /:list_buckets:verifying op mask
2018-09-05 10:31:30.371245 7f605cc42700 20 required_mask= 1 user.op_mask=7
2018-09-05 10:31:30.371247 7f605cc42700  2 req 2:0.017471:s3:GET /:list_buckets:verifying op permissions
2018-09-05 10:31:30.371248 7f605cc42700  2 req 2:0.017473:s3:GET /:list_buckets:verifying op params
2018-09-05 10:31:30.371249 7f605cc42700  2 req 2:0.017473:s3:GET /:list_buckets:pre-executing
2018-09-05 10:31:30.371250 7f605cc42700  2 req 2:0.017475:s3:GET /:list_buckets:executing
2018-09-05 10:31:30.373127 7f605cc42700  2 req 2:0.019351:s3:GET /:list_buckets:completing
2018-09-05 10:31:30.373229 7f605cc42700  2 req 2:0.019453:s3:GET /:list_buckets:op status=0
2018-09-05 10:31:30.373255 7f605cc42700  2 req 2:0.019471:s3:GET /:list_buckets:http status=200
2018-09-05 10:31:30.373262 7f605cc42700  1 ====== req done req=0x7f605cc3c1f0 op status=0 http_status=200 ======
2018-09-05 10:31:30.373355 7f605cc42700  1 civetweb: 0x564a38790000: 10.201.0.131 - - [05/Sep/2018:10:31:30 +0300] "GET / HTTP/1.1" 1 0 - aws-sdk-dotnet-45/3.3.21.1 aws-sdk-dotnet-core/3.3.25.1 .NET_Runtime/4.0 .NET_Framework/4.0 OS/Microsoft_Windows_NT_6.1.7601_Service_Pack_1 ClientSync 

Журналы с косой чертой bucket = "/ bucket-310824";

host:bucket-310824.ceph132v12.ceph.int:7480
user-agent:aws-sdk-dotnet-45/3.3.21.1 aws-sdk-dotnet-core/3.3.25.1 .NET_Runtime/4.0 .NET_Framework/4.0 OS/Microsoft_Windows_NT_6.1.7601_Service_Pack_1 ClientSync
x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
x-amz-date:20180905T073712Z

host;user-agent;x-amz-content-sha256;x-amz-date
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
2018-09-05 10:37:17.794639 7f6040409700 10 canonical request hash = 6439cfb7d8045b280f837503c84022f59b15cfe51b1ae180026d1308d3d7d101
2018-09-05 10:37:17.794658 7f6040409700 10 string to sign = AWS4-HMAC-SHA256
20180905T073712Z
20180905/us-east-1/s3/aws4_request
6439cfb7d8045b280f837503c84022f59b15cfe51b1ae180026d1308d3d7d101
2018-09-05 10:37:17.794785 7f6040409700 12 auth search filter: (cn=cephldap)
2018-09-05 10:37:17.797440 7f6040409700 20 rgw::auth::s3::LDAPEngine granted access
2018-09-05 10:37:17.797473 7f6040409700 20 rgw::auth::s3::AWSv2ExternalAuthStrategy granted access
2018-09-05 10:37:17.797478 7f6040409700 20 rgw::auth::s3::AWSAuthStrategy granted access
2018-09-05 10:37:17.797501 7f6040409700 20 get_system_obj_state: rctx=0x7f6040401190 obj=default.rgw.meta:users.uid:cephldap$cephldap state=0x564a3a0333e0 s->prefetch_data=0
2018-09-05 10:37:17.797518 7f6040409700 10 cache get: name=default.rgw.meta+users.uid+cephldap$cephldap : type miss (requested=0x6, cached=0x0)
2018-09-05 10:37:17.799103 7f6040409700 10 cache put: name=default.rgw.meta+users.uid+cephldap$cephldap info.flags=0x0
2018-09-05 10:37:17.799135 7f6040409700 10 moving default.rgw.meta+users.uid+cephldap$cephldap to cache LRU end
2018-09-05 10:37:17.799155 7f6040409700 20 get_system_obj_state: rctx=0x7f6040401190 obj=default.rgw.meta:users.uid:cephldap state=0x564a3a0333e0 s->prefetch_data=0
2018-09-05 10:37:17.799166 7f6040409700 10 cache get: name=default.rgw.meta+users.uid+cephldap : hit (requested=0x6, cached=0x7)
2018-09-05 10:37:17.799173 7f6040409700 20 get_system_obj_state: s->obj_tag was set empty
2018-09-05 10:37:17.799176 7f6040409700 10 cache get: name=default.rgw.meta+users.uid+cephldap : hit (requested=0x1, cached=0x7)
2018-09-05 10:37:17.799195 7f6040409700  2 req 7:0.005090:s3:GET //bucket-310824:list_buckets:normalizing buckets and tenants
2018-09-05 10:37:17.799202 7f6040409700 10 s->object=bucket-310824 s->bucket=
2018-09-05 10:37:17.799205 7f6040409700  2 req 7:0.005100:s3:GET //bucket-310824:list_buckets:init permissions
2018-09-05 10:37:17.799946 7f6040409700  2 req 7:0.005840:s3:GET //bucket-310824:list_buckets:recalculating target
2018-09-05 10:37:17.799976 7f6040409700  2 req 7:0.005870:s3:GET //bucket-310824:list_buckets:reading permissions
2018-09-05 10:37:17.799982 7f6040409700 10 read_permissions on []):bucket-310824 only_bucket=0 ret=-2002
2018-09-05 10:37:17.799986 7f6040409700 20 op->ERRORHANDLER: err_no=-2002 new_err_no=-2002
2018-09-05 10:37:17.800421 7f6040409700  2 req 7:0.006316:s3:GET //bucket-310824:list_buckets:op status=0
2018-09-05 10:37:17.800452 7f6040409700  2 req 7:0.006347:s3:GET //bucket-310824:list_buckets:http status=404
2018-09-05 10:37:17.800458 7f6040409700  1 ====== req done req=0x7f60404031f0 op status=0 http_status=404 ======
2018-09-05 10:37:17.800473 7f6040409700 20 process_request() returned -2002
2018-09-05 10:37:17.800694 7f6040409700  1 civetweb: 0x564a387a9000: 10.201.0.131 - - [05/Sep/2018:10:37:17 +0300] "GET //bucket-310824 HTTP/1.1" 1 0 - aws-sdk-dotnet-45/3.3.21.1 aws-sdk-dotnet-core/3.3.25.1 .NET_Runtime/4.0 .NET_Framework/4.0 OS/Microsoft_Windows_NT_6.1.7601_Service_Pack_1 ClientSync
2018-09-05 10:37:19.516522 7f6088ab4700  2 RGWDataChangesLog::ChangesRenewThread: start

P.S. Я написал сценарий Python, используя те же параметры для соединения и имени корзины, я вижу список корзины и список объектов

...