翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon ECS CloudWatch イベントのリッスン
このチュートリアルでは、Amazon ECS タスクイベントをリッスンして CloudWatch Logs ログストリームに書き込むシンプルな AWS Lambda 関数を設定します。
前提条件: テストクラスターを設定する
イベントをキャプチャする実行中のクラスターがなければ、コンソールを使用した Fargate および外部起動タイプ用のクラスター作成 のステップに従ってクラスターを作成します。このチュートリアルの最後に、このクラスターでタスクを実行して Lambda 関数が正しく設定されていることをテストします。
ステップ 1: Lambda 関数を作成する
この手順では、Amazon ECS イベントストリームメッセージのターゲットとなるシンプルな Lambda 関数を作成します。
https://console.aws.amazon.com/lambda/
で AWS Lambda コンソールを開きます。 -
[関数を作成] を選択します。
-
[Author from scratch] 画面で、次の操作を行います。
-
[名前] に値を入力します。
-
[Runtime] (ランタイム) で、Python のバージョン (Python 3.9 など) を選択します。
-
[Role] で、[Create a new role with basic Lambda permissions] を選択します。
-
-
[Create function] を選択します。
-
[Function code] (関数コード) セクションで、以下の例に一致するようにサンプルコードを編集します。
import json def lambda_handler(event, context): if event["source"] != "aws.ecs": raise ValueError("Function only supports input from events with a source type of: aws.ecs") print('Here is the event:') print(json.dumps(event))
これは、Amazon ECS から送信されたイベントを出力するシンプルな Python 3.9 関数です。すべてが正しく設定されると、このチュートリアルの最後に、この Lambda 関数に関連付けられた CloudWatch Logs ログストリームにイベントの詳細が表示されます。
-
[保存] を選択します。
ステップ 2: イベントルールを登録する
次に、Amazon ECS クラスターから送信されるタスク CloudWatch イベントをキャプチャするイベントイベントルールを作成します。このルールでは、それが定義されているアカウント内のすべてのクラスターから送信されるすべてのイベントがキャプチャされます。タスクメッセージ自体内に、イベントソースに関する情報 (イベントソースがあるクラスターの情報など) が含まれており、この情報を使用してプログラムでイベントをフィルタしてソートできます。
注記
を使用してイベントルール AWS Management Console を作成すると、コンソールは Lambda 関数を呼び出すアクセス許可を CloudWatch イベントに付与するために必要な IAM アクセス許可を自動的に追加します。を使用してイベントルールを作成する場合は AWS CLI、このアクセス許可を明示的に付与する必要があります。詳細については、「Amazon Events ユーザーガイド CloudWatch 」の「イベントとイベントパターン」を参照してください。
Lambda 関数にイベントをルートするには
https://console.aws.amazon.com/cloudwatch/
で CloudWatch コンソールを開きます。 -
ナビゲーションペインで、[Events]、[Rules]、[Create rule] の順に選択します。
-
[Event Source] で、イベントソースとして [ECS] を選択します。デフォルトでは、ルールはすべての Amazon ECS グループのすべての Amazon ECS イベントに適用されます。または、特定のイベントや特定の Amazon ECS グループを選択することもできます。
-
[Targets] (ターゲット) に [Add target] (ターゲットの追加) を選択し、[Target type] (ターゲットの種類) に [Lambda function] (Lambda 関数) を選択したら、Lambda 関数を選択します。
-
[詳細の設定] を選択します。
-
[Rule definition] で、ルールの名前と説明を入力し、[Create rule] を選択します。
ステップ 3: タスク定義を作成する
タスク定義を作成します。
コンソール (https://console.aws.amazon.com/ecs/v2
) を開きます。 -
ナビゲーションペインで、[タスク定義] を選択します。
-
[Create new Task Definition] (新しいタスク定義の作成)、[Create new revision with JSON] (JSON で新しいリビジョンを作成) の順に選択します。
-
以下のタスク定義の例をコピーしてボックスに貼り付け、[Save (保存)] を選択します。
{ "containerDefinitions": [ { "entryPoint": [ "sh", "-c" ], "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ], "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "cpu": 10, "memory": 300, "image": "httpd:2.4", "name": "simple-app" } ], "family": "console-sample-app-static" }
-
[作成] を選択します。
ステップ 4: ルールをテストする
最後に、Amazon ECS クラスターから送信されるタスク CloudWatch イベントをキャプチャするイベントイベントルールを作成します。このルールでは、それが定義されているアカウント内のすべてのクラスターから送信されるすべてのイベントがキャプチャされます。タスクメッセージ自体内に、イベントソースに関する情報 (イベントソースがあるクラスターの情報など) が含まれており、この情報を使用してプログラムでイベントをフィルタしてソートできます。
ルールをテストするには
コンソール (https://console.aws.amazon.com/ecs/v2
) を開きます。 -
[Task definitions] (タスク定義) を選択します。
-
を選択しconsole-sample-app-static、デプロイ、新しいタスクの実行 を選択します。
-
[Cluster] (クラスター) で [default] (デフォルト) を選択し、[Deploy] (デプロイ) を選択します。
https://console.aws.amazon.com/cloudwatch/
で CloudWatch コンソールを開きます。 -
ナビゲーションペインで、ログ] を選択して Lambda 関数 (例えば、/aws/lambda/
my-function など
)] のロググループを選択します。 -
イベントデータを表示するログストリームを選択します。