簡體   English   中英

AWS Lambda:使用容器映像但仍然找不到程序路徑

[英]AWS Lambda: Using container image but still getting program path not found

我已將 AWS Lambda function 配置為使用容器映像。 我已經構建圖像並將其上傳到 ECR 並使用此圖像運行 lambda function。我仍然面臨錯誤:

[ERROR] PortScannerError: 'nmap program was not found in path. PATH is : /var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin'
Traceback (most recent call last):
  File "/var/lang/lib/python3.8/imp.py", line 234, in load_module
    return load_source(name, filename, file)
  File "/var/lang/lib/python3.8/imp.py", line 171, in load_source
    module = _load(spec)
  File "<frozen importlib._bootstrap>", line 702, in _load
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 843, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/var/task/app.py", line 36, in <module>
    nmScan = nmap.PortScanner()
  File "/var/task/nmap/nmap.py", line 132, in __init__
    raise PortScannerError(

當我從容器手動運行腳本時,它運行良好。 當 lambda 執行此操作時,出現上述錯誤。

使用此示例 Dockerfile 結構創建 Dockerfile:

FROM public.ecr.aws/lambda/python:3.8

# Copy function code
COPY app.py ${LAMBDA_TASK_ROOT}

# Install the function's dependencies using file requirements.txt
# from your project folder.

COPY requirements.txt  .
RUN  pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
RUN  yum install -y nmap

# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
CMD [ "app.handler" ] ```

Do I need to specify the ENTRYPOINT?

最后,它對我有用。

在 Lambda function 中,我們可以覆蓋 ENTRYPOINT、CMD 和 WORKDIR 的值。

因此,我通過傳遞 ENTRYPOINT、CMD 和 WORKDIR(它默認為 AWS Lambda 的/var/task )來進行覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM