Ища быстрый способ получить номер моего счета, я изначально думал об использовании aws iam get-account-authorization-details --max-items 1
но с этим было несколько проблем. Есть ли способ сделать это, что не может пересечь происхождение аккаунта?
Быстрый способ получить номер учетной записи AWS из инструментов AWS CLI?
Ответ 1
Вы можете получить номер учетной записи из подкоманды Secure Token Service subcommand get-caller-identity
, используя следующую информацию:
aws sts get-caller-identity --output text --query 'Account'
Ответ 2
Из моего связанного ответа для CLI AWS PowerShell ваш идентификатор учетной записи является частью арн ресурсов, которые вы создаете... и тех, которые создаются автоматически для вас. Некоторые ресурсы также будут указывать вас как OwnerId.
Группа безопасности по умолчанию автоматически создается для каждого VPC региона по умолчанию в качестве зарезервированной группы безопасности. Из документации:
Вы не можете удалить группу безопасности по умолчанию. Если вы попытаетесь удалить группу безопасности по умолчанию EC2-Classic, вы получите следующую ошибку: Client.InvalidGroup.Reserved: группа безопасности по умолчанию зарезервирована. Если вы попытаетесь удалить группу безопасности по умолчанию VPC, вы получите следующую ошибку: Client.CannotDelete: указанная группа: "sg-51530134" name: "default" не может быть удален пользователем.
Это делает его надежным кандидатом для получения нашего идентификатора учетной записи, если вы находитесь в EC2 classic или у вас есть VPC по умолчанию (* смотрите крайние случаи, если вы этого не сделаете).
Пример:
aws ec2 describe-security-groups \
--group-names 'Default' \
--query 'SecurityGroups[0].OwnerId' \
--output text
Он использует --query
для фильтрации вывода до "идентификатора владельца" для первого результата этого запроса, а затем использует --output
для вывода идентификатора вашей учетной записи в виде открытого текста:
123456781234
Краевые случаи:
(Спасибо @kenchew) Обратите внимание, что если вы удалили свой VPC по умолчанию в данном регионе, эта группа безопасности больше не существует, и вам следует использовать одно из следующих альтернативных решений:
- запросить идентификацию вызывающего абонента STS, согласно @Taras
- использовать первую возвращенную группу безопасности для @Phillip
Дальнейшее чтение:
Ответ 3
Если вы работаете на сервере, который работает с предполагаемой ролью, вы не можете вызвать aws sts get-caller-identity
. Кроме того, при describe-security-groups
вы не всегда можете использовать фильтр --group-names
(он не работает, если у вас нет VPC по умолчанию), поэтому просто выберите первую группу безопасности. Я нашел это самым надежным независимо от того, какую аутентификацию вы используете или какой VPC у вас есть.
aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text
Ответ 4
Мой любимый метод - использовать aws iam get-user [--profile <profile>]
поскольку для этого вам нужна только роль самообслуживания IAM.