0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS Lambda を時刻起動する

Posted at

EventBridgeの時刻起動ルールを作成して、指定時刻にAWS Lambdaを起動する方法を解説します。

Lambda関数のアクセス権限を設定する

EventBridgeからLambda関数を起動できるよう、アクセス権限を設定します。

  • [設定]から[アクセス権限]を選択します。

image

  • [アクセス権限を追加]を選択します。

image

  • ポリシーステートメントを指定します。
  1. [AWS]のサービスを選択
  2. サービスに[EventBridge]を選択
  3. ステートメントIDは任意のIDを指定
  4. プリンシパルは初期表示値を指定
  5. ソースARNは[arn:aws:events:リージョンID:アカウントID:rule/*]を指定
  6. アクションは[lambda:InvokeFunction]を指定

image

イベントルールを作成し、Lambda関数へターゲットを設定する

以下の順でイベントルールを作成し、Lambda関数へターゲットを設定します。

  1. cron形式で起動時刻を定義する(ここで指定する時刻は協定世界時[UTC]です。)
  2. イベントルールを作成する
  3. イベントのターゲットにLambda関数を設定する
import os
import boto3
import json
from datetime import timezone,timedelta,datetime

def main_logic():
    event_name = "event-sample"
    
    JST = timezone(timedelta(hours=+9), 'JST')
    now = datetime.now(JST)
    # 3分後を起動時刻に設定
    target_time = now + timedelta(minutes=+3)
    # cron時刻表現を作成([UTC]で指定)
    cron_expression = "cron(" + target_time.astimezone(timezone.utc).strftime("%M %H %d %m ? %Y") + ")"
    
    events_client = boto3.client('events')
    response = events_client.put_rule(
        Name=event_name,
        ScheduleExpression=cron_expression,
    )

    param = {}
    
    response = events_client.put_targets(
        Rule=event_name,
        Targets=[
            {
                'Id': "sample-lambda-func",
                'Arn': "arn:aws:lambda:ap-southeast-1:xxxxxxxxxxxxx:function:sample-lambda-func",
                'Input': json.dumps(param)
            }
        ]
    )

👇参考URL

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?