LoginSignup
1
1

More than 1 year has passed since last update.

Pythonで Boto3(AWS SDK for Python)の利用する認証情報を取得してみました

Posted at

概要

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)の利用する認証情報

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1