s3cmd инвалидация выбрать дистрибутив

Я пытаюсь использовать инструмент s3cmd, чтобы аннулировать мои файлы, кажется, что s3cmd автоматически выбирает дистрибутив для меня, но у меня есть другие дистрибутивы из того же сегмента, как я могу выбрать дистрибутив для аннулирования?

Я пробовал это:

s3cmd sync —cf-invalidate myfile cf://XXXXXXXXXX/mypath но это не работает. Я понимаю: Invalid source/destination”

Есть идеи?

Благодарность!


person twindai    schedule 15.06.2013    source источник


Ответы (3)


Я полагаю, что вы хотели бы принудительно аннулировать через источник (т.е. ваше ведро S3 или подобное) следующим образом:

s3cmd --cf-invalidate _site/ s3://example-origin.com/
person Drew    schedule 23.09.2013
comment
локальный файл должен быть хорошо подготовлен. - person twindai; 07.06.2015

Вот мой окончательный вывод:
после многих попыток решение очень ограничено.

  1. следуйте этому формату:

s3cmd sync --cf-invalidate --acl-public --preserve --recursive ./[local_folder] s3://[my_bucket]/[remote_folder]/

  1. когда я запускаю эту команду, фактическая папка должна находиться в рабочей папке команды

  2. локальный файл должен иметь ./

  3. удаленная папка должна заканчиваться /

person twindai    schedule 07.06.2015

Я не мог сделать так, чтобы s3cmd не работал, поэтому я использовал s3cmd для обновления файла и cloudfront-invalidator для аннулирования. Скрипт считывает аутентификацию aws, используемую s3cmd для cloudfront-invalidator.

#!/bin/bash

if [ -z "$(which s3cmd)" ]; then
  echo "s3cmd is not installed or is not on the PATH"
  exit -1
fi

if [ -z "$(which cloudfront-invalidator)" ]; then
  echo "cloudfront-invalidator is not installed or is not on the PATH"
  echo "See https://github.com/reidiculous/cloudfront-invalidator"
  echo "TL;DR: sudo gem install cloudfront-invalidator"
  exit -1
fi

function awsKeyId {
  awk -F '=' '{if (! ($0 ~ /^;/) && $0 ~ /aws_access_key_id/) print $2}' ~/.aws/config | tr -d ' '
}

function awsSecret {
  awk -F '=' '{if (! ($0 ~ /^;/) && $0 ~ /aws_secret_access_key/) print $2}' ~/.aws/config | tr -d ' '
}

export file="stylesheets/main.css"
export distributionId=blahblah
export bucket=www.blahblah

s3cmd -P -m 'text/css' put public/$file s3://$bucket/$f
cloudfront-invalidator invalidate `awsKeyId` `awsSecret` $distributionId $file
person Mike Slinn    schedule 17.04.2015
comment
на самом деле я создал сервер sinatra для отправки почтовых данных, которые включают полные данные xml, чтобы вместо этого начать аннулирование. мой sh только что отправил строковый ключ содержимого файлов. curl -X ПОЛУЧИТЬ http://[sinatra_server_ip]:[порт]/signinval?objectList=${filelist}&s3dist=${s3dist}&token=${serverToken}&bucket=${bucket}&type=${fileType} - person twindai; 07.06.2015