ECS에서 작업 스케줄링 할 때 최신 revision의 작업 정의를 참조하는 방법
이 방법은 항상 최신 task 정의 (task_definitions)의 최신을 참조하는 방법을 설명합니다.
ECS 작업 스케줄링 기능 정보
Amazon ECS 작업 스케줄링 - Amazon Elastic Container Service
Amazon ECS ScheduledTask로 실현되는 스마트 Docker 기반 배치 실행 환경 - ConeHit 개발자 블로그
AWS ECS를 사용하여 배치 서버 환경을 사용해보십시오 - Qiita
ECS에서 배치를 이동하는 경우 몇 가지 옵션이 있지만 ECS의 ScheduleTask(스케줄링) 기능이 유용합니다(자세한 내용은 위 링크를 참조하십시오). ScheduleTask를 사용하면 cron적으로 정기적으로 작업을 시작하고 정기적으로 처리를 실행할 수 있습니다.
이 ScheduleTask는 ECS와 통합되어 있지만 실제로는 Amazon EventBridge
의 rule 기능이됩니다. 게다가 Amazon EventBridge
는, CloudWatch Events
라는 이름이었던 것으로, 아직 CloudWatch
의 콘솔 화면으로부터 조작이 가능합니다.
최신 참조 @ AWS 콘솔 화면
화면에서 말하면 여기에서 「최신」을 선택하면, 기동시에 최신의 revision의 task_definitions(태스크 정의)를 사용해, 태스크가 기동합니다.
그러나 여기에 하나의 함정이 있었고, 앞서 언급했듯이,
ECS 스케줄링 기능 ≒ Amazon EventBridge ≒ CloudWatch Events
그러면(≒의 표현은 오해를 초래할 것 같습니다만 이 기사의 취지가 아니기 때문에 가볍게 스루 해 주세요), 같은 설정이,
화면에서 말하면 여기에서 「최신」을 선택하면, 기동시에 최신의 revision의 task_definitions(태스크 정의)를 사용해, 태스크가 기동합니다.
그러나 여기에 하나의 함정이 있었고, 앞서 언급했듯이,
ECS 스케줄링 기능 ≒ Amazon EventBridge ≒ CloudWatch Events
그러면(≒의 표현은 오해를 초래할 것 같습니다만 이 기사의 취지가 아니기 때문에 가볍게 스루 해 주세요), 같은 설정이,
3 화면에서 가능합니다.
이 세 화면 중 ECS 화면에서 추가하려고하면 "최신"옵션이 나오지 않습니다. 죄송합니다.
따라서 EventBridge 또는 CloudWatch 화면에서 만들어야 합니다.
아마 그 중 대응된다고 생각합니다만 주의해 주세요.
최신 참조 @terraform
terraform라면 이렇게 됩니다(발췌이므로 이대로는 움직이지 않을지도).
resourc의 이름은 cloudwatch이므로주의가 필요합니다.
resource "aws_cloudwatch_event_rule" "rule" {
name = "name"
schedule_expression = "cron(30 * * * ? *)"
}
resource "aws_cloudwatch_event_target" "target" {
target_id = "name"
rule = aws_cloudwatch_event_rule.rule.name
arn = aws_ecs_cluster.main.arn
ecs_target {
launch_type = "EC2"
task_count = 1
task_definition_arn = "arn:aws:ecs:ap-northeast-1:XXXXXXXX:task-definition/name" # ここがポイント
}
}
포인트는 task_definition_arn
그리고 여기서 revision을 지정하지 않으면 화면에서 「최신」을 선택하게 됩니다.
revision을 지정하는 경우
arn:aws:ecs:ap-northeast-1:XXXXXXXX:task-definition/name:15
같아요.
보충
Terraform v0.13.5에서 작동 확인했습니다.
Reference
이 문제에 관하여(ECS에서 작업 스케줄링 할 때 최신 revision의 작업 정의를 참조하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/moya_dev/items/244147157b5911d9fa7f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
resource "aws_cloudwatch_event_rule" "rule" {
name = "name"
schedule_expression = "cron(30 * * * ? *)"
}
resource "aws_cloudwatch_event_target" "target" {
target_id = "name"
rule = aws_cloudwatch_event_rule.rule.name
arn = aws_ecs_cluster.main.arn
ecs_target {
launch_type = "EC2"
task_count = 1
task_definition_arn = "arn:aws:ecs:ap-northeast-1:XXXXXXXX:task-definition/name" # ここがポイント
}
}
arn:aws:ecs:ap-northeast-1:XXXXXXXX:task-definition/name:15
Terraform v0.13.5에서 작동 확인했습니다.
Reference
이 문제에 관하여(ECS에서 작업 스케줄링 할 때 최신 revision의 작업 정의를 참조하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/moya_dev/items/244147157b5911d9fa7f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)