Bonjour. J'ai vu cette erreur dans quelques numéros, et je dois être fatigué. Il n'est pas évident pour moi quelle devrait être la solution. J'essaie de télécharger une stratégie de compartiment et j'obtiens une erreur JSON. J'ai ensuite téléchargé (utilisé l'interface utilisateur pour entrer et cela a bien fonctionné)/téléchargé et j'obtiens la même erreur. Une suggestion sur la façon d'utiliser l'outil pour télécharger cela? Continuez votre bon travail!
$ aws s3api get-bucket-policy --bucket cloud-1-$NAME > student-1-bucket.manual.json
$ aws s3api put-bucket-policy --bucket cloud-1-$NAME --policy student-1-bucket.manual.json
An error occurred (MalformedPolicy) when calling the PutBucketPolicy operation: Policies must be valid JSON and the first byte must be '{'
$ cat student-1-bucket.manual.json
{
"Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"ExampleStatement1\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::934017622331:user/student-1-cloud\"},\"Action\":\"*\",\"Resource\":\"arn:aws:s3:::cloud-1-14604\"}]}"
}
$
--policy
accepte normalement une chaîne JSON, qui pense que votre nom de fichier est en fait le document JSON que vous souhaitez utiliser. Pour le faire avec des fichiers, vous devrez utiliser le protocole file://
comme ceci :
aws s3api put-bucket-policy --bucket cloud-1-$NAME --policy file://student-1-bucket.manual.json
Remarque Je n'ai pas accès à votre environnement, donc si le bit file://
échoue, vous voudrez peut-être lui fournir le chemin absolu vers student-1-bucket.manual.json
place.
@cwgem tu as tout à fait raison ! Merci.
Spécification:
aws s3api put-bucket-policy \
--bucket $BucketName \
--policy file://$PathToPolicy/bucketpolicy.json
Par example:
aws s3api put-bucket-policy \
--bucket firstbucket.mydomain.com \
--policy file:///Users/Andy/Desktop/bucketpolicy.json
Commentaire le plus utile
--policy
accepte normalement une chaîne JSON, qui pense que votre nom de fichier est en fait le document JSON que vous souhaitez utiliser. Pour le faire avec des fichiers, vous devrez utiliser le protocolefile://
comme ceci :Remarque Je n'ai pas accès à votre environnement, donc si le bit
file://
échoue, vous voudrez peut-être lui fournir le chemin absolu versstudent-1-bucket.manual.json
place.