我有一个Lambda函数,需要使用它的URL从SQS队列中读取消息.然后,它需要将该数据插入到在VPC内的服务器上运行的Cassandra.
我能够从我的Lambda函数访问Cassandra服务器,使用它的私有IP并正确配置安全组.
但是,我无法从SQS队列中读取消息.当我将Lambda函数的配置更改为No VPC,然后我能够从SQS队列中读取消息.但是,使用VPC设置时,它只会超时.
我怎么能克服这个?我已检查我的Lambda函数的安全组是否具有对所有IP地址的完全出站访问权限.
我正在处理一项涉及在 VPC 内运行的Lambda 函数 的任务。
此函数应该将消息推送到SQS,并且 lambda 执行角色具有策略:添加了AWSLambdaSQSQueueExecutionRole和AWSLambdaVPCAccessExecutionRole。
拉姆达函数:
# Create SQS client
sqs = boto3.client('sqs')
queue_url = 'https://sqs.ap-east-1a.amazonaws.com/073x08xx43xx37/xyz-queue'
# Send message to SQS queue
response = sqs.send_message(
QueueUrl=queue_url,
DelaySeconds=10,
MessageAttributes={
'Title': {
'DataType': 'String',
'StringValue': 'Tes1'
},
'Author': {
'DataType': 'String',
'StringValue': 'Test2'
},
'WeeksOn': {
'DataType': 'Number',
'StringValue': '1'
}
},
MessageBody=(
'Testing'
)
)
print(response['MessageId'])
Run Code Online (Sandbox Code Playgroud)
测试执行结果如下:
{
"errorMessage": "2020-07-24T12:12:15.924Z f8e794fc-59ba-43bd-8fee-57f417fa50c9 Task timed out after 3.00 seconds"
}
Run Code Online (Sandbox Code Playgroud)
我将超时从基本设置增加到 5 …