我想在AWS Lambda上使用加載在AWS ECR上的Docker容器執行一個python腳本。 我已經設法創建了一個docker容器,從他們推薦用于python腳本的亞馬遜鏡像開始。這就是Docker檔案:
# copy function code
復制app.py ${LAMBDA_TASK_ROOT}。
COPY config.py ${LAMBDA_TASK_ROOT}。
復制 abort_occurrance.txt ${LAMBDA_TASK_ROOT},以使其成為一個完整的應用程式。
COPY actions_logging.txt ${LAMBDA_TASK_ROOT}。
COPY execution_log.txt ${LAMBDA_TASK_ROOT}。
COPY warning_job_occurrance.txt ${LAMBDA_TASK_ROOT}。
# 使用檔案requirements.txt安裝該函式的依賴項。
#從你的專案檔案夾中。
復制requirements.txt。
RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
CMD ["app.py"]
ENTRYPOINT ["python3"]
正如這里所看到的,app.py是我的腳本,必須在容器啟動時運行。 一旦創建了鏡像,我可以很容易地在本地機器上啟動我的容器,但當我把它加載到AWS ECR上并將其鏈接到AWS Lambda時,它將無法作業。 這是在CloudWatch上回傳的錯誤:
Traceback (most recent call last):
檔案 "app.py", line 2, in <module>
from exchangelib import Credentials, Account
檔案 "/var/task/exchangelib/__init__.py", 行 3, in < module>
from .account import Account, Identity
檔案 "/var/task/exchangelib/account.py", line 12, in <module>
from .folders import Folder, AdminAuditLogs, ArchiveDeletedItems, ArchiveInbox, ArchiveMsgFolderRoot,
檔案"/var/task/exchangelib/folders/__init__.py",行16,in<module>。
from .roots import Root, ArchiveRoot, PublicFoldersRoot, RootOfHierarchy
檔案 "/var/task/exchangelib/folders/roots.py", line 17, in <module>
class RootOfHierarchy(BaseFolder,metaclass=EWSMeta)。
檔案 "/var/task/exchangelib/folders/roots.py", line 26, in RootOfHierarchy
_subfolders_lock = Lock()
檔案 "/var/lang/lib/python3.8/multiprocessing/context.py", line 68, in Lock
return Lock(ctx=self.get_context() )
檔案 "/var/lang/lib/python3.8/multiprocessing/synchronize.py", line 162, in __init__
SemLock.__init__(self, SEMAPHORE, 1, 1, ctx=ctx)
檔案 "/var/lang/lib/python3.8/multiprocessing/synchronize.py", line 57, in __init__
sl = self._semlock = _multiprocessing.SemLock(
OSError: [Errno 38] Function not implemented
START RequestId: f8056c6e-9ca4-4aba-a1aa-191dca52ea35 Version: $LATEST
END RequestId: f8056c6e-9ca4-4aba-a1aa-191dca52ea35
REPORT RequestId: f8056c6e-9ca4-4aba-a1aa-191dca52ea35 Duration: 3003.57 ms Billed Duration: 3000 ms 記憶體大小。128 MB 最大使用記憶體。22 MB
2021-09-15T12:52:25.585Z f8056c6e-9ca4-4aba-a1aa-191dca52ea35 任務在3.00秒后超時結束
為什么一個容器在本地docker上可以作業,但當我在lambda上測驗它時卻不能作業?
謝謝你
uj5u.com熱心網友回復:
Lambda不支持所有運行時間的并行處理。這可能是為什么它在本地可以作業,但在lambda中卻不能。
https://aws.amazon.com/blogs/compute/parallel-processing-in-python-with-aws-lambda/
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/308353.html
標籤:
