

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Troposphere を使用して AWS Config マネージドルールを含む AWS CloudFormation テンプレートを生成します
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere"></a>

*Lucas Nation と Freddie Wilson、Amazon Web Services*

## 概要
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere-summary"></a>

多くの組織は、「[AWS Config マネージド](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html)」ルールを使用して、Amazon Web Services (AWS) リソースのコンプライアンスを一般的なベストプラクティスに照らして評価しています。ただし、これらのルールは保守に時間がかかる場合があり、このパターンは Python ライブラリである「[Troposphere](https://troposphere.readthedocs.io/en/latest/quick_start.html)」を活用して AWS Config マネージドルールを生成および管理するのに役立ちます。

このパターンは、Python スクリプトを使用して AWS マネージドルールを含む Microsoft Excel スプレッドシートを AWS CloudFormation テンプレートに変換することで、AWS Config マネージドルールを管理するのに役立ちます。Troposphere は infrastructure as code (IaC) として機能します。つまり、JSON や YAML 形式のファイルを使用する代わりに、マネージドルールで Excel スプレッドシートを更新できるということです。次に、このテンプレートを使用して AWS CloudFormation スタックを起動し、AWS アカウントのマネージドルールを作成および更新します。

AWS CloudFormation テンプレートは Excel スプレッドシートを使用して各 AWS Config マネージドルールを定義し、AWS マネジメントコンソールで個々のルールを手動で作成する手間を省くのに役立ちます。このスクリプトでは、各マネージドルールのパラメータは空の辞書にデフォルト設定され、`ComplianceResourceTypes` スコープのデフォルトは `THE_RULE_IDENTIFIER.template file` からになります*。*ルール識別子の詳細については、AWS Config ドキュメントの「[AWS CloudFormation テンプレートを使用した AWS Config マネージドルールの作成](https://docs.aws.amazon.com/config/latest/developerguide/aws-config-managed-rules-cloudformation-templates.html)」を参照してください。

## 前提条件と制限事項
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ AWS CloudFormation テンプレートを使用して AWS Config マネージドルールを作成することに精通していること。これに関する詳細については、AWS Config ドキュメントの「[AWS CloudFormation テンプレートを使用した AWS Config マネージドルールの作成](https://docs.aws.amazon.com/config/latest/developerguide/aws-config-managed-rules-cloudformation-templates.html)」を参照してください。 
+ Python 3 がインストールされ、設定されています。詳細については、「[Python ドキュメント](https://www.python.org/)」を参照してください。
+ 既存の統合開発環境 (IDE)。 
+ サンプル `excel_config_rules.xlsx` Excel スプレッドシート (添付) の列で組織単位 (OU) を特定します。

## エピック
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere-epics"></a>

### AWS Config マネージドルールのカスタマイズと設定
<a name="customize-and-configure-the-aws-config-managed-rules"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| サンプル Excel スプレッドシートを更新してください。 | サンプル `excel_config_rules.xlsx` Excel スプレッドシート (添付) をダウンロードし、使用したい AWS Config マネージドルールを `Implemented` としてラベルを付けます。 `Implemented` とマークされたルールは AWS CloudFormation テンプレートに追加されます。 | 開発者 | 
| (オプション) config\$1rules\$1params.json ファイルを AWS Config ルールパラメータで更新します。 | 一部の AWS Config マネージドルールはパラメータを必要とするため、`--param-file` オプションを使用して JSON ファイルとして Python スクリプトに渡す必要があります。たとえば、`access-keys-rotated` マネージドルールは次の `maxAccessKeyAge` パラメータを使用します。<pre>{<br />         "access-keys-rotated": {<br />             "InputParameters": {<br />                 "maxAccessKeyAge": 90<br />             }<br />         }<br />     }</pre>このサンプルパラメータでは、`maxAccessKeyAge` は 90 日に設定されています。スクリプトはパラメータファイルを読み取り、見つかった `InputParameters` をすべて追加します。 | 開発者 | 
| (オプション) config\$1rules\$1params.json ファイルを AWS Config コンプライアンスリソースタイプで更新します。 | デフォルトでは、Python スクリプトは AWS 定義のテンプレートから `ComplianceResourceTypes` を取得します。特定の AWS Config マネージドルールの範囲をオーバーライドする場合は、`--param-file` オプションを使用して JSON ファイルとして Python スクリプトに渡す必要があります。たとえば、次のサンプルコードは、`ec2-volume-inuse-check` の `ComplianceResourceTypes` を `["AWS::EC2::Volume"]` リストに設定する方法を示しています。<pre>{<br />         "ec2-volume-inuse-check": {<br />             "Scope": {<br />                 "ComplianceResourceTypes": [<br />                     "AWS::EC2::Volume"<br />                 ]<br />             }<br />         }<br />     }</pre> | 開発者 | 

### Python スクリプトを実行する。
<a name="run-the-python-script"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| requirements.txt ファイルから pip パッケージをインストールします。 | `requirements.txt` ファイル (添付) をダウンロードし、IDE で次のコマンドを実行して Python パッケージをインストールします。`pip3 install -r requirements.txt` | 開発者 | 
|  Python スクリプトを実行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.html)また、次のオプションパラメータを含めることができます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.html) | 開発者 | 

### AWS Config マネージドルールをデプロイする
<a name="deploy-the-aws-config-managed-rules"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS CloudFormation スタックを起動します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.html) | 開発者 | 

## アタッチメント
<a name="attachments-07c1cfff-fc9e-4a1f-bd36-48f025808bd8"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/07c1cfff-fc9e-4a1f-bd36-48f025808bd8/attachments/attachment.zip)」