AWS Fargateを使用して実行されているタスクの詳細情報を取得するためのAWS Lambda関数を作成します。このLambda関数は、指定されたクラスターとタスクのARNを使用して、Fargateタスクの現在の状態や終了時の詳細情報を取得します。
実装
以下が、Fargateタスクの情報を取得するLambda関数のJavaコードです。
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.ecs.AmazonECS;
import com.amazonaws.services.ecs.AmazonECSClientBuilder;
import com.amazonaws.services.ecs.model.DescribeTasksRequest;
import com.amazonaws.services.ecs.model.DescribeTasksResponse;
import com.amazonaws.services.ecs.model.EcsException;
import com.amazonaws.services.ecs.model.Task;
public class DescribeFargateTaskFunction implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
// クラスター名とFargateタスクのARNを指定
String clusterName = "YourClusterName";
String taskArn = "YourTaskArn";
// Amazon ECSクライアントの作成
AmazonECS ecsClient = AmazonECSClientBuilder.defaultClient();
// DescribeTasksリクエストの作成
DescribeTasksRequest describeTasksRequest = new DescribeTasksRequest()
.withCluster(clusterName)
.withTasks(taskArn);
try {
// DescribeTasksリクエストの実行
DescribeTasksResponse describeTasksResponse = ecsClient.describeTasks(describeTasksRequest);
Task task = describeTasksResponse.tasks().get(0);
// タスクの詳細情報をJSON形式の文字列に変換して返す
return task.toString();
} catch (EcsException e) {
// エラー時の処理
return "Error: " + e.getErrorMessage();
}
}
}
Lambda関数のデプロイ
- AWS Lambdaコンソールにアクセスします。
- “関数の作成”をクリックし、関数名や実行ロールなどの設定を行います。
- ランタイムはJava 8以上を選択し、上記のJavaコードをコピペして、”デプロイ”ボタンをクリックします。
参考文献
https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/ecs/EcsClient.html