Programing

AWS CLI 도구에서 AWS 계정 번호를 얻는 빠른 방법은 무엇입니까?

crosscheck 2020. 9. 18. 07:37
반응형

AWS CLI 도구에서 AWS 계정 번호를 얻는 빠른 방법은 무엇입니까?


내 계좌 번호를 빠르게 가져 오는 방법을 찾고 있었는데, 원래 사용 aws iam get-account-authorization-details --max-items 1하려고 생각 했지만 이렇게하는 데 몇 가지 문제가 있습니다. 계정 출처를 교차하지 않는 방법이 있습니까?


다음을 사용하여 Secure Token Service 하위 명령 에서 계정 번호를 가져올 수 있습니다 get-caller-identity.

aws sts get-caller-identity --output text --query 'Account'

AWS PowerShell CLI에 대한관련 답변에서 계정 ID는 생성 한 리소스 Arn의 일부이며 자동으로 생성되는 리소스입니다. 일부 리소스는 사용자를 OwnerId로도 나열합니다.

기본 보안 그룹은 예약 된 보안 그룹으로 각 리전의 기본 VPC에 자동으로 생성됩니다. 로부터 문서 :

기본 보안 그룹은 삭제할 수 없습니다. EC2-Classic 기본 보안 그룹을 삭제하려고하면 다음 오류가 발생합니다. Client.InvalidGroup.Reserved : 보안 그룹 'default'가 예약되어 있습니다. VPC 기본 보안 그룹을 삭제하려고하면 다음 오류가 표시됩니다. Client.CannotDelete : 지정된 그룹 : "sg-51530134"이름 : "default"는 사용자가 삭제할 수 없습니다.

따라서 EC2 classic에 있거나 기본 VPC가있는 한 계정 ID를 검색 할 수있는 신뢰할 수있는 후보가됩니다 (*없는 경우 엣지 사례 참조).

예:

aws ec2 describe-security-groups \
    --group-names 'Default' \
    --query 'SecurityGroups[0].OwnerId' \
    --output text

이것은 --query이 요청의 첫 번째 결과에 대해 출력을 "소유자 ID"로 필터링하는 데 사용 --output하고 계정 ID를 일반 텍스트로 출력하는 데 사용 합니다.

123456781234

에지 케이스 :

(@kenchew에게 감사드립니다) 지정된 리전에서 기본 VPC를 삭제 한 경우이 보안 그룹이 더 이상 존재하지 않으므로 다음 대체 솔루션 중 하나를 사용해야합니다.

추가 읽기 :


위임 된 역할로 실행되는 서버에서 실행중인 경우을 호출 할 수 없습니다 aws sts get-caller-identity. 또한 describe-security-groups항상 --group-names필터를 사용할 수는 없으므로 (기본 VPC가없는 경우 작동하지 않음) 첫 번째 보안 그룹을 선택하기 만하면됩니다. 어떤 종류의 인증을 사용하는지 또는 어떤 종류의 VPC를 가지고 있는지에 관계없이 이것이 가장 신뢰할 수있는 것으로 나타났습니다.

aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text

aws iam get-user [--profile <profile>]이것이 작동하려면 IAM 셀프 서비스 역할 만 필요하므로 제가 가장 좋아하는 방법은 사용 하는 것입니다.

참고 URL : https://stackoverflow.com/questions/33791069/quick-way-to-get-aws-account-number-from-the-aws-cli-tools

반응형