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

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



답변

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

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


답변

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 셀프 서비스 역할 만 필요 하기 때문에 제가 가장 좋아하는 방법은 사용 하는 것입니다.


답변