如何使用lambdas更新EventBridge时间表
#aws #python #lambda #eventbridge

EventBridge是AWS中有效的工具,可以帮助我们自动化任务。但是,当您需要具有动态时间表时,可能会很棘手。

首先, boto3 不是Lambdas上的最新运行。 2023年1月16日在上可用于 python 3.9 1.20.32 print(boto3.__version__)),最新发布的是 1.26。 50
https://github.com/boto/boto3

因此,您必须执行额外的步骤将其拉链并将其添加为一层:

  1. 安装boto3到 /python目录
    $ pip install boto3 -t ./python

  2. 拉链
    $ zip -r layer.zip ./python

  3. 将其上传到AWS作为图层并进行配置:
    https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html

完成此操作后,您需要创建一个与我共享的代码相似的lambda函数:

import json
import boto3

from datetime import datetime, timedelta

scheduler_client = boto3.client('scheduler')

#schedule the EventBridge Schedule to run 5 min from now
schedule_time = datetime.now() + timedelta(minutes=5)

#these values come from the EventBridge schedule itself
event_scheduler_name = 'MY_EVENT_NAME'
target_arn = 'MY_TARGET_ARN' #It comes from 
role_arn = 'MY_ROLE_ARN'

def lambda_handler(event, context):

    scheduler_client.update_schedule(Name=event_scheduler_name,
                                     ScheduleExpression=f'cron({schedule_time.minute} {schedule_time.hour} {schedule_time.day} {schedule_time.month} ? {schedule_time.year})',
                                     FlexibleTimeWindow={
                                        'MaximumWindowInMinutes': 1,
                                        'Mode': 'FLEXIBLE'
                                     },
                                     Target={
                                         'Arn': target_arn,
                                         'RoleArn': role_arn
                                     })

    return {
        'statusCode': 200,
        'body': json.dumps('Working!')
    }

棘手的值, arn rolearn 来自Eventbridge时间表:

Arn

RoleArn

现在,您已经准备好使用Python创建动态时间表。

横幅学分:

Boyney123

跟我在:

LinkedIn youtube instagram 网络先知 分享你的故事
LinkedIn YouTube Instagram RedCircle Podcast RedCircle Podcast

sponsor me