3

J'utilise AWS CLI pour créer une distribution CloudFront dans un script:Accès refusé lors de la création CloudFront avec AWS infirmation CLI

aws configure set preview.cloudfront true 
aws cloudfront create-invalidation --distribution-id ABCD1234 --paths '/*' 

J'ai une politique mis en place avec cette déclaration:

{ 
    "Sid": "xxx", 
    "Effect": "Allow", 
    "Action": [ 
     "cloudfront:CreateInvalidation" 
    ], 
    "Resource": [ 
     "arn:aws:cloudfront::xxx:distribution/ABCD1234" 
    ] 
} 

La stratégie est attachée à l'utilisateur qui exécute la commande. Toutefois, j'obtiens toujours cette erreur:

A client error (AccessDenied) occurred when calling the CreateInvalidation operation: User: arn:aws:iam::xxx:user/yyy is not authorized to perform: cloudfront:CreateInvalidation

Répondre

2

Le problème est que CloudFront ne peut pas fonctionner avec une stratégie qui spécifie une ressource. "Élargir" la politique corrige l'erreur.

This support thread états:

CloudFront does not support Resource-Level permissions for IAM.

Il est également enterré dans le documentation for CloudFront:

Operation:    POST Invalidation (CreateInvalidation) 
Required Permissions: cloudfront:CreateInvalidation 
Resources:    * 

Cela signifie que la politique doit être:

{ 
    "Sid": "xxx", 
    "Effect": "Allow", 
    "Action": [ 
     "cloudfront:CreateInvalidation" 
    ], 
    "Resource": [ 
     "*" <-- must be a wildcard 
    ] 
}