Essayer de copier un fichier local nommé test.txt dans mon compartiment s3 et ajouter des métadonnées au fichier.
Mais cela imprime toujours l'erreur:
argument --metadata-directive: choix non valide, les choix valides sont: COPY | REMPLACER
Est-il possible de faire cela avec la commande cp, si j'ai bien compris, cela devrait être possible. AWS CLI CP DOCS
Voici les commandes que j'ai essayées:
aws s3 cp test.txt to s3://a-bucket/test.txt --metadata x-amz-meta-cms-id:34533452
aws s3 cp test.txt to s3://a-bucket/test.txt --metadata-directive COPY --metadata x-amz-meta-cms-id:34533452
aws s3 cp test.txt to s3://a-bucket/test.txt --metadata-directive COPY --metadata '{"x-amz-meta-cms-id":"34533452"}'
aws s3 cp test.txt to s3://a-bucket/test.txt --metadata '{"x-amz-meta-cms-id":"34533452"}'
aws --version: aws-cli/1.9.7 Python/2.7.10 Darwin/16.1.0 botocore/1.3.7
Système d'exploitation: macOS Sierra version 10.12.1
Modifier
Il est à noter que le téléchargement d'un fichier sans l'indicateur --metadata fonctionne bien.
Hmm, j'ai consulté l'aide de ma version de cli avec aws s3 cp help
Il s'avère que l'option --metadata
n'est pas répertoriée, contrairement à la documentation située sur le lien ci-dessus.
Si vous utilisez une ancienne version de aws cli
Use aws s3api put-object
Comment télécharger un fichier dans un compartiment et ajouter des métadonnées:
aws s3api put-object --bucket a-bucket --key test.txt --body test.txt --metadata '{"x-amz-meta-cms-id":"34533452"}'
Docs: AWS S3API DOCS
En effet, l'option de prise en charge des métadonnées a été ajoutée depuis 1.9.10
aws s3
Ajout de la prise en charge des métadonnées personnalisées dans cp, mv et sync.
donc, mettez à niveau votre aws cli vers cette version (ou mieux encore vers la dernière) - et la valeur metadata
doit être une carte
aws s3 cp test.txt s3://a-bucket/test.txt --metadata '{"x-amz-meta-cms-id":"34533452"}'
Installez s3cmd tools (gratuitement) et appelez s3cmd modify --add-header x-amz-meta-foo: bar s3: /// modify: 's3: ///'
foo - barre de clé - valeur