AWS/CLI

[CLI] ec2 describe-image-attribute 권한 에러

말라가시프랑랑 2022. 4. 25. 21:19
반응형

CLI로 AMI의 자세한 속성을 알기 위해서 describe-image-attribute 명령어를 입력하는데 잘 되던 명령어가 갑자기 권한 에러가 뜨면서 안될 때가 있습니다. 분명히 aws credentials이나 프로필 설정 등을 제대로 했는데도 말입니다.

 

An error occurred (UnauthorizedOperation) when calling the DescribeImages operation: You are not authorized to perform this operation.

 

뭐 대충 이런 에러입니다. 

 

권한 에러가 발생하는 이유는 여러가지가 있겠지만 이 글에서는 프로필, IAM 설정 등 권한 관련 설정들이 정상이라고 가정하고 있지만 credentials, config 설정 등을 먼저 확인하는 것이 좋습니다. (호오오오옥시나)

일단 결과 먼저

파라메터로 입력한 AMI id가 해당 aws 계정 소유가 아닌 AMI 인지 확인합시다. aws 소유의 AMI나 다른 계정과 공유하고 있는 AMI를 대상으로 describe-image-attribute 명령을 실행하면 당연히 해당 AMI에 대한 권한이 없기 때문에 권한 에러가 발생하는 것입니다. 

해결 방법

권한이 있는 AMI id를 입력하거나,aws ec2 describe-images --owners 명령을 사용하여 AMI 리스트를 뽑은 후 사용합시다.

 

만약 해당 계정에 많은 AMI가 있을 경우, AMI id를 하나하나 입력하면서 describe-image-attribute 명령을 실행하는 것은 매우 비효율적입니다. 이때 aws ec2 describe-images 명령으로 AMI 리스트를 뽑아서 사용할 수 있습니다. 또한 --owners 옵션을 사용하여 어떤 소유자의 AMI만 갖고 올 것인지 그 범위를 지정하여 해당 범위(소유자)의 AMI 목록만 가져 오는 것이 가능합니다. 

 

--owners 옵션

--owners account_id 해당 계정 소유의 AMI
--owners self 본인 소유(정확하게는 cli 명령을 실행하는 계정)의 AMI  
--owners amazon amazon 소유의 AMI
--owners aws-marketplace marketplace 소유의 AMI
옵션 생략 모든 AMI

 

예를 들어 다음 명령을 실행한 경우입니다. 

# 본인 소유의 AMI 리스트 출력  
aws ec2 describe-images --owners self

 

 

Image Id만 출력하고 싶은 경우 아래의 명령어를 사용할 수 있습니다.

# AMI id만 텍스트 형식으로 출력

aws ec2 describe-images --owners self --query "Images[*].ImageId" --output text
반응형

'AWS > CLI' 카테고리의 다른 글

CLI --dry-run 옵션  (0) 2021.10.08