2016-03-27 1 views
0

Я пытаюсь сделать мой CloudFront размещенным блоком перенаправления /feed/atom/index.html до /index.xml. У меня есть следующий сценарий, который должен установить заголовки перенаправления для меня:Как установить метаданные с помощью aws s3api?

#!/bin/sh 

redirect() aws s3api copy-object     \ 
    --copy-source blog.afoolishmanifesto.com$1 \ 
    --bucket blog.afoolishmanifesto.com --key $1 \ 
    --metadata x-amz-website-redirect-location=$2 \ 
    --metadata-directive REPLACE 

redirect /feed/atom/index.html /index.xml 

После запуска скрипта я получаю следующий результат:

{ 
    "CopyObjectResult": { 
     "LastModified": "2016-03-27T07:26:03.000Z", 
     "ETag": "\"40c27e3a5ea160c6695d7f34de8b4dea\"" 
    } 
} 

И когда я обновить объект в консоли AWS вид S3 Я не вижу Website Redirect Location (или x-amz-website-redirect-location) кусок метаданных для рассматриваемого объекта. Что я могу сделать, чтобы обеспечить правильную настройку перенаправления?

Примечание: Я попытался указать метаданные как JSON, и, насколько я могу судить, это не имеет никакого значения.

UPDATE: я оставил выше вопрос такой же, как она до сих пор относится к метаданным, но если вы пытаетесь создать редирект с АМС s3api вы должны использовать --website-redirect-location вариант, а не --metadata.

ответ

1

Он не может создать ключ /feed/atom/index.html в ковше, поэтому атрибут метаданных не был создан. Вместо этого вы должны создать feed/atom/index.html. Я изменю это нравится:

#!/bin/sh 

redirect() aws s3api copy-object     \ 
    --copy-source blog.afoolishmanifesto.com/$1 \ 
    --bucket blog.afoolishmanifesto.com --key $1 \ 
    --metadata x-amz-website-redirect-location=$2 \ 
    --metadata-directive REPLACE 

redirect feed/atom/index.html /index.xml 

В моем решении, обратите внимание / в --copy-source и первый аргумент для перенаправления сценария отсутствует ведущий /