通常这个错误是由于AWS Lambda函数配置中的触发器中缺少目标配置引起的。为了解决此问题,您需要确保为函数设置了正确的目标,并将其添加到Lambda函数的触发器配置中。以下是一个示例代码,可以确保Lambda函数有正确的目标:
import boto3
client = boto3.client('lambda')
response = client.add_permission(
FunctionName='function_name',
StatementId='ID-1',
Action='lambda:InvokeFunction',
Principal='events.amazonaws.com',
SourceArn='arn:aws:events:us-east-1:123456789012:rule/my-scheduled-rule'
)
#Attach event source mappings to a Lambda function
response = client.create_event_source_mapping(
EventSourceArn='arn:aws:sqs:us-west-2:123456789012:my-queue',
FunctionName='my-function',
Enabled=True,
BatchSize=10
)
请注意,在以上示例代码中,您需要将“function_name”和“my-function”替换为您自己的Lambda函数名称。您还需要将“123456789012”替换为您的AWS帐户ID,并将“us-east-1”和“us-west-2”替换为您的AWS区域。如果您是使用SNS或Kinesis等服务作为您Lambda函数的触发器,您可以将其替换为以下类似的代码:
response = client.subscribe(
TopicArn='arn:aws:sns:us-east-1:123456789012:my-topic',
Protocol='lambda',
Endpoint='arn:aws:lambda:us-east-1:123456789012:function:function_name',
)
最后,确保您已在AWS控制台中为您的Lambda函数创建了一个触发器,并将其与正确的目标配对。这样就能够解决AWS Lambda:“目标列表中没有项目”的问题。