sam 模板 makefile 未安装 python 库

问题描述 投票:0回答:1

所以,过去几天我一直在关注这个,所以这几乎是我最后的手段。

问题出在 sam template makefile 选项上。

当使用开箱即用的解决方案时,即。

Metadata.BuildMethod = python3.10
,SAM cli 找到requirements.txt 文件并执行其操作。 这一切都很棒,直到我尝试用
BuildMethod: makefile
做同样的事情。

在 makefile 中,我几乎尝试了每一个排列,但它们不起作用。 以下不起作用:-

python -m pip install -r requirements.txt -t $(ARTIFACT_DIR)
python -m pip install -r requirements.txt -t $(ARTIFACT_DIR)/python
python -m pip install -r requirements.txt -t $(ARTIFACT_DIR)/python/lib/python3.10/site-packes

以上所有给出的错误为

unable to import module 'app' No module name 'pydantic'

文件夹结构是这样的

|── events
│   └── event.json
├── hello_world
│   ├── app.py
│   ├── Makefile
│   └── requirements.txt
├── README.md
├── samconfig.toml
└── template.yaml

模板部分是这样的

  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Metadata:
      # BuildMethod: python3.10
      BuildMethod: makefile

    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Runtime: python3.10
      Architectures:
      - x86_64
      Events:
        HelloWorld:
          Type: Api
          Properties:
            Path: /hello
            Method: get

如果有人可以提供帮助或提供任何提示,将不胜感激。

python aws-lambda aws-sam-cli
1个回答
0
投票

就我而言,问题是由于将默认的

template.yaml
更改为自定义名称而引起的,这要求我使用
--template-file
参数来表示
sam build
sam deploy
sam local run_api

原因如下:https://stackoverflow.com/a/59815472/2823074

不幸的是,SAM 确实有问题。 ...您需要知道,只有构建命令需要您的

./fancy_template_name.yaml
(来自项目的顶级目录)。

在构建过程中,您的模板文件将被翻译/补充为临时

.aws-sam/build
目录中的新模板文件。接下来的每个
sam
命令都应引用构建目录中新创建的模板,即:
sam deploy --template-file ./.aws-sam/build/template.yaml

© www.soinside.com 2019 - 2024. All rights reserved.