我已经创建了一个包含 Amazon linux 2023 上所有库的 zip 文件,并将其上传到 LambdaLayer。
mkdir python
pip3.11 install atproto -t python
zip -r python.zip python
然后我将该 zip 文件上传到 LambdaLayer。 然后我创建了一个 Lambda,指定了一个 Layer,并执行了下面的代码,但它因超时而终止。
from atproto import Client, client_utils
def lambda_handler(event, context):
print('test')
client = Client()
profile = client.login('MyBlueskyID', 'MyBlueskyPassword')
print('Welcome,', profile.display_name)
text = client_utils.TextBuilder().text('テストです')
post = client.send_post(text)
client.like(post.uri, post.cid)
Status: Failed
Test Event Name: posttest
Response:
{
"errorMessage": "2024-11-17T01:58:20.823Z xxxx-xxxx-xxxx Task timed out after 153.10 seconds"
}
Function Logs:
INIT_REPORT Init Duration: 10013.64 ms Phase: init Status: timeout
2024-11-17T01:58:20.823Z xxxx-xxxx-xxxx Task timed out after 153.10 seconds
END RequestId: xxxx-xxxx-xxxx
REPORT RequestId: xxxx-xxxx-xxxx Duration: 153099.68 ms Billed Duration: 150000 ms Memory Size: 128 MB Max Memory Used: 128 MB
Request ID: xxxx-xxxx-xxxx
我将超时时间设置为150秒,但情况还是一样。
我使用Python版本3.11。
这是什么原因造成的,如何解决?
我认为我长期用于创建层的 Amazon linux 配置存在问题,因此我从创建 EC2 实例开始,但这并没有解决问题。 并添加了一个打印函数来查看它在源代码中的何处停止,但它从未输出到 CloudWatch。
我将Python运行时更改为3.12,但结果没有改变。
这个问题已经解决了。 我将内存设置设置为 256 MB,这样该过程可以在几秒钟内完成。 吸取的教训是,我们应该从检查基本设置开始。