🐧

AWS Config関連でよく使う処理をまとめてみた(Python)

2022/01/27に公開

はじめに

こんにちは、クラスメソッド サービスグロースチームの筧です。

最近、AWSアカウントの初期設定を Lambda で実施する機会がありました。今回は AWS Config 関連の処理についてブログ向けに汎化してご紹介します。各設定値はサンプルですので、ご利用の環境に合わせて変更ください。

テンプレート

AWS Config 関連の処理をまとめたプログラムが以下になります。ConfigServiceクラスを呼び出して、必要な設定を実施ください。

https://github.com/takaakikakei/sls-services-snippet/blob/main/src/services/aws_config.py

以下は抜粋です。

src/services/aws_config.py(抜粋)
import logging
import re
from typing import Dict, List

import boto3.session
from botocore.config import Config
from mypy_boto3_config.client import ConfigServiceClient

logger = logging.getLogger()
logger.setLevel(logging.INFO)


class ConfigService:
    def __init__(self):
        self.session = boto3.session.Session()

    def put_configuration_recorder(
        self,
        role_arn: str,
        resource_types: List,
        region_name: str,
        name="default",
        all_supported=False,
        include_global_resource_types=False,
    ) -> None:
        """
        refs: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/config.html#ConfigService.Client.put_configuration_recorder
        """
        try:
            client: ConfigServiceClient = self.session.client(
                "config",
                region_name=str(region_name),
                config=Config(),
            )
            client.put_configuration_recorder(
                ConfigurationRecorder={
                    "name": name,
                    "roleARN": role_arn,
                    "recordingGroup": {
                        "allSupported": all_supported,
                        "includeGlobalResourceTypes": include_global_resource_types,
                        "resourceTypes": resource_types,
                    },
                }
            )
        except Exception as e:
            logger.error(e)
            return
        else:
            return

使い方

以下のブログで同様の紹介をしているので参照ください。

https://zenn.dev/t_kakei/articles/3f4f761576960e

あとがき

最後まで読んでいただきありがとうございます。以下はハマりやすいのでご注意ください。

boto3からAWS Configの有効化を実施する場合にはstart_configuration_recorder()を使う必要があったりして、マネジメントコンソールからだと見えない部分が多いので注意が必要です。

https://dev.classmethod.jp/articles/set-aws-config-all-region-with-python/

他サービスについても今後スニペットを紹介予定なのでお楽しみに。
それではまた!

Discussion