我正在尝试使用s3cmd工具使我的文件无效, 看来s3cmd会自动为我选择一个发行版, 但是我从同一个桶中获得了更多的分配,我如何选择分配无效?
我试过这个:
s3cmd sync —cf-invalidate myfile cf://XXXXXXXXXX/mypath
但它不起作用。我明白了:
Invalid source/destination”
任何想法?
谢谢!
答案 0 :(得分:1)
我相信你会想要通过原点(即你的S3桶或类似物品)强制失效,如下所示:
s3cmd --cf-invalidate _site/ s3://example-origin.com/
答案 1 :(得分:0)
我无法使s3cmd
失效工作,因此我使用s3cmd
更新文件,cloudfront-invalidator
执行失效。该脚本读取s3cmd
cloudfront-invalidator
使用的aws身份验证。
#!/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
答案 2 :(得分:0)
这是我的最终结论:
经过多次尝试,解决方案非常有限。
s3cmd sync --cf-invalidate --acl-public --preserve --recursive ./[local_folder] s3://[my_bucket]/[remote_folder]/
当我运行此命令时,实际文件夹应该在命令运行文件夹
本地文件应该有./
远程文件夹应以/