CDK로 AWS CloudFormation 스택을 생성, 업데이트, 삭제할 때 나타나는 ‘Role [role_arn] is invalid or cannot be assumed’ 오류를 해결해보자.
이 에러는 AWS IAM 서비스 역할에 문제가 있는 경우에 발생한다.
해결방법
IAM Role이 있는지 확인
1. AWS Console에 접속해서 IAM dashboard에 접속
2. IAM dashboard에서 Roles 선택
3. 에러 메세지에 언급된 IAM 역할 검색
ex) Stack Deployments Failed: ValidationError: Role arn:aws:iam::[USER Account]:role/[CDK-ROLE -NAME-REGION] is invalid or cannot be assumed 에러 메세지가 있으면 CDK-ROLE -NAME-REGION을 찾는다.
4. 해당 IAM 역할이 없는 경우 새 IAM 역할을 생성(Create Role 클릭)
5. Use cases for other AWS Services 창에서 CloudFormation 검색 후 선택
6.
6-1) Step2에서 Create Policy를 클릭해준 후 JSON에 아래 본문 입력
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
6-2) Tag는 그냥 넘어가고, Review Policy에서 Name은 원하는 것으로 지정 후 Create Policy
7. 다시 IAM Role 생성 화면으로 돌아가서 테이블 새로고침 클릭 후 생성한 Policy 선택 후 Next
8. Role name은 에러 메세지에 언급된 IAM 역할과 동일한 것으로 지정하고 principal과 permission 확인 후 next
ex) Stack Deployments Failed: ValidationError: Role arn:aws:iam::[USER Account]:role/[CDK-ROLE-NAME-REGION] is invalid or cannot be assumed 에러 메세지가 있으면 CDK-ROLE -NAME-REGION을 Role Name으로 지정
여기까지 했는데도 에러가 해결이 안된다면 다음 해결방법을 참조해보자.
추가 해결방법
1. C:\Users\admin\.aws 폴더를 삭제한다.
2. AWS CLI로 환경변수를 다시 한번 지정해준다.
2-1) Powershell을 관리자 권한 모드로 접속 후 자신의 정보에 맞게 입력
aws configure
#AWS Access Key ID [None]: "ACCESSKEYEXAMPLE"
#AWS Secret Access Key [None]: "SECRETACCESSKEYEXAMPLE"
#Default region name [None]: "DEFAULTREGION"
#Default output format [None]: Enter
2-2) 환경변수 설정
PS C:\> $Env:AWS_ACCESS_KEY_ID="ACCESSKEYEXAMPLE"
PS C:\> $Env:AWS_SECRET_ACCESS_KEY="SECRETACCESSKEYEXAMPLE"
PS C:\> $Env:AWS_DEFAULT_REGION="DEFAULTREGION"
3. cdk bootstrap으로 AWS 환경에 CDK Toolkit을 위한 스택을 다시 배포 한다.
cdk bootstrap [AWS Account]/[REGION] --profile=[AWS config File Account Name];
ex) cdk bootstrap 123456789/ap-northeast-2 --profile=default;
cdk bootstrap --trust [AWS Account] --profile=[AWS config File Account Name] --cloudformation-execution-policies 'arn:aws:iam::aws:policy/ AdministratorAccess';
ex) cdk bootstrap --trust 123456789 --profile=default --cloudformation-execution-policies 'arn:aws:iam::aws:policy/ AdministratorAccess';
5. 프로젝트 코드에 env 파일 또는 env를 설정하는 코드와 충돌 나는지 다시한번 확인한다.
6. cdk를 다시 돌리면 정상적으로 돌아가는 것을 확인할 수 있다.
'Cloud&Infra > AWS' 카테고리의 다른 글
AWS Command Line Interface(CLI) 기본개념 및 설치방법 (0) | 2023.05.11 |
---|---|
EC2 재실행 - docker run exited 에러를 해결한 방법(docker run always) (0) | 2023.04.11 |
Local MySQL dump를 EC2로 import하는 방법 (0) | 2023.04.07 |
AWS EC2에 MySQL 설치하기 (0) | 2023.04.06 |
AWS ECS CLI 설치 (0) | 2023.03.23 |