web-dev-qa-db-fra.com

L'utilisateur n'est pas autorisé à effectuer: cloudformation: CreateStack

J'essaie Serverless pour créer AWS Lambdas et lors de la création d'un projet à l'aide de la commande serverless project create, l'erreur suivante apparaît.

AccessDenied: User: arn:aws:iam::XXXXXXXXX:user/XXXXXXXXX is not authorized to perform: cloudformation:CreateStack on resource: arn:aws:cloudformation:us-east-1:XXXXXXXXX:stack/XXXXXXXXX-development-r/*

J'ai créé un utilisateur et lui ai accordé les autorisations suivantes. 

  1. AWSLambdaFullAccess
  2. AmazonS3FullAccess
  3. CloudFrontFullAccess
  4. AWSCloudFormationReadOnlyAccess (Il n'y avait aucune AWSCloudFormationFullAccess à accorder)

Comment puis-je procéder? Quelles autres autorisations dois-je accorder? 

42

Le plus proche que vous avez mentionné est AWSCloudFormationReadOnlyAccess, mais évidemment, il s’agit d’une lecture seule et vous avez besoin de cloudformation:CreateStack. Ajoutez les éléments suivants en tant que policy .

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1449904348000",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

Il est tout à fait possible que vous ayez besoin de plus d'autorisations, par exemple pour lancer une instance EC2, pour (re) configurer des groupes de sécurité, etc.

66
tedder42

Ce que @ tedder42 a dit, mais je devais également ajouter ce qui suit à ma stratégie de groupe avant de pouvoir me déployer sur lambda à partir de visual studio.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1449904348000",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:CreateChangeSet",
                "cloudformation:ListStacks",
                "cloudformation:UpdateStack",
                "cloudformation:DescribeChangeSet",
                "cloudformation:ExecuteChangeSet"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
26
Chris Masterton

Dans mon expérience récente, la politique requise était

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1449904348000",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:CreateChangeSet",
                "cloudformation:ListStacks",
                "cloudformation:UpdateStack",
                "cloudformation:DescribeStacks",
                "cloudformation:DescribeStackResource",
                "cloudformation:DescribeStackEvents",
                "cloudformation:ValidateTemplate",
                "cloudformation:DescribeChangeSet",
                "cloudformation:ExecuteChangeSet"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
4
mancvso

Je n'ai pas réussi à faire fonctionner les versions abrégées ci-dessus. ce qui a arrangé les choses pour moi a été d’étendre légèrement la réponse de @mancvso:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1449904348000",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:CreateChangeSet",
                "cloudformation:ListStacks",
                "cloudformation:UpdateStack",
                "cloudformation:DescribeStacks",
                "cloudformation:DescribeStackResource",
                "cloudformation:DescribeStackEvents",
                "cloudformation:ValidateTemplate",
                "cloudformation:DescribeChangeSet",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:GetTemplateSummary"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
1
TimD

Il y a une section dans la documentation à ce sujet (au moins maintenant).

Avec un Gist indiquant les règles JSON recommandées.

0
ryanjdillon

Ces 2 m'ont aidé à franchir la ligne ...

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "apigateway:*",
            "Resource": "*"
        }
    ]
}

et

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "cloudformation:ListStacks",
                "cloudformation:DescribeStackEvents",
                "cloudformation:CreateStack",
                "cloudformation:UpdateStack",
                "cloudformation:DescribeStackResource",
                "cloudformation:CreateChangeSet",
                "cloudformation:DescribeChangeSet",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        }
    ]
}
0
Akber Iqbal

Avec les mises à jour récentes dans AWS, la stratégie en ligne suivante fonctionnera également.

{
   "Version": "2012-10-17",
   "Statement": [
       {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "cloudformation:DeleteStack"
            ],
            "Resource": "*"
        }
    ]
}
0
v7n6