AWS CLIツールからAWSアカウント番号を取得する簡単な方法は?


99

私は口座番号を取得する簡単な方法を探していましたが、最初は使用することを考えてaws iam get-account-authorization-details --max-items 1いましたが、この方法を使用することにはいくつかの問題があります。これを行う方法は、アカウントの起点をクロスしない可能性がありますか?

回答:


217

Secure Token Serviceサブコマンドからアカウント番号を取得するにget-caller-identityは、以下を使用します。

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

2
デフォルトのセキュリティグループを削除できるため、これはセキュリティグループよりもはるかに信頼性が高いはずです。
Justin

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 2018

@BMW残念ながらjq、システムへの関与やシステムへのインストールに常に依存することはできません。一部のサーバーは、セキュリティ上の理由により、無関係なパッケージのインストールを禁止しています。あなたはこのようなことをすることができますaws sts get-caller-identity --output json |grep Account |awk -F ': "' '{print$2}' |sed 's/\".*//'が、それは少し厄介であり--query 'Account' --output text、その時点でそうすることもできます。
愛媛

33

AWS PowerShell CLIに対する私の関連する回答から、アカウントIDは、ユーザーが作成したリソースの一部であり、自動的に作成されます。一部のリソースでは、OwnerIdとしてもリストされます。

デフォルトセキュリティグループは、各リージョンのデフォルトVPCで予約済みセキュリティグループとして自動的に作成されます。ドキュメントから:

デフォルトのセキュリティグループは削除できません。EC2-Classicのデフォルトのセキュリティグループを削除しようとすると、次のエラーが発生します。Client.InvalidGroup.Reserved:セキュリティグループ「デフォルト」は予約されています。VPCデフォルトセキュリティグループを削除しようとすると、次のエラーが発生します。Client.CannotDelete:指定されたグループ: "sg-51530134"名前: "default"はユーザーが削除できません。

これにより、EC2クラシックを使用している場合、またはデフォルトの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年後..)
Suitupgeek

2

aws iam get-user [--profile <profile>]これを機能させるには、IAMセルフサービスの役割のみが必要なので、私のお気に入りの方法を使用します。


3
AssumedRole
Sanoob
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.