AWSのメンテナンスイベントを監視
jqコマンドのインストール
jsonを簡単に取り扱う
$ uname -r
4.14.26-54.32.amzn2.x86_64
$ sudo yum install -y jq
$ rpm -qa jq
jq-1.5-1.amzn2.x86_64
Python3のインストール
boto3を使うにはPython3を使うほうが安定しているらしい
$ sudo amazon-linux-extras -install python3
$ python3 -V
Python 3.7.0b2
$ sudo pip install boto3
$ python3
Python 3.7.0b2 (default, Mar 17 2018, 23:03:12)
[GCC 7.2.1 20170915 (Red Hat 7.2.1-2)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto3
>>>
AWS Configファイル設定
boto3を使うときにこの設定が使われる
$ aws configure
AWS Access Key ID [None]:xxx
AWS Secret Access Key [None]:xxx
Default region name [None]:ap-northeast-1
Default output format [None]:json
AWSのメンテナンス情報を取得する
EC2のメンテナンス情報(AWS CLI)
$ aws ec2 describe-instance-status --query "InstanceStatuses[?Events!=null]"
インスタンスの予定されたイベント - Amazon Elastic Compute Cloud
RDSのメンテナンス情報(AWS CLI)
$ aws rds describe-pending-maintenance-actions --query "PendingMaintenanceActions[?Action!=null]"
EC2のメンテナンス情報(AWS API)
#!/bin/python3
import boto3
client = boto3.client('ec2')
response = client.describe_instances()
print(response)
RDSのメンテナンス情報(AWS API)
#!/bin/python3
import boto3
client = boto3.client('rds')
response = client.describe_pending_maintenance_actions()
print(response)
Lambdaを使ってメンテナンス情報を定期的にメールする
AWSはblogが沢山書かれているので、順に参照していく。
SESにメールアドレスを登録
Lamda実行用のロールと定期実行スケジュールを作成
Pythonで記述するlambda関数コードを作成(Python3.6)
===========================================
import boto3
import json
MailSrc = "XXX@XXX"
MailDst = "XXX@XXX"
AwsRegion = "us-east-1"
def rdsMaintenanceInfo():
RdsClient = boto3.client('rds')
RdsInfo = RdsClient.describe_pending_maintenance_actions()
return RdsInfo
def ec2MaintenanceInfo():
Ec2Client = boto3.client('ec2')
Ec2Info = Ec2Client.describe_instances()
return Ec2Info
def sendMail(source, to, subject, body):
MailClient = boto3.client('ses', region_name=AwsRegion)
Response = MailClient.send_email(
Source=source,
Destination={
'ToAddresses': [
to,
]
},
Message={
'Subject': {
'Data': subject,
},
'Body': {
'Text': {
'Data': body,
},
}
}
)
return Response
def lambda_handler(event, context):
rdsInfo = rdsMaintenanceInfo()
rdsSubject = "RDS Maintainance Info"
rdsInfo = json.dumps(rdsInfo)
rRds = sendMail(MailSrc, MailDst, rdsSubject, rdsInfo)
ec2Info = ec2MaintenanceInfo()
ec2Subject = "EC2 Maintainance Info"
ec2Info = json.dumps(ec2Info)
rEc2 = sendMail(MailSrc, MailDst, ec2Subject, ec2Info)
return rRds,rEc2
===========================================
この記事が気に入ったらサポートをしてみませんか?