要解决AWS CloudWatch不触发Lambda函数的问题,可能需要检查以下几个方面:
import boto3
client = boto3.client('events')
response = client.put_rule(
Name='MyCloudWatchEventRule',
ScheduleExpression='rate(5 minutes)'
)
response = client.put_targets(
Rule='MyCloudWatchEventRule',
Targets=[
{
'Arn': 'arn:aws:lambda:us-east-1:123456789012:function:MyLambdaFunction',
'Id': 'TargetFunction'
}
]
)
import boto3
client = boto3.client('lambda')
response = client.add_permission(
FunctionName='MyLambdaFunction',
StatementId='MyCloudWatchEventPermission',
Action='lambda:InvokeFunction',
Principal='events.amazonaws.com',
SourceArn='arn:aws:events:us-east-1:123456789012:rule/MyCloudWatchEventRule'
)
import boto3
client = boto3.client('logs')
response = client.describe_log_streams(
logGroupName='/aws/lambda/MyLambdaFunction',
orderBy='LastEventTime',
descending=True,
limit=1
)
if 'logStreams' in response and len(response['logStreams']) > 0:
log_stream_name = response['logStreams'][0]['logStreamName']
response = client.get_log_events(
logGroupName='/aws/lambda/MyLambdaFunction',
logStreamName=log_stream_name,
startFromHead=True,
limit=10
)
for event in response['events']:
print(event['message'])
通过检查Lambda函数的日志,您可以查看是否有任何错误消息或异常,以帮助您进一步诊断问题。
请注意,上述示例代码中的资源名称和ARN需要根据您自己的AWS账户和资源配置进行修改。在使用这些代码示例之前,请确保已正确安装和配置AWS SDK for Python(Boto3)。