Там же
не
, как представляется, способ сделать это.
Только определенные заголовки из запроса объекта S3 PUT
документируются как возвращаемые, когда объект извлекается.
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html
Все остальное вы посылаете, кажется, просто игнорируются, до тех пор, как он на самом деле не аннулирует запрос.
На самом деле, это то, что я думал, прежде чем исследовать это, и это почти true.
documentation here кажется неполным, и elsewhere предлагает следующие заголовки запроса, если они отправлены с загрузкой, появится в загрузке:
Cache-Control
Content-Disposition
Content-Encoding
Content-Type
x-amz-meta-*
Другие заголовки перечислены в последней ссылке, но некоторые из них, как Expect
не имеет смысла в запросе GET
, поэтому они логически не отображаются.
Пока все это соответствует моему опыту с S3.
Если вы отправляете случайный, но недействительный заголовок с вашим запросом, он игнорируется. Пример:
X-Foo: bar
S3, кажется, принимает это при загрузке, но отбрасывает его (предположительно не хранит его) ... загружая объект не возвращает заголовок X-Foo
.
Но X-Robots-Tag
представляется недокументированным исключением из этого.
Загрузка файла с помощью X-Robots-Tag: noindex
(например) действительно приводит к тому, что один и тот же заголовок и значение возвращаются вместе с объектом при GET
.
Если кто-то не может ссылаться на документацию, которая объясняет, почему это работает, мы работаем на явно недокументированной территории.
Но, если вы заинтересованы в том, чтобы отправиться туда, просто ответьте на этот вопрос, просто добавьте этот заголовок в запрос HTTP PUT
, который вы отправляете в REST API для загрузки объекта.
«Не так быстро», вы говорите: «Я использую Ruby SDK». В самом деле. Клиент AWS Ruby, похоже, слишком «полезен», чтобы позволить вам избежать этого, по крайней мере, нелегко. docs there показать, как добавить «метаданные» -
:metadata
(Hash) - хэш метаданных, которые будут включены с объектом. Они будут отправлены на S3 в виде заголовков с префиксом x-amz-meta.Каждое имя, пара значений должно соответствовать US-ASCII.
Ну, это не сработает, потому что вы получите x-amz-meta-x-robots-tag.
Как вы устанавливаете другие заголовки в загрузке? Каждый другой заголовок, который вы обычно установили, является элементом хэша опций, например :cache_control
, который превращается в Cache-Control:
в запрос на загрузку. Если они не будут слепо применять ключи от этого хеша к транзакции загрузки (что было бы ужасным дизайном в сочетании с отличной удачей), то у вас может не быть простого способа добраться сюда оттуда. Я не могу быть более конкретным, потому что единственное, что я действительно знаю о Ruby, - это то же самое, что я знаю о Java - от того, что я видел, мне это не нравится. :)
Но X-Robots-Tag
выглядит как пользовательский заголовок. S3 в некоторой степени поддерживает без четкой документации об этом факте. Это, по крайней мере, принято API REST.
Невыполнение вышеуказанного, вы можете вручную добавить этот заголовок к метаданным в консоли S3 после загрузки объекта. (Примечание: X-Foo: Bar
не работает с консоли S3: либо он отбрасывается без ошибок, но без ошибок - но X-Robots-Tag:
отлично работает).
Вы также можете, конечно, поставить публично читаемый файл robots.txt (с соответствующими директивами в нем) в корне ведра. В зависимости от вашего cobtent mix, иерархии путей и других факторов, которые не являются (возможно) такими же простыми, как выборочная настройка заголовков, но если все ведро состоит из информации, которую вы не хотите индексировать, она должна легко выполнить то, что вы хотите , так как контент не следует индексировать, если он запрещен в файле robots.txt, даже если поисковый паук следует по ссылке на него с другого сайта - каждый файл robots.txt каждого домена (и поддомена) стоит отдельно.
Спасибо, хотя кажется, что должно быть * some * way. Как [** Bucket Explorer **] (http://www.bucketexplorer.com/documentation/amazon-s3-how-to-manage- http-headers-for-amazon-s3-objects.html) и [** Cloudberry **] (http://www.cloudberrylab.com/blog/how-to-set-custom-http-headers-for-amazon -s3-objects-with-cloudberry-explorer /) сделать это? – Yarin
Сначала я предположил, что они этого не сделали, но посмотрите массивное правление, выше ... API REST необъяснимо принимает этот заголовок, недокументированный, насколько я могу судить. –
Браво - вы пошли выше и дальше с этим ответом, я очень ценю усилия! – Yarin