Development Tip

사용자가 수행 할 권한이 없습니다. cloudformation : CreateStack

yourdevel 2020. 12. 15. 19:51
반응형

사용자가 수행 할 권한이 없습니다. cloudformation : CreateStack


AWS Lambda를 생성하기 위해 서버리스시도하고 있으며 명령을 사용하여 프로젝트를 생성하는 동안 serverless project create다음 오류가 발생합니다.

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

사용자를 생성하고 사용자에게 다음 권한을 부여했습니다.

  1. AWSLambdaFullAccess
  2. AmazonS3FullAccess
  3. CloudFrontFullAccess
  4. AWSCloudFormationReadOnlyAccess ( AWSCloudFormationFullAccess부여 할 항목 없음 )

어떻게 진행할 수 있습니까? 부여해야하는 다른 권한은 무엇입니까?


당신이 언급 한 가장 가까운 것은 AWSCloudFormationReadOnlyAccess이지만 분명히 그것은 읽기 전용이고 당신은 필요합니다 cloudformation:CreateStack. 사용자 정책으로 다음을 추가합니다 .

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

예를 들어 EC2 인스턴스를 시작하거나 보안 그룹을 (재) 구성하는 등 더 많은 권한이 필요할 수 있습니다.


@ tedder42가 말한 내용이지만 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": [
                "*"
            ]
        }
    ]
}

내 최근 경험에서 필요한 정책은

{
    "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의 답변을 약간 확장하는 것입니다.

{
    "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": [
                "*"
            ]
        }
    ]
}

AWS 프로필이 여러 개인 경우 명시 적으로

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

시도하기 전에

serverless deploy

이 2 개는 내가 선을 넘도록 도왔다 ...

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

{
    "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": "*"
        }
    ]
}

다음 정책을 만듭니다.

  1. 정책-> 정책 만들기를 클릭합니다.
  2. 서비스 선택에서-EKS 입력 및 'EKS'선택
  3. 작업에서 : '모든 EKS 작업'을 선택합니다.
  4. 리소스에서 : '모든 리소스'또는 ARN 추가를 선택합니다.
  5. 정책 검토를 클릭하십시오.
  6. 정책 이름을 입력하고 정책을 만듭니다.

이제이 정책을 사용자 계정에 연결합니다. 이렇게하면 문제가 해결되고 스택을 생성 할 수 있습니다.


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": "*"
        }
    ]
}

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

With a gist showing the policies JSON they recommend.


Give "administrator" access to the user you created

ReferenceURL : https://stackoverflow.com/questions/34237218/user-is-not-authorized-to-perform-cloudformationcreatestack

반응형