要实现AWS CloudWatch事件仅在特定时间调用Lambda函数,可以使用以下步骤:
import json
def lambda_handler(event, context):
print("Lambda function triggered successfully.")
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
import boto3
def create_event_rule():
client = boto3.client('events')
response = client.put_rule(
Name='MyScheduledEvent',
ScheduleExpression='cron(0 2 * * ? *)', # 每天UTC时间2:00调度
State='ENABLED'
)
return response['RuleArn']
def add_lambda_permission(rule_arn, function_name):
client = boto3.client('lambda')
response = client.add_permission(
FunctionName=function_name,
StatementId='MyScheduledEvent',
Action='lambda:InvokeFunction',
Principal='events.amazonaws.com',
SourceArn=rule_arn
)
return response
def create_event_target(rule_arn, function_name):
client = boto3.client('events')
response = client.put_targets(
Rule=rule_arn,
Targets=[
{
'Id': '1',
'Arn': function_name
}
]
)
return response
def lambda_handler(event, context):
rule_arn = create_event_rule()
function_name = context.invoked_function_arn
add_lambda_permission(rule_arn, function_name)
create_event_target(rule_arn, function_name)
print("CloudWatch event rule created successfully.")
部署Lambda函数:将上述代码部署到AWS Lambda中,并确保具有所需的IAM权限。
测试:在AWS Lambda控制台中,运行Lambda函数以创建CloudWatch事件规则和目标。然后,您可以在CloudWatch控制台中验证事件规则和目标是否正确创建。
通过以上步骤,您可以在AWS CloudWatch中创建一个定时事件规则,并在特定时间调用Lambda函数。