CloudWatchEvents+lambda+boto3로 서버 비용 절감
5651 단어 람다CloudWatchEventsboto3AWS
목적→서버 요금 절약
htp://my 헤로 2. s3-u-b-s-u-st-2. 아마조나 ws. 이 m
Angular의 튜토리얼을 참고로 작성한 포트폴리오입니다.
백엔드에서 SpringBoot(EC2)와 KeyCloak(FARGATE)와 MySQL이 움직이고 있습니다.
특히 FARGATE는 개인으로 운용하는 분에는 서버비가 높기 때문에,
CloudWatchEvents+lambda로 정해진 시간에 작업을 중지하는 구성을 구현합니다.
람다 만들기 및 설정
AWS Lambda 콘솔 화면에서 함수 생성을 클릭합니다.
1.lambda 함수 이름을 설정합니다.
2. 이번에는 파이썬 AWSSDK (boto3)를 사용하기 위해 "Python 3.8"을 선택합니다.
3. 함수 만들기를 클릭합니다.
이제 함수를 만들 수는 있지만 기본 실행 역할은 ECS 서비스 설정을 업데이트할 수 없습니다. 다음 단계를 참고하여 기본 역할에 권한을 부여합니다.
FullAccess의 정책을 첨부해 버리는 것은 세키리티상, 베스트 프랙티스가 아닌 경우가 있습니다만, 이번은 개인의 계정이므로 FullAccess의 정책을 첨부합니다.
lambda 소스 코드
example.pydef lambda_handler(event, context):
#desiredcountを0にする
client = boto3.client('ecs')
response = client.update_service(
cluster='myk',
service='ecs-kck-myk',
desiredCount=0,
)
#停止するために必要なtaskArnを取得
response = client.list_tasks(
cluster='myk',
launchType='FARGATE'
)
taskArns=response["taskArns"]
#タスクを停止
for task in taskArns:
response = client.stop_task(
cluster='myk',
task=task,
)
desiredCount를 0으로 설정하여 ECS 서비스의 작업을 중지하면 자동으로 작업이 시작되는 것을 방지합니다. 이번에는 특히 서비스 등을 지정하지 않고 클러스터 내의 모든 taskArn을 취득하여 클러스터 내의 모든 태스크를 정지시키고 있습니다.
CloudWatchEvents에서 규칙 만들기
AWS 콘솔에서 CloudWatchEvents 화면을 열고 규칙 생성을 클릭합니다.
CloudWatchEvents 설정
1. 일정을 클릭
2. 크론 수식을 클릭하여 lambda를 실행할 시간을 입력합니다.
이번에는 평일 18:00에 lambda를 실행시키고 싶기 때문에,
0 3 ? * TUE-SAT *
를 입력합니다. GMT와 JST의 9시간의 시차를 고려하는 것에 주의합니다.
Cron식에 대해서는 이쪽에 자세하게 써 있습니다.
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아마 존 C ぉ 우도 tch / ぁ st / 에 ぇ ts / S 치 즈 ぇ ゔ ぇ ts. HTML
3. 대상 선택에서 실행할 lambda 함수를 선택합니다.
4. 설정 세부정보를 클릭합니다. 나중에 규칙의 이름을 결정하여 규칙을 만듭니다.
CloudWatchEvents 측의 설정은 이상입니다.
이제 지정된 시간에 lambda 함수가 실행됩니다.
이번에는 정해진 시간에 태스크를 정지시키는 구성을 구현했지만, 마찬가지로 태스크를 시작시키는 구성을 구현함으로써 정해진 시간에만 포트폴리오를 공개할 수 있어 서버 요금을 절약할 수 있다. !
Reference
이 문제에 관하여(CloudWatchEvents+lambda+boto3로 서버 비용 절감), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ms2geki/items/c7ea4337c246fdc7dfe7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
AWS Lambda 콘솔 화면에서 함수 생성을 클릭합니다.
1.lambda 함수 이름을 설정합니다.
2. 이번에는 파이썬 AWSSDK (boto3)를 사용하기 위해 "Python 3.8"을 선택합니다.
3. 함수 만들기를 클릭합니다.
이제 함수를 만들 수는 있지만 기본 실행 역할은 ECS 서비스 설정을 업데이트할 수 없습니다. 다음 단계를 참고하여 기본 역할에 권한을 부여합니다.
FullAccess의 정책을 첨부해 버리는 것은 세키리티상, 베스트 프랙티스가 아닌 경우가 있습니다만, 이번은 개인의 계정이므로 FullAccess의 정책을 첨부합니다.
lambda 소스 코드
example.pydef lambda_handler(event, context):
#desiredcountを0にする
client = boto3.client('ecs')
response = client.update_service(
cluster='myk',
service='ecs-kck-myk',
desiredCount=0,
)
#停止するために必要なtaskArnを取得
response = client.list_tasks(
cluster='myk',
launchType='FARGATE'
)
taskArns=response["taskArns"]
#タスクを停止
for task in taskArns:
response = client.stop_task(
cluster='myk',
task=task,
)
desiredCount를 0으로 설정하여 ECS 서비스의 작업을 중지하면 자동으로 작업이 시작되는 것을 방지합니다. 이번에는 특히 서비스 등을 지정하지 않고 클러스터 내의 모든 taskArn을 취득하여 클러스터 내의 모든 태스크를 정지시키고 있습니다.
CloudWatchEvents에서 규칙 만들기
AWS 콘솔에서 CloudWatchEvents 화면을 열고 규칙 생성을 클릭합니다.
CloudWatchEvents 설정
1. 일정을 클릭
2. 크론 수식을 클릭하여 lambda를 실행할 시간을 입력합니다.
이번에는 평일 18:00에 lambda를 실행시키고 싶기 때문에,
0 3 ? * TUE-SAT *
를 입력합니다. GMT와 JST의 9시간의 시차를 고려하는 것에 주의합니다.
Cron식에 대해서는 이쪽에 자세하게 써 있습니다.
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아마 존 C ぉ 우도 tch / ぁ st / 에 ぇ ts / S 치 즈 ぇ ゔ ぇ ts. HTML
3. 대상 선택에서 실행할 lambda 함수를 선택합니다.
4. 설정 세부정보를 클릭합니다. 나중에 규칙의 이름을 결정하여 규칙을 만듭니다.
CloudWatchEvents 측의 설정은 이상입니다.
이제 지정된 시간에 lambda 함수가 실행됩니다.
이번에는 정해진 시간에 태스크를 정지시키는 구성을 구현했지만, 마찬가지로 태스크를 시작시키는 구성을 구현함으로써 정해진 시간에만 포트폴리오를 공개할 수 있어 서버 요금을 절약할 수 있다. !
Reference
이 문제에 관하여(CloudWatchEvents+lambda+boto3로 서버 비용 절감), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ms2geki/items/c7ea4337c246fdc7dfe7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def lambda_handler(event, context):
#desiredcountを0にする
client = boto3.client('ecs')
response = client.update_service(
cluster='myk',
service='ecs-kck-myk',
desiredCount=0,
)
#停止するために必要なtaskArnを取得
response = client.list_tasks(
cluster='myk',
launchType='FARGATE'
)
taskArns=response["taskArns"]
#タスクを停止
for task in taskArns:
response = client.stop_task(
cluster='myk',
task=task,
)
AWS 콘솔에서 CloudWatchEvents 화면을 열고 규칙 생성을 클릭합니다.
CloudWatchEvents 설정
1. 일정을 클릭
2. 크론 수식을 클릭하여 lambda를 실행할 시간을 입력합니다.
이번에는 평일 18:00에 lambda를 실행시키고 싶기 때문에,
0 3 ? * TUE-SAT *
를 입력합니다. GMT와 JST의 9시간의 시차를 고려하는 것에 주의합니다.
Cron식에 대해서는 이쪽에 자세하게 써 있습니다.
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아마 존 C ぉ 우도 tch / ぁ st / 에 ぇ ts / S 치 즈 ぇ ゔ ぇ ts. HTML
3. 대상 선택에서 실행할 lambda 함수를 선택합니다.
4. 설정 세부정보를 클릭합니다. 나중에 규칙의 이름을 결정하여 규칙을 만듭니다.
CloudWatchEvents 측의 설정은 이상입니다.
이제 지정된 시간에 lambda 함수가 실행됩니다.
이번에는 정해진 시간에 태스크를 정지시키는 구성을 구현했지만, 마찬가지로 태스크를 시작시키는 구성을 구현함으로써 정해진 시간에만 포트폴리오를 공개할 수 있어 서버 요금을 절약할 수 있다. !
Reference
이 문제에 관하여(CloudWatchEvents+lambda+boto3로 서버 비용 절감), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ms2geki/items/c7ea4337c246fdc7dfe7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(CloudWatchEvents+lambda+boto3로 서버 비용 절감), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ms2geki/items/c7ea4337c246fdc7dfe7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)