Je rencontre un problème avec un dossier dans un compartiment S3, mais je n'arrive pas à le comprendre ... J'utilise le script bash suivant pour garder les 10 versions les plus récentes de notre application dans un seau S3. Chaque fois que nous démarrons la construction, il ne fait que copier les constructions (1 -> 0, 2 -> 1, etc.) et supprime la dernière version dans le dossier 9. Cela fonctionne bien jusqu'à ce que j'obtienne le dossier 9, l'erreur An error occurred (404) when calling the HeadObject operation: Key "iv/9/" does not exist
même si le dossier 9 existe réellement.La clé n'existe pas, mais seulement pour un seul dossier
declare -i i=0
for j in `seq 1 9`
do
echo "Copying build # $j to build # $i"
aws s3 mv s3://xvaws-builds/iv/$j/ s3://xvaws-builds/iv/$i/
let i++
done
Je pensais que peut-être le dossier 9 était d'être nommé quelque chose loufoque, avait quelques espaces, etc., mais après l'exécution 'SSFE s3 ls s3: // myaws-builds/iv /' tout semble bon ...
les résultats de la boucle ressemblent:
Copying build # 1 to build # 0
move: s3://myaws-builds/iv/1/ to s3://myaws-builds/iv/0/
Copying build # 2 to build # 1
move: s3://myaws-builds/iv/2/ to s3://myaws-builds/iv/1/
Copying build # 3 to build # 2
move: s3://myaws-builds/iv/3/ to s3://myaws-builds/iv/2/
Copying build # 4 to build # 3
move: s3://myaws-builds/iv/4/ to s3://myaws-builds/iv/3/
Copying build # 5 to build # 4
move: s3://myaws-builds/iv/5/ to s3://myaws-builds/iv/4/
Copying build # 6 to build # 5
move: s3://myaws-builds/iv/6/ to s3://myaws-builds/iv/5/
Copying build # 7 to build # 6
move: s3://myaws-builds/iv/7/ to s3://myaws-builds/iv/6/
Copying build # 8 to build # 7
move: s3://myaws-builds/iv/8/ to s3://myaws-builds/iv/7/
Copying build # 9 to build # 8
An error occurred (404) when calling the HeadObject operation: Key "iv/9/" does not exist
les résultats de ls sur ce répertoire retourne:
PRE 0/ PRE 1/ PRE 2/ PRE 3/ PRE 4/ PRE 5/ PRE 6/ PRE 7/ PRE 8/ PRE 9/ 2017-02-06 10:06:51 0
Des pensées?
Le script me va bien. Le problème doit être sur AWS. – Barmar
Sans lien, mais il n'est pas nécessaire d'utiliser deux variables qui pourraient se désynchroniser. pour ((j = 1; j <= 9; j ++)); do', alors utilisez '$ ((j-1))' où vous utilisez actuellement '$ i'. – chepner
Vous pensiez à utiliser S3 versioning? – jarmod