Відповіді:
Ви можете отримати номер рахунку в підкоманді Secure Token Service,get-caller-identity
використовуючи наступне:
aws sts get-caller-identity --query Account --output text
aws sts get-caller-identity|jq -r ".Account"
aws sts get-caller-identity --output json | jq '.Account' | sed 's/\"//g'
--query 'Account'
деталь.
jq
участь або встановлення в системі. Деякі сервери забороняють сторонні інсталяції пакетів через безпеку. Ви могли б зробити щось подібне, aws sts get-caller-identity --output json |grep Account |awk -F ': "' '{print$2}' |sed 's/\".*//'
але це трохи дратує, і ви могли б також зробити це --query 'Account' --output text
в той момент.
З моєї відповіді на відповідь для AWS PowerShell CLI , ваш ідентифікатор облікового запису є частиною Arn ресурсів, які ви створюєте ... і тих, які автоматично створюються для вас. Деякі ресурси також відображатимуть вас як OwnerId.
Група безпеки за замовчуванням автоматично створюється для вас у VPC кожного регіону за замовчуванням як зарезервована група безпеки. З документації :
Ви не можете видалити групу безпеки за замовчуванням. Якщо ви спробуєте видалити групу безпеки за замовчуванням EC2-Classic, ви отримаєте таку помилку: Client.InvalidGroup.Reserved: Група безпеки "за замовчуванням" зарезервована. Якщо ви спробуєте видалити групу безпеки VPC за замовчуванням, ви отримаєте таку помилку: Client.CannotDelete: вказана група: "sg-51530134" name: "default" не може бути видалений користувачем.
Це робить його надійним кандидатом для отримання нашого ідентифікатора облікового запису, якщо ви перебуваєте в класичній версії EC2 або маєте VPC за замовчуванням (* див. Крайні випадки, якщо цього немає).
Приклад:
aws ec2 describe-security-groups \
--group-names 'Default' \
--query 'SecurityGroups[0].OwnerId' \
--output text
Це використовує --query
для фільтрації результату до "ідентифікатора власника" для першого результату цього запиту, а потім використовує --output
для виведення ідентифікатора вашого облікового запису як відкритого тексту:
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.