JavaでAWS fargateを呼び出す方法。AWS SDK for Java v2を使用してfaregateを呼び出し、fargateの状態を監視し、処理結果を分岐する実装内容。

1. AWS SDK for Java v2のセットアップ

最初に、AWS SDK for Java v2をプロジェクトに組み込む必要があります。以下は、Mavenを使用したpom.xmlの依存関係の設定例です。

2. fargateの呼び出しコード

fargateを呼び出すJavaコードは以下の通りです。

import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.ecs.EcsClient;
import software.amazon.awssdk.services.ecs.model.DescribeTasksRequest;
import software.amazon.awssdk.services.ecs.model.DescribeTasksResponse;
import software.amazon.awssdk.services.ecs.model.EcsException;
import software.amazon.awssdk.services.ecs.model.Task;

public class MonitorFargateTask {

    public static void main(String[] args) {
        String clusterName = "YourClusterName"; // クラスター名
        String taskArn = "YourTaskArn"; // タスクのARN

        Region region = Region.US_EAST_1; // 適切なリージョンに変更してください

        try {
            EcsClient ecsClient = EcsClient.builder()
                    .region(region)
                    .credentialsProvider(DefaultCredentialsProvider.create())
                    .build();

            boolean isTaskRunning = true;

            while (isTaskRunning) {
                DescribeTasksRequest describeTasksRequest = DescribeTasksRequest.builder()
                        .cluster(clusterName)
                        .tasks(taskArn)
                        .build();

                DescribeTasksResponse describeTasksResponse = ecsClient.describeTasks(describeTasksRequest);
                Task task = describeTasksResponse.tasks().get(0);

                // タスクの状態を確認
                String taskStatus = task.lastStatus();

                System.out.println("Fargate Task Status: " + taskStatus);

                if ("STOPPED".equals(taskStatus)) {
                    // タスクが終了した場合、終了コードを確認
                    int exitCode = task.containers().get(0).exitCode();
                    System.out.println("Fargate Task Exit Code: " + exitCode);

                    if (exitCode == 0) {
                        System.out.println("Fargate Task completed successfully.");
                    } else {
                        System.out.println("Fargate Task terminated with non-zero exit code: " + exitCode);
                    }

                    isTaskRunning = false; // タスクが終了したのでポーリングを終了
                }

                // ポーリングの間隔(例: 10秒)を調整する
                Thread.sleep(10000);
            }

        } catch (EcsException | InterruptedException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}

参考文献

https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/ecs/EcsClient.html

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です