JavaでAWS fargateを呼び出す方法。AWS SDK for Java v2を使用してfaregateを呼び出し、fargateの状態を監視し、処理結果を分岐する実装内容。
1. AWS SDK for Java v2のセットアップ
最初に、AWS SDK for Java v2をプロジェクトに組み込む必要があります。以下は、Mavenを使用したpom.xmlの依存関係の設定例です。
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>ecs</artifactId>
<version>2.x.x</version> <!-- 最新のバージョンに置き換えてください -->
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>sts</artifactId>
<version>2.x.x</version> <!-- 最新のバージョンに置き換えてください -->
</dependency>
</dependencies>
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