Ключ метаданных Amazon S3 с префиксом, как этого избежать? - PullRequest
2 голосов
/ 26 февраля 2010

У меня есть код, который записывает что-то в корзину s3.

 PutObjectRequest titledRequest = new PutObjectRequest();
 titledRequest.WithMetaData("Eip1", "Volume-1")
.WithMetaData("Eip2", "Volume-2")
 .WithContentBody("this is an Elastic IP Address Details for a Volumes")
  .WithBucketName(bucketName)
 .WithKey(keyName);

и прочитайте его, используя

   AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKeyID,  secretAccessKeyID);

 GetObjectRequest request = new GetObjectRequest().WithBucketName(bucketName).WithKey(keyName);

    string title = response.Metadata.Get("Eip1");

но получая ноль взамен, при отладке я увидел ответ. Метаданные. Ключи имеют

х-АМЗ-мета-EIP1
& x-amz-meta-eip2

Как переименовываются эти ключи, Как этого избежать?

Почему у них префикс x-amz-meta-

Ответы [ 2 ]

2 голосов
/ 01 марта 2010

Они имеют префикс таким образом, чтобы «различать их как пользовательские заголовки HTTP»

http://docs.amazonwebservices.com/AmazonS3/latest/index.html?UsingMetadata.html

1 голос
/ 18 апреля 2012

Если вы используете .WithMetadata, клиент s3 всегда префиксирует метаданные x-amz-meta Если вы хотите указать системные метаданные, такие как заголовки Cache Control, используйте .AddHeaders по запросу:

            var rq = (PutObjectRequest) new PutObjectRequest()
                                            .WithKey(fileName)
                                            .WithBucketName(BucketName)
                                            .WithCannedACL(S3CannedACL.PublicRead)
                                            .WithInputStream(source);
            rq.AddHeaders(new WebHeaderCollection
                              {
                                  {HttpRequestHeader.CacheControl, "no-cache"}
                              });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...