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


100

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

답변:


219

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

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

2
기본 보안 그룹을 삭제할 수 있으므로 보안 그룹보다 훨씬 더 안정적이어야합니다.
저스틴

4
jq에 피드하면 더 짧은 명령aws sts get-caller-identity|jq -r ".Account"
BMW

변수에 저장해야했지만 추가 줄이 aws sts get-caller-identity --output json | jq '.Account' | sed 's/\"//g'
Asim

저에게는 --query 'Account'부품을 제거하면 작동합니다 .
coliveira

@BMW 불행히도 항상 jq시스템에 관여하거나 설치하는 것에 의존 할 수는 없습니다 . 일부 서버는 보안상의 이유로 외부 패키지 설치를 금지합니다. 당신은 이와 같은 것을 할 수 aws sts get-caller-identity --output json |grep Account |awk -F ': "' '{print$2}' |sed 's/\".*//'있지만 약간 성 가시고 --query 'Account' --output text그 시점에서 할 수도 있습니다 .
ehime

33

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를 삭제 한 경우이 보안 그룹이 더 이상 존재하지 않으므로 다음 대체 솔루션 중 하나를 사용해야합니다.

추가 읽기 :


9

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

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

이것에 동의하십시오. get-caller-identity는 그들이 맡은 역할에 관계없이 항상 사용자 계정을 반환하는 것처럼 보입니다. 당신이 맡은 역할을 원하는 경우에 당신은 여전히이 같은 사용 뭔가를 필요로 표시 (2 년 후 ..)
suitedupgeek

2

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


3
사용할 때 그것은하지 작업을 수행, 그 주 AssumedRole
Sanoob
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.