本日の発表でlambdaのpython対応が発表されました。
また、スケジュールイベントの機能も追加され、時間指定でlambdaを実行できます。
今までAPIサーバを構築し、cronにて実行していたようなバッチ処理などが
サーバ無しで実装することが可能になりました。
というわけで、試しにAMIを定期的に取得するファンクションを書いてみました。

テンプレートは今回使用しないためスキップします。

コードは下記内容を入力します。
import boto3
client = boto3.client(‘ec2′)
def lambda_handler(event, context):
client.create_image(InstanceId=’i-xxxxxxxx’,Name=’test’)

roleの設定は下記内容を入力します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:::"
]
},
{
"Effect": "Allow",
"Action": "ec2:",
"Resource": "*"
}
]
}


イベントリソースはcronにてご希望の日時を指定出来ます。
?が入っていますが、ちょっと良く分りませんでした。
無いとエラーになってしまいました。。



後は実行を待つのみです。
ログはCloudWatchにて確認可能です。

ローテート、成功確認など未実装ですが、pythonで書けるものは何でも追加出来ます。
投稿者プロフィール
最新の投稿
セキュリティ2021.07.14ゼロデイ攻撃とは
セキュリティ2021.07.14マルウェアとは
WAF2021.07.13クロスサイトスクリプティングとは?
AWS2021.01.21AWS Fault Injection Simulatorが発表されました!