169 votes

L'action Seau S3 ne s'applique à aucune ressource

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 la déclaration

Qu'est-ce qui me manque dans ma police?

294voto

Oluwafemi Sule Points 8706

De IAM docs, http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Action

Certains services ne vous permet pas de spécifier les actions pour les ressources individuelles; au lieu de cela, toutes les actions que vous énumérez dans l'Action ou l'NotAction élément s'applique à toutes les ressources de ce service. Dans ces cas, vous devez utiliser le caractère générique * dans l'élément Ressources.

Avec cette information, ressource doit avoir une valeur comme ci-dessous:

"Resource": "arn:aws:s3:::surplace-audio/*"

117voto

Coulton Points 3994

Juste en retrait de l' s3:ListBucket autorisation n'était pas vraiment une bonne solution pour moi, et n'est probablement pas pour beaucoup d'autres.

Si vous voulez l' s3:ListBucket autorisation, vous devez simplement avoir de la plaine de l'arn du seau (sans l' /* à la fin) que cette autorisation s'applique à le seau lui-même et pas d'éléments à l'intérieur du seau.

Comme indiqué ci-dessous, vous devez avoir de l' s3:ListBucket permission comme un état séparé les autorisations relatives à des éléments dans le seau comme s3:GetObject et s3:PutObject:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"        
      ],
      "Principal": {
        "AWS": "[IAM ARN HERE]"
      },
      "Resource": "arn:aws:s3:::my-bucket-name"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject", 
        "s3:PutObject"
      ],
      "Principal": {
        "AWS": "[IAM ARN HERE]"
      },
      "Resource": "arn:aws:s3:::my-bucket-name/*"
    }
  ]
}

45voto

Vaseem007 Points 780

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 seau pour que tout le monde puisse le télécharger depuis mon seau. J'obtenais une erreur jusqu'à ce que je supprime ("s3: ListBucket") de ma déclaration.

 {
  "Id": "Policyxxxx961",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmtxxxxx4365",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::bucket-name/*",
      "Principal": "*"
    }
  ]
}
 

Parce que le compartiment de liste ne s'applique pas à l'intérieur du compartiment, la suppression de cette stratégie d'action a donc fonctionné correctement.

29voto

Alex Spence Points 115

Je viens juste de rencontrer ce problème et de trouver une solution plus courte pour ceux qui veulent avoir ListBucket et GetObject dans la même stratégie.

 {
  "Id": "Policyxxxx961",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmtxxxxx4365",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
          "arn:aws:s3:::bucket-name",
          "arn:aws:s3:::bucket-name/*"
      ],
      "Principal": "*"
    }
  ]
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X