Amazon S3 へのAmazon EMR ロギングが有効になっていることを確認する - AWS 規範ガイダンス

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

Amazon S3 へのAmazon EMR ロギングが有効になっていることを確認する

作成者: Priyanka Chaudhary (AWS)

環境:本稼働

テクノロジー: 分析、セキュリティ、アイデンティティ、コンプライアンス、サーバーレス

ワークロード: オープンソース

AWS サービス: Amazon EMR、Amazon S3、Amazon SNSAmazon CloudWatch

[概要]

このパターンは、Amazon Web Services (AWS) で実行されている Amazon EMR クラスターのロギング設定を監視するセキュリティコントロールを提供します。

Amazon EMR は、ビッグデータの処理と分析のための AWS ツールです。Amazon EMR は、社内でクラスターコンピューティングを実行する代わりに、拡張可能な低構成のサービスを提供します。Amazon EMR には 2 種類の EMR クラスターが用意されています。

  • 一時的な Amazon EMR クラスター:一時的な Amazon EMR クラスターは、処理が終了すると自動的にシャットダウンされ、コストが発生しなくなります。

  • 永続的な Amazon EMR クラスター:永続的な Amazon EMR クラスターは、データ処理ジョブが完了した後も引き続き実行されます。

Amazon EMR と Hadoop はいずれも、クラスターの状態を報告するログファイルを生成します。デフォルトで、ログファイルは /mnt/var/log/ ディレクトリのマスターノードに出力されます。クラスターの起動時の設定方法によっては、Amazon Simple Storage Service (Amazon S3) にログを保存できます。Amazon S3 ロギングは、クラスターの起動時にのみ指定できることに注意してください。この設定では、ログは 5 分ごとにプライマリノードから Amazon S3 の場所に送信されます。一時的なクラスターでは、処理が完了するとクラスターが消え、これらのログファイルを使用して失敗したジョブをデバッグできるため、Amazon S3 ロギングは重要です。

このパターンでは、AWS CloudFormation テンプレートを使用して API コールをモニタリングし、「」に Amazon CloudWatch Events を開始するセキュリティコントロールをデプロイしますRunJobFlow。トリガーは、Python スクリプトを実行する AWS Lambda を呼び出します。Lambda 関数はイベント JSON 入力から EMR クラスター ID を取得し、Amazon S3 ログ URI もチェックします。Amazon S3 URI が見つからない場合、Lambda 関数は、EMR クラスター名、違反の詳細、AWS リージョン、AWS アカウント、および通知の送信元である Lambda Amazon リソースネーム (ARN) を詳述した Amazon Simple Notification Service (Amazon SNS) 通知を送信します。

前提条件と制限

前提条件

  • アクティブなAWS アカウント

  • Lambda コードの .zip ファイル用の S3 バケット

  • 違反の通知を受信する E メールアドレス

制約事項

  • この検出統制はリージョンごとに適用されるため、監視対象の AWS リージョンに導入する必要があります。

製品バージョン

  • Amazon EMR 5.16.0 以降

アーキテクチャ

ターゲットテクノロジースタック

  • Amazon CloudWatch Events イベント

  • Amazon EMR

  • Lambda 関数

  • S3 バケット

  • Amazon SNS

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

Amazon S3 への Amazon EMR ログ記録が起動時に有効になっていることを確認するワークフロー。

自動化とスケール

  • AWS Organizations を使用している場合は、AWS CloudFormation StackSets を使用して、モニタリングする複数のアカウントにこのテンプレートをデプロイできます。

ツール

ツール

  • AWS CloudFormation – AWS CloudFormation は、Infrastructure as Code を使用して AWS リソースをモデル化およびセットアップするのに役立ちます。

  • AWS Cloudwatch Events – AWS CloudWatch Events は、AWS リソースの変更を記述するシステムイベントのほぼリアルタイムのストリームを提供します。

  • Amazon EMR」— Amazon EMR は、ビッグデータフレームワークの実行を簡素化するマネージド型クラスタープラットフォームです。

  • AWS Lambda」— AWS Lambda は、サーバーをプロビジョニングまたは管理しなくてもコードを実行できます。Lambda は必要に応じてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケールします。

  • Amazon S3」– Amazon S3 はウェブサービスインターフェイスで、ウェブのどこからでも容量に関係なくデータを格納および取得できます。

  • Amazon SNS」— Amazon SNS は、ウェブサーバーや E メールアドレスを含む、パブリッシャーとクライアント間のメッセージの配信または送信を、調整および管理するウェブサービスです。

コード

  • プロジェクトの.zip ファイルは添付ファイルとして入手できます。

エピック

タスク説明必要なスキル

S3 バケットを定義します。

Lambda コードの .zip ファイルをホストするには、先頭にスラッシュを含まない一意の名前で S3 バケットを選択または作成します。S3 バケット名はグローバルに一意であり、名前空間はすべての AWS アカウントによって共有されています。S3 バケットは、評価されている Amazon EMR クラスターと同じ AWS リージョンに存在する必要があります。

クラウドアーキテクト
タスク説明必要なスキル

S3 バケットに Lambda コードをアップロードします。

「添付ファイル」セクションで提供されている Lambda コードの.zip ファイルを S3 バケットにアップロードします。S3 バケットは、評価されている Amazon EMR クラスターと同じリージョンに存在する必要があります。

クラウドアーキテクト
タスク説明必要なスキル

AWS CloudFormation テンプレートをデプロイします。

AWS CloudFormation コンソールで、S3 バケットと同じリージョンに、このパターンの添付ファイルとして提供されている AWS CloudFormation テンプレートをデプロイします。次のエピックでは、パラメータの値を指定します。AWS CloudFormation テンプレートのデプロイの詳細については、「関連リソース」セクションを参照してください。

クラウドアーキテクト
タスク説明必要なスキル

S3 バケットに名前を付けます。

最初のエピックで作成した S3 バケットの名前を入力します。

クラウドアーキテクト

Amazon S3 キーを指定します。

S3 バケット内の Lambda コードの .zip ファイルの場所を、先頭にスラッシュを付けずに指定します (例、<directory>/<file-name>.zip)。

クラウドアーキテクト

Eメールアドレスを入力します。

Amazon SNS 通知を受信するための有効な Eメールアドレスを指定します。

クラウドアーキテクト

ロギングのレベルを定義します。

Lambda 関数のロギングレベルと頻度を定義します。「Info」はアプリケーションの進行状況に関する詳細な情報メッセージを表します。「Error」は、それでもアプリケーションの実行を継続できるエラーイベントを示します。「警告」は潜在的に有害な状況を示します。

クラウドアーキテクト
タスク説明必要なスキル

サブスクリプションを確認します。

テンプレートが正常にデプロイされると、指定したメールアドレスに購読メールメッセージが送信されます。違反通知を受信するには、このメールサブスクリプションを確認する必要があります。

クラウドアーキテクト

関連リソース

添付ファイル

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip