概要
Boto3(AWS SDK for Python)の利用する認証情報取得後、Account_ID を取得する Pythonプログラムを作成してみました。
- 利用する認証情報の取得方法は、以下3パターン
- カレント接続情報 : ~/.zchenv 等に定義している AWSの認証情報
- プロファイル情報 : ~/.aws/credentials に定義している AWSの認証情報
- 環境変数情報 : 別途、~/.zchenv 等で定義した AWSの認証情報
実行環境
macOS Monterey 12.3.1
python 3.8.12
設定ファイルの例
.zchenv
# AWS
export AWS_ACCESS_KEY_ID=AAAAAAAAAAAAAAAAAAAA
export AWS_SECRET_ACCESS_KEY=DEPAP77776666KLxvbLA75075OtttJUUU+ch5pr7
export AWS_DEFAULT_REGION=ap-northeast-1
# AWS Billing
export AWS_COST_ALL_ID=BBBBBBBBBBBBBBBBBBBB
export AWS_COST_ALL_KEY=BIPAP55554444KLxvbLA53053OtttJUUU+ch3pr5
.aws/credentials
[default]
aws_access_key_id = AAAAAAAAAAAAAAAAAAAA
aws_secret_access_key = DEPAP77776666KLxvbLA75075OtttJUUU+ch5pr7
[billing]
aws_access_key_id = BBBBBBBBBBBBBBBBBBBB
aws_secret_access_key = BIPAP55554444KLxvbLA53053OtttJUUU+ch3pr5
[iapp]
aws_access_key_id = CCCCCCCCCCCCCCCCCCCC
aws_secret_access_key = IAPAP33332222KLxvbLA31031OtttJUUU+ch1pr3
実行プログラム
GetAccountId.py
import os
import boto3
#
# カレント接続情報からの Account_IDの取得
#
def get_current_account_id():
client = boto3.client('sts')
account_id = client.get_caller_identity()["Account"]
print("\nカレント接続情報からの Account_IDの取得 : ", account_id, "\n")
#
# プロファイル情報からの Account_IDの取得
#
def get_profile_account_id():
session = boto3.session.Session(profile_name='iapp')
client = session.client('sts')
account_id = client.get_caller_identity()["Account"]
print("プロファイル情報からの Account_IDの取得 : ", account_id, "\n")
#
# 環境変数情報からの Account_IDの取得
#
# 各アカウントの認証情報
ACCOUNT_ENV = {
"BILLING_ID": os.environ['AWS_COST_ALL_ID'],
"BILLING_KEY": os.environ['AWS_COST_ALL_KEY']
}
def get_environment_account_id():
session = boto3.session.Session(aws_access_key_id=ACCOUNT_ENV['BILLING_ID'], aws_secret_access_key=ACCOUNT_ENV['BILLING_KEY'])
client = session.client('sts')
account_id = client.get_caller_identity()["Account"]
print("環境変数情報からの Account_IDの取得 : ", account_id, "\n")
# メイン
if __name__ == '__main__':
get_current_account_id()
get_profile_account_id()
get_environment_account_id()
プログラムの実行
## それぞれの方法による Account_ID の取得
$ python GetAccountId.py
カレント接続情報からの Account_IDの取得 : 111111111111
プロファイル情報からの Account_IDの取得 : 222222222222
環境変数情報からの Account_IDの取得 : 333333333333
まとめ
これで Lambda/Functions の利用時、環境変数で定義した認証情報を取得できるようになりました
参考記事
以下の記事を参考にさせていただきました。感謝申し上げます。
Boto3(AWS SDK for Python)の利用する認証情報