AWS Lambda作业调度可以使用AWS提供的云调度服务Amazon CloudWatch Events。通过CloudWatch Events,您可以设置时间表和规则,以基于事件触发Lambda函数。例如,您可以配置定期运行一个Lambda函数来清理S3存储桶,或者基于SNS通知运行一个Lambda函数来处理新上传的文件。
以下是使用CloudWatch Events调度Lambda函数的Python代码示例:
import boto3
import os
# 要调度的Lambda函数的名称
FUNCTION_NAME = os.environ['FUNCTION_NAME']
# 与Lambda函数关联的IAM角色的ARN
IAM_ROLE_ARN = os.environ['IAM_ROLE_ARN']
# 创建AWS服务客户端
lambda_client = boto3.client('lambda')
# 创建规则和目标
rule_response = boto3.client('events').put_rule(
Name='scheduled-rule',
ScheduleExpression='cron(0 1 * * ? *)', # 设置规则为每天凌晨1点运行
)
target_response = boto3.client('events').put_targets(
Rule='scheduled-rule',
Targets=[
{
'Arn': lambda_client.get_function(FunctionName=FUNCTION_NAME)['Configuration']['FunctionArn'], # 使用Lambda函数的ARN
'Id': 'target-1',
'RoleArn': IAM_ROLE_ARN,
},
]
)
# 启用规则
boto3.client('events').enable_rule(Name='scheduled-rule')
此代码示例将创建一个每天凌晨1点运行的定期规则,并调度与函数名称FUNCTION_NAME
和IAM角色ARN IAM_ROLE_ARN
关联的Lambda函数。您可以使用AWS Management Console或AWS CLI(aws events list-rules
)查看CloudWatch Events中的规则和目标。