RDS 유지 보수, PHD 또는 이메일로 통지되지 않는 것도 취득 & 통지 Lambda
그래서 describe-pending-maintenance-actions하고 결과가 비어 있지 않으면 SNS에 알리는 Lambda를 작성해 보았습니다. CloudFormation 템플릿 으로 정리하고 있습니다.
정기 실행해 두면, 지금까지 PHD나 메일만으로는 파악을 할 수 없었던 메인터넌스 정보도 주울 수 있습니다.
구성
이용 절차
SNS 준비
알림 대상 SNS 주제를 준비합니다.
ARN은 나중에 사용합니다.
이번에는 편하게 코드 쓰지 않고 Slack 통지하고 싶었으므로, 통지하고 싶은 Slack 채널의 통합 설정으로부터 메일 주소를 지불해, 그 주소를 SNS에 서브스크립션 등록했습니다.
Lambda 만들기 (CloudFormation 사용)
Notify_RdsMaintenancePendingActions.yml 을 사용하여 새 CloudFormation 스택을 만듭니다.
스택 이름과 알림 대상 SNS의 ARN을 입력합니다. AppName은 리소스의 접두사로 사용됩니다. 조건이 없으면 기본값으로 유지됩니다.
IAM 생성 권한을 체크하여 스택을 생성합니다.
실행 테스트
디폴트라고 「DescribeRdsMaintenancePendingActions」라고 하는 Lambda가 되어 있으므로, 테스트 실행해 보세요. RDS 펜딩 액션이 있으면 SNS에 알림이 날 것입니다.
SNS -> EMail -> Slack 예제
보류중인 유지 보수 작업이 두 가지 존재하는 지역에서 시도하면 다음과 같이 두 가지 알림이 날아 왔습니다.
정기 실행
EventBridge의 스케줄 실행을 이 Lambda와 관련시켜 두면 정기적인 체크를 할 수 있습니다.
CloudFormation에는 일정 실행 부분이 포함되어 있지 않으므로 수동으로 설정해야 합니다.
코드
CloudFormation에 다음 코드를 인라인으로 포함합니다. (Python3.9)
일단 평범한 것으로 동작을 보고 싶었기 때문에 필터 등은 하지 않고, 그대로 멘테의 수만 통지하고 있습니다.
import json
import boto3
import os
rds = boto3.client('rds')
sns = boto3.client('sns')
TOPIC_ARN = os.environ["TOPIC_ARN"]
def main(event, context):
# Describe
paginator = rds.get_paginator('describe_pending_maintenance_actions')
iter = paginator.paginate()
for res in iter:
for action in res["PendingMaintenanceActions"]:
# Publish
message = json.dumps(action, default=str)
print(f"publish {TOPIC_ARN=} {message=}")
sns.publish(
TopicArn=TOPIC_ARN,
Subject="RDS Pending Maintenance Action",
Message=message
)
# return
return {
'statusCode': 200,
'body': "ok"
}
Reference
이 문제에 관하여(RDS 유지 보수, PHD 또는 이메일로 통지되지 않는 것도 취득 & 통지 Lambda), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shu85t/items/1352cc9375c59d7514d7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
SNS 준비
알림 대상 SNS 주제를 준비합니다.
ARN은 나중에 사용합니다.
이번에는 편하게 코드 쓰지 않고 Slack 통지하고 싶었으므로, 통지하고 싶은 Slack 채널의 통합 설정으로부터 메일 주소를 지불해, 그 주소를 SNS에 서브스크립션 등록했습니다.
Lambda 만들기 (CloudFormation 사용)
Notify_RdsMaintenancePendingActions.yml 을 사용하여 새 CloudFormation 스택을 만듭니다.
스택 이름과 알림 대상 SNS의 ARN을 입력합니다. AppName은 리소스의 접두사로 사용됩니다. 조건이 없으면 기본값으로 유지됩니다.
IAM 생성 권한을 체크하여 스택을 생성합니다.
실행 테스트
디폴트라고 「DescribeRdsMaintenancePendingActions」라고 하는 Lambda가 되어 있으므로, 테스트 실행해 보세요. RDS 펜딩 액션이 있으면 SNS에 알림이 날 것입니다.
SNS -> EMail -> Slack 예제
보류중인 유지 보수 작업이 두 가지 존재하는 지역에서 시도하면 다음과 같이 두 가지 알림이 날아 왔습니다.
정기 실행
EventBridge의 스케줄 실행을 이 Lambda와 관련시켜 두면 정기적인 체크를 할 수 있습니다.
CloudFormation에는 일정 실행 부분이 포함되어 있지 않으므로 수동으로 설정해야 합니다.
코드
CloudFormation에 다음 코드를 인라인으로 포함합니다. (Python3.9)
일단 평범한 것으로 동작을 보고 싶었기 때문에 필터 등은 하지 않고, 그대로 멘테의 수만 통지하고 있습니다.
import json
import boto3
import os
rds = boto3.client('rds')
sns = boto3.client('sns')
TOPIC_ARN = os.environ["TOPIC_ARN"]
def main(event, context):
# Describe
paginator = rds.get_paginator('describe_pending_maintenance_actions')
iter = paginator.paginate()
for res in iter:
for action in res["PendingMaintenanceActions"]:
# Publish
message = json.dumps(action, default=str)
print(f"publish {TOPIC_ARN=} {message=}")
sns.publish(
TopicArn=TOPIC_ARN,
Subject="RDS Pending Maintenance Action",
Message=message
)
# return
return {
'statusCode': 200,
'body': "ok"
}
Reference
이 문제에 관하여(RDS 유지 보수, PHD 또는 이메일로 통지되지 않는 것도 취득 & 통지 Lambda), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shu85t/items/1352cc9375c59d7514d7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import json
import boto3
import os
rds = boto3.client('rds')
sns = boto3.client('sns')
TOPIC_ARN = os.environ["TOPIC_ARN"]
def main(event, context):
# Describe
paginator = rds.get_paginator('describe_pending_maintenance_actions')
iter = paginator.paginate()
for res in iter:
for action in res["PendingMaintenanceActions"]:
# Publish
message = json.dumps(action, default=str)
print(f"publish {TOPIC_ARN=} {message=}")
sns.publish(
TopicArn=TOPIC_ARN,
Subject="RDS Pending Maintenance Action",
Message=message
)
# return
return {
'statusCode': 200,
'body': "ok"
}
Reference
이 문제에 관하여(RDS 유지 보수, PHD 또는 이메일로 통지되지 않는 것도 취득 & 통지 Lambda), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shu85t/items/1352cc9375c59d7514d7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)