68

I'm trying out Serverless to create AWS Lambdas and while creating a project using the command serverless project create I'm getting the following error.

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/*

I have created a user and granted the following permissions to the user.

  1. AWSLambdaFullAccess
  2. AmazonS3FullAccess
  3. CloudFrontFullAccess
  4. AWSCloudFormationReadOnlyAccess ( There was no AWSCloudFormationFullAccess to grant )

How can I proceed? What else permissions I have to grant?

Milindu Sanoj Kumarage
  • 2,322
  • 2
  • 24
  • 46

12 Answers12

87

The closest one that you've mentioned is AWSCloudFormationReadOnlyAccess, but obviously that's for readonly and you need cloudformation:CreateStack. Add the following as a user policy.

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

It's entirely possible you'll need more permissions- for instance, to launch an EC2 instance, to (re)configure security groups, etc.

keparo
  • 30,528
  • 13
  • 57
  • 66
tedder42
  • 20,195
  • 8
  • 74
  • 92
32

What @tedder42 said, but I also had to add the following to my group policy before I could deploy to lambda from inside 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": [
                "*"
            ]
        }
    ]
}
Chris Masterton
  • 2,139
  • 3
  • 23
  • 30
  • 4
    You'd need `cloudformation:DescribeStacks` as well if you plan on doing `servlerless info`. – pdeschen Nov 10 '17 at 21:14
  • 6
    This answer should be upvoted and +1 to @pdeschen saying you also need to add `cloudformation:DescribeStacks` if you're trying to deploy with serverless. I also had to add `cloudformation:DescribeStackResource`, `cloudformation:ValidateTemplate` – theartofbeing Feb 27 '18 at 23:31
  • I also added these 2 actions : cloudformation:DescribeStackEvents cloudformation:DeleteStack because I needed to permit, my users delete the stacks as well. – GhostCode Sep 24 '18 at 10:09
7

In my recent experience the policy required was

{
    "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": [
                "*"
            ]
        }
    ]
}
mancvso
  • 176
  • 2
  • 4
4

if you have multiple AWS profiles, try to explicity

export AWS_ACCESS_KEY_ID=<value>
export AWS_SECRET_ACCESS_KEY=<value>

before trying

serverless deploy
Iridium Admin
  • 91
  • 1
  • 3
3

I wasn't able to get the shorter versions shown above to work; what fixed things for me was extending @mancvso 's answer slightly to add "cloudformation:GetTemplateSummary":

{
    "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": [
                "*"
            ]
        }
    ]
}
TimD
  • 7,366
  • 2
  • 21
  • 33
1

These 2 helped me cross the line...

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

and

{
    "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": "*"
        }
    ]
}
Sajjan Singh
  • 2,399
  • 2
  • 22
  • 30
Akber Iqbal
  • 12,257
  • 11
  • 34
  • 52
1

Create the following policy:

  1. Click on Policy -> Create Policy
  2. Under Select Service - Type EKS & Select 'EKS'
  3. Under Actions: Select 'All EKS Actions'
  4. Under Resources: Either select 'All resources' or Add ARN
  5. Click on Review Policy
  6. Type the name for the policy & create the policy.

Now, associate this policy to the user account. This should solve the issue & you should be able to create the stack.

Razikh
  • 163
  • 1
  • 5
0

With the recent updates in AWS, the following inline policy will also work.

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

I fixed this issue by adding the permission to the user in the AWS console:

  1. Go to AWS Console
  2. Find the user whose credentials you are using IAM > Access Management > Users
  3. Permissions > 'Add Permissions' > 'Attach existing policies directly'
  4. Search for and select 'AWSCloudFormationFullAccess'
Alistair Colling
  • 1,113
  • 1
  • 11
  • 26
0

Just for others reference in case s/he was searching the issue and get here:

Make sure that you deleted the permissions boundary for that IAM user.

If you found that you have granted the cloudformation full access to the IAM user and still get the same error claiming User is not authorized to perform: cloudformation:CreateStack, then it's denied by the permissions boundary.

enter image description here

Jeff Tian
  • 4,481
  • 1
  • 38
  • 54
  • Thanks, goto https://console.aws.amazon.com/iam/home?region=us-west-1#/roles and enter AWSAmplifyExecutionRole-xxxxx, then click "Attach policies" button, and search "AWSCloudFormationFullAccess" and add this permison to the amplify role – diyism Mar 21 '21 at 09:31
-1

There is a section in the docs on this (at least now).

With a gist showing the policies JSON they recommend.

ryanjdillon
  • 13,415
  • 6
  • 73
  • 96
-6

Give "administrator" access to the user you created

  • While this answer may be helpful to an extent, you should expand on how to implement your solution, and what it adds to the other answers. – Artemis Jul 23 '18 at 19:02