

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

# AWS リソース評価を自動化する
<a name="automate-aws-resource-assessment"></a>

*Amazon Web Services、Naveen Suthar、Arun bagal、Manish Garg、Sandeep Gawande*

## 概要
<a name="automate-aws-resource-assessment-summary"></a>

このパターンでは、[AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html) を使用してリソース評価機能を設定する自動化アプローチを説明します。このパターンを使用すると、運用チームはリソース監査の詳細を自動的に収集し、AWS アカウントにデプロイされたすべてのリソースの詳細を単一のダッシュボードに表示できます。このパターンは、以下に示すユースケースで役立ちます。
+ infrastructure as code (IaC) ツールを特定し、[HashiCorp Terraform](https://www.terraform.io/)、[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)、AWS CDK、[AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) など、さまざまな IaC ソリューションによって作成されたリソースを孤立化します。
+ リソース監査情報を取得する

このソリューションは、リーダーシップチームが単一ダッシュボードから AWS アカウントのリソースとアクティビティに関する洞察を得る上でも役立ちます。


| 
| 
| 注: [Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) は有料サービスです。データを分析し、ダッシュボードを作成する前に、[Amazon Quick Sight の料金](https://aws.amazon.com/quicksight/pricing/)を確認してください。 | 
| --- |

## 前提条件と制限
<a name="automate-aws-resource-assessment-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ AWS Identity and Access Management (IAM) ロールとプロビジョンリソースへのアクセス権限
+ Amazon [Simple Storage Service (Amazon Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)[S3) と Amazon Athena にアクセスできるように作成された Amazon Quick アカウント](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html) [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)
+ AWS CDK バージョン 2.55.1 以降がインストールされている 
+ [Python](https://www.python.org/downloads/release/python-390/) 3.9 以降がインストールされている

**制限**
+ このソリューションは単一 AWS アカウントにデプロイされます。
+ このソリューションは、AWS CloudTrail がすでにセットアップされ、S3 バケットにデータを保存していない限り、デプロイ前に発生したイベントを追跡しません。

**製品バージョン**
+ AWS CDK バージョン 2.55.1 またはそれ以降
+ Python バージョン 3.9 以降

## アーキテクチャ
<a name="automate-aws-resource-assessment-architecture"></a>

**ターゲットテクノロジースタック**
+ Amazon Athena
+ AWS CloudTrail
+ AWS Glue
+ AWS Lambda
+ Amazon Quick Sight
+ Amazon S3

**ターゲットアーキテクチャ**

AWS CDK コードは、AWS アカウントへのリソース評価機能の設定に必要なすべてのリソースをデプロイします。次の図は、CloudTrail ログを AWS Glue、Amazon Athena、および Quick Sight に送信するプロセスを示しています。

![\[AWS Glue、Amazon Athena、Amazon QuickSight を使用した AWS リソース評価は 6 つのステップから成るプロセスです。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/a504774e-db7a-4c36-a22c-ce56d252fb58/images/8f2b549d-33a8-4cbf-86fd-33244716b668.png)


1. CloudTrail は、ストレージ用にログを S3 バケットに送信します。

1. イベント通知は、ログを処理してフィルタリングされたデータを生成する Lambda 関数を呼び出します。

1. フィルタリングされたデータは、別の S3 バケットに保存されます。

1. S3 バケット内のフィルタリングされたデータに AWS Glue クローラーを設定して、AWS Glue データカタログテーブルにスキーマを作成します。

1. フィルタリングされたデータを Amazon Athena によってクエリする準備ができました。

1. クエリされたデータは、Quick Sight によって視覚化のためにアクセスされます。

**自動化とスケール**
+ AWS Organizations に組織全体の CloudTrail トレイルがある場合は、このソリューションを 1 つの AWS アカウントから複数の AWS アカウントに拡張できます。CloudTrail を組織レベルでデプロイすることで、このソリューションを使用して、必要なすべてのリソースのリソース監査詳細を取得することもできます。
+ このパターンでは、AWS サーバーレスリソースを使用してソリューションをデプロイします。

## ツール
<a name="automate-aws-resource-assessment-tools"></a>

**AWS サービス**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) はインタラクティブなクエリサービスで、Amazon S3 内のデータをスタンダード SQL を使用して直接分析できます。
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) は、AWS クラウドインフラストラクチャをコードで定義してプロビジョニングするのに役立つソフトウェア開発フレームワークです。
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) を使用すると、AWS リソースをセットアップし、迅速かつ一貫したプロビジョニングをし、AWS アカウントと AWS リージョンにわたってライフサイクル全体のリソースを管理できます。
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) は、AWS アカウントのガバナンス、コンプライアンス、運用面のリスクの監査をサポートします。
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) は、フルマネージド型の抽出、変換、ロード (ETL) サービスです。これにより、データストアとデータストリーム間でのデータの確実な分類、整理、強化、移動をサポートできます。このパターンでは、AWS Glue クローラーと AWS Glue データカタログテーブルを使用します。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。
+ [Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) は、単一のダッシュボードでデータを視覚化、分析、レポートするのに役立つクラウドスケールのビジネスインテリジェンス (BI) サービスです。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。

**コードリポジトリ**

このパターンのコードは、GitHub 内の「[infrastructure-assessment-iac-automation](https://github.com/aws-samples/infrastructure-assessment-iac-automation)」リポジトリで利用できます。

コードリポジトリには、以下のファイルとフォルダが含まれます。
+ `lib` フォルダ — AWS CDK は、AWS リソースの作成に使用される Python ファイルをコンストラクトします。
+ `src/lambda_code` — Lambda 関数で実行される Python コード
+ `requirements.txt` — インストールする必要があるすべての Python 依存関係のリスト
+ `cdk.json` — リソースの起動に必要な値を提供する入力ファイル

## ベストプラクティス
<a name="automate-aws-resource-assessment-best-practices"></a>

Lambda 関数のモニタリングとアラートを設定します。詳細については、[Lambda 関数をモニタリングおよびトラブルシューティングする](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html)を参照してください。Lambda 関数を使用する際の一般的なベストプラクティスについては、[AWS ドキュメント](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html)を参照してください。

## エピック
<a name="automate-aws-resource-assessment-epics"></a>

### 環境をセットアップします。
<a name="set-up-your-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ローカルマシンにリポジトリを複製します。 | リポジトリを複製するには、`git clone https://github.com/aws-samples/infrastructure-assessment-iac-automation.git` コマンドを実行します。 | AWS DevOps、DevOps エンジニア | 
| Python 仮想環境を設定し、必要な依存関係をインストールします。 | Python 仮想環境をセットアップするには、次のコマンドを実行します。<pre>cd infrastructure-assessment-iac-automation<br />python3 -m venv .venv<br />source .venv/bin/activate</pre>必要な依存関係を設定するには、`pip install -r requirements.txt` コマンドを実行します。 | AWS DevOps、DevOps エンジニア | 
| AWS CDK 環境をセットアップし、AWS CDK コードを合成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps、DevOps エンジニア | 

### ローカルマシンで AWS 認証情報をセットアップする
<a name="set-up-aws-credentials-on-your-local-machine"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| スタックをデプロイするアカウントとリージョンの変数をエクスポートします。 | 環境変数を使用して AWS CDK の AWS 認証情報を提供には、次のコマンドを実行します。<pre>export CDK_DEFAULT_ACCOUNT=<12 Digit AWS Account Number><br />export CDK_DEFAULT_REGION=<region></pre> | AWS DevOps、DevOps エンジニア | 
| AWS CLI プロファイルをセットアップします。 | アカウントの AWS CLI プロファイルを設定するには、[AWS ドキュメント](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/keys-profiles-credentials.html)の指示に従います。 | AWS DevOps、DevOps エンジニア | 

### リソース評価ツールを設定してデプロイする
<a name="configure-and-deploy-the-resource-assessment-tool"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アカウントにリソースをデプロイします。 | AWS CDK を使用して AWS アカウントにリソースをデプロイするには、以下を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps | 
| AWS Glue クローラーを実行し、データカタログテーブルを作成します。 | [AWS Glue クローラー](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)は、データスキーマを動的に保つために使用されます。このソリューションは、AWS Glue クローラースケジューラーの定義に従ってクローラーを定期的に実行することで、[AWS Glue データカタログテーブル](https://docs.aws.amazon.com/athena/latest/ug/querying-glue-catalog.html)のパーティションを作成および更新します。出力 S3 バケットでデータが使用できるようになると、次のステップを使用して AWS Glue クローラーを実行し、テスト用の Data Catalog テーブルスキーマを作成します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html)AWS CDK コードは AWS Glue クローラーを特定の時間に実行するように設定しますが、オンデマンドで実行することもできます。 | AWS DevOps、DevOps エンジニア | 
| Quick Sight コンストラクトをデプロイします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps、DevOps エンジニア | 
| Quick Sight ダッシュボードを作成します。 | Quick Sight ダッシュボードと分析の例を作成するには、以下を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html)詳細については、[「Amazon Quick Sight での分析の開始](https://docs.aws.amazon.com/quicksight/latest/user/creating-an-analysis.html)」および[「Amazon Quick Sight でのビジュアルタイプ](https://docs.aws.amazon.com/quicksight/latest/user/working-with-visual-types.html)」を参照してください。 | AWS DevOps、DevOps エンジニア | 

### ソリューション内のすべての AWS リソースをクリーンアップする
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS リソースを削除します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps、DevOps エンジニア | 

### AWS リソース評価ツールの自動化のトップに追加機能を設定する
<a name="set-up-additional-features-on-top-of-the-aws-resource-assessment-tool-automation"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 手動で作成したリソースを監視してクリーンアップします。 | (オプション) アプリケーションに IaC ツールを使用してリソースを作成するというコンプライアンス要件がある場合は、AWS リソース評価ツールの自動化を使用して手動でプロビジョニングされたリソースを取得することで、コンプライアンスを達成できます。また、このツールを使用して、リソースを IaC ツールにインポートまたはリソースを再作成できます。手動でプロビジョニングされたリソースを監視するには、以下の高レベルのタスクを実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps、DevOps エンジニア | 

## トラブルシューティング
<a name="automate-aws-resource-assessment-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| AWS CDK はエラーを返します。 | AWS CDK の問題に関するヘルプは、[一般的な AWS CDK 問題をトラブルシューティングする](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html)を参照してください。 | 

## 関連リソース
<a name="automate-aws-resource-assessment-resources"></a>
+ [Python で Lambda 関数を構築する](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [AWS CDK の使用を開始する](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Python の AWS CDK を使用する](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
+ [CloudTrail ログ証跡を作成する](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [Amazon Quick Sight の使用を開始する](https://aws.amazon.com/quicksight/getting-started/)

## 追加情報
<a name="automate-aws-resource-assessment-additional"></a>

**複数アカウント**

複数アカウントの AWS CLI 認証情報を設定するには、AWS プロファイルを使用します。詳細については、[AWS CLI をセットアップする](https://aws.amazon.com/getting-started/guides/setup-environment/module-three/)」の*複数のプロファイルの設定する*セクションを参照してください。

**AWS CDK コマンド**

AWS CDK を使用する際は、以下の便利なコマンドに注意してください。
+ アプリ内のすべてのスタックを一覧表示

  ```
  cdk ls
  ```
+ 合成された AWS CloudFormation テンプレートを発行

  ```
  cdk synth
  ```
+ スタックをデフォルトの AWS アカウントとリージョンにデプロイ

  ```
  cdk deploy
  ```
+ デプロイされたスタックを現在の状態と比較

  ```
  cdk diff
  ```
+ AWS CDK ドキュメントを開く

  ```
  cdk docs
  ```