Je suis les instructions de cette réponse pour générer la stratégie de compartiment S3 suivante:
{
"Id": "Policy1495981680273",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1495981517155",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::surplace-audio",
"Principal": "*"
}
]
}
Je récupère l'erreur suivante:
L'action ne s'applique à aucune ressource dans l'instruction
Que suis-je absent de ma police?
amazon-web-services
amazon-s3
Philip Kirkbride
la source
la source
Réponses:
À partir de la documentation IAM, http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Action
Certains services ne vous permettent pas de spécifier des actions pour des ressources individuelles; à la place, toutes les actions que vous répertoriez dans l'élément Action ou NotAction s'appliquent à toutes les ressources de ce service. Dans ces cas, vous utilisez le caractère générique * dans l'élément Resource.
Avec ces informations, la ressource doit avoir une valeur comme ci-dessous:
la source
Le simple fait de retirer l'
s3:ListBucket
autorisation n'était pas vraiment une solution suffisante pour moi, et probablement pas pour beaucoup d'autres.Si vous souhaitez
s3:ListBucket
obtenir l' autorisation, vous devez simplement avoir l'arn simple du compartiment (sans le/*
à la fin) car cette autorisation s'applique au compartiment lui-même et non aux éléments du compartiment.Comme indiqué ci-dessous, vous devez avoir l'
s3:ListBucket
autorisation en tant qu'instruction distincte des autorisations relatives aux éléments du compartiment commes3:GetObject
ets3:PutObject
:la source
L'action d'erreur ne s'applique à aucune ressource dans l'instruction
Cela signifie simplement que l'action (que vous avez écrite dans la stratégie) ne s'applique pas à la ressource. J'essayais de rendre public mon bucket afin que tout le monde puisse le télécharger à partir de mon bucket. J'obtenais une erreur jusqu'à ce que je supprime ("s3: ListBucket") de ma déclaration.
Étant donné que le bucket de liste ne s'applique pas à l'intérieur du bucket, la suppression de cette stratégie d'action a bien fonctionné.
la source
Je viens de rencontrer ce problème et j'ai trouvé une solution plus courte pour ceux qui souhaitent avoir ListBucket et GetObject dans la même stratégie.
la source
Principal
n'est pas autorisé pour la grammaire de la stratégie S3.J'ai également rencontré le même problème lors de la création du seau
J'ai changé le code ci-dessus en
ajoutez / * au nom de votre bucket, cela résoudra le problème
Ici mon nom de seau est mrt9949
la source
Dans mon cas, la solution à cette erreur essayait de supprimer certaines des actions que j'appliquais. Certains d'entre eux ne sont pas pertinents ou ne peuvent pas fonctionner avec cette ressource. Dans ce cas, cela ne me permettrait pas d'inclure ceux-ci:
GetBucketAcl ListBucket ListBucketMultipartUploads
la source
Vous devez vérifier le modèle de l'arn défini sous la balise Resource pour la politique-
"Ressource": "arn: aws: s3 ::: s3mybucketname / *"
L'ajout de "/ *" à la fin aiderait à résoudre le problème si vous y faisiez face même après avoir débloqué votre politique d'accès public pour votre bucket.
la source
la source
Vous pouvez également configurer ListBuckets pour chaque dossier, comme ceci
Ces règles sont utilisées avec SES pour recevoir un e-mail, mais permettent à un utilisateur externe d'afficher les fichiers qui ont été placés dans le compartiment par SES. J'ai suivi les instructions d'ici: https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders-in-an-amazon-s3-bucket/
En outre, vous devez spécifier le préfixe
domain.co/user/
avec barre oblique à la fin lorsque vous utilisez le SDK, sinon vous obtiendrez l'accès refusé. j'espère que ça aide n'importe quila source