Boto3を使ってAWS Glueのセキュリティ設定をページネーションで一覧取得する方法
この記事では、boto3ライブラリを使用して、AWS Glueに登録されているセキュリティ設定(Security Configuration)をページネーションしながら効率的に一覧取得する方法を解説します。
課題
問題: Pythonのboto3ライブラリを使い、自分のAWSアカウント内のAWS Glue Data Catalogに作成されたセキュリティ設定を、ページ分割(ページネーション)しながら取得すること。
解決のためのアプローチと手順
ステップ1: 例外処理のために boto3 と botocore.exceptions(ClientErrorなど)をインポートします。
ステップ2: この関数では max_items、page_size、starting_token の3つがオプションパラメータとして指定できます。
max_items: 取得するレコードの合計数を表します。利用可能なレコード数が max_items を超える場合は、ページネーションを再開するための NextToken がレスポンスに含まれます。
page_size: 1ページあたりのレコード数(ページサイズ)を表します。
starting_token: ページネーションを途中から再開するためのトークンです。前回のレスポンスに含まれていた NextToken を指定します。
ステップ3: boto3 を使ってAWSセッションを作成します。デフォルトプロファイルに region_name が設定されていることを確認してください。設定されていない場合は、セッション作成時に明示的に region_name を渡す必要があります。
ステップ4: AWS Glue用のクライアントを作成します。
ステップ5: get_security_configurations APIに対する paginator オブジェクトを作成し、すべてのセキュリティ設定の情報を扱えるようにします。
ステップ6: paginate() 関数を呼び出し、max_items、page_size、starting_token を PaginationConfig として渡します。
ステップ7: MaxItems と PageSize の設定に応じた件数のレコードが返されます。
ステップ8: ページネーション処理中にエラーが発生した場合に備え、汎用的な例外ハンドリングを行います。
サンプルコード
以下のコードを使用すると、アカウント内に作成されたすべてのセキュリティ設定をページネーションしながら取得できます。
import boto3
from botocore.exceptions import ClientError
def paginate_through_security_configuration(max_items: int = None,
page_size: int = None,
starting_token: str = None):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
paginator = glue_client.get_paginator('get_security_configurations')
response = paginator.paginate(PaginationConfig={
'MaxItems': max_items,
'PageSize': page_size,
'StartingToken': starting_token
})
return response
except ClientError as e:
raise Exception("boto3 client error in paginate_through_security_configuration: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in paginate_through_security_configuration: " + e.__str__())
a = paginate_through_security_configuration(2, 5)
print(*a)実行結果
{'SecurityConfigurations': [
{'Name': 'test-sc', 'CreatedTimeStamp': datetime.datetime(2020, 9, 24, 1, 53, 21, 265000, tzinfo=tzlocal()), 'EncryptionConfiguration': {'S3Encryption': [{'S3EncryptionMode': 'SSE-KMS', 'KmsKeyArn': 'arn:aws:kms:us-east-1:*************:key/***************'}]}},
{'Name': 'port-sc', 'CreatedTimeStamp': datetime.datetime(2020, 11, 6, 0, 38, 3, 753000, tzinfo=tzlocal()), 'EncryptionConfiguration': {'S3Encryption': [{'S3EncryptionMode': 'SSE-KMS', 'KmsKeyArn': 'arn:aws:kms:us-east-1:********:key/***************'}]}}],
'NextToken': '',
'ResponseMetadata': {'RequestId': '**********', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Fri, 02 Apr 2021 13:19:57 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '826', 'connection': 'keep-alive', 'x-amzn-requestid': '*********'}, 'RetryAttempts': 0}}まとめ
boto3のpaginator機能を活用すれば、AWS Glueのセキュリティ設定を大量に保有している環境でも、MaxItems や PageSize を制御しながら安定してデータを取得できます。レスポンスに含まれる NextToken を次の呼び出しの StartingToken に渡すことで、シームレスにページ送りが可能です。また、ClientErrorなどの例外を適切にハンドリングすることで、堅牢なスクリプトを実装できます。
-
Boto3を使ってAWS Glue Data Catalogのセキュリティ構成・暗号化設定を取得する方法
はじめにこの記事では、Pythonのboto3ライブラリを使用して、AWS Glue Data Catalogのセキュリティ構成(暗号化設定)を取得する方法を解説します。Data Catalogの暗号化設定を確認することで、保存時の暗号化(Encryption at Rest)や接続パスワードの暗号化状態を把握できます。課題Pythonのboto3ライブラリを使って、カタログのセキュリティ構成/暗号化設定を取得します。例として、指定したカタログの暗号化設定情報を取得するコードを見ていきましょう。解決のためのアプローチと手順ステップ1: 例外処理のために、boto3とbotocore.excep
-
Boto3を使ってAWS Glueのジョブを削除する方法を徹底解説
AWS Glueは、ETL(抽出・変換・ロード)処理を簡単に実行できるサーバーレスのデータ統合サービスです。本記事では、Pythonのboto3ライブラリを使用して、自分のAWSアカウント内に作成済みのGlueジョブを削除する方法を、ステップごとにわかりやすく解説します。 課題 Pythonのboto3ライブラリを使って、AWSアカウント内に作成されたGlueジョブを削除します。 例: アカウント内に作成された「transfer_from_s3」というGlueジョブを削除します。 解決のためのアプローチとアルゴリズム ステップ1: 例外処理のために、boto3とbotocoreの例外モジュール