AWS SAM Lambda - 无法导入模块 'main':没有名为 'requests'、'msal' 的模块。使用 Azure 的管道 CI/CD
AWS SAM Lambda - Unable to import module 'main': No module named 'requests', 'msal' . pipeline using Azure CI/CD
我使用 SAM 模板使用 AWS lambda 创建了一个 python 项目。创建虚拟环境并安装所有必需的模块。例如,请求、msal 等 requirements.txt 文件中提及并安装的模块名称。我能够使用 vscode 中的 sam 命令构建、调试和部署。例如。 sam 构建、sam 本地调用、sam 部署 --guided 命令。
作为项目存储库使用 Azure devOps。现在,我创建了项目管道并成功部署到 AWS。
管道脚本的一部分-(安装依赖项)
- 脚本:|
python -m pip 安装 --upgrade pip
pip install -r src/requirements.txt
显示名称:'Install dependencies'
当我从 AWS 控制台测试 lambda 函数或调用 url 时,它根据云监视日志显示以下错误。它显示模块未找到“请求”和“msal”。
例如。
错误:功能日志
[错误] Runtime.ImportModuleError:无法导入模块 'main':没有名为 'requests'
的模块
python 3.9
AWS SAM
Azure 开发运营存储库
VScode
我无法弄清楚这个问题。我花了时间但没有找到原因。我卡住了。请给我hints/ideas/solution.
Lambda 依赖项必须安装在根文件夹中。请参阅此 guide.
中的“具有依赖项的部署包”部分的第 5 步
Create a deployment package with the installed library at the root.
您可以转到根目录,然后发出带有 -t
(目标)标志的 pip install
并使用点 .
指定当前目录。
pip install -r src/requirements.txt -t .
这是下面的回答。它可能会对某人有所帮助。
- task: AWSShellScript@1
displayName: 'Build'
inputs:
awsCredentials: AwsServiceConnection
regionName: 'us-east-1'
scriptType: 'inline'
inlineScript: |
sam build --debug \
--template-file template.yaml
- task: AWSShellScript@1
displayName: 'Package'
inputs:
awsCredentials: AwsServiceConnection
regionName: us-east-1
scriptType: 'inline'
inlineScript: |
sam package --resolve-s3 --output-template-file packaged.yaml
- task: AWSShellScript@1
displayName: 'Deploy Infrastructure'
inputs:
awsCredentials: AwsServiceConnection
regionName: 'us-east-1'
scriptType: "inline"
inlineScript: |
sam deploy \
--template-file packaged.yaml \
--no-confirm-changeset \
--no-fail-on-empty-changeset \
--capabilities CAPABILITY_IAM \
--stack-name sam-test-stack \
--resolve-s3 \
--s3-prefix sam-test-stack
我使用 SAM 模板使用 AWS lambda 创建了一个 python 项目。创建虚拟环境并安装所有必需的模块。例如,请求、msal 等 requirements.txt 文件中提及并安装的模块名称。我能够使用 vscode 中的 sam 命令构建、调试和部署。例如。 sam 构建、sam 本地调用、sam 部署 --guided 命令。
作为项目存储库使用 Azure devOps。现在,我创建了项目管道并成功部署到 AWS。
管道脚本的一部分-(安装依赖项)
- 脚本:|
python -m pip 安装 --upgrade pip
pip install -r src/requirements.txt 显示名称:'Install dependencies'
当我从 AWS 控制台测试 lambda 函数或调用 url 时,它根据云监视日志显示以下错误。它显示模块未找到“请求”和“msal”。 例如。 错误:功能日志 [错误] Runtime.ImportModuleError:无法导入模块 'main':没有名为 'requests'
的模块python 3.9
AWS SAM
Azure 开发运营存储库
VScode
我无法弄清楚这个问题。我花了时间但没有找到原因。我卡住了。请给我hints/ideas/solution.
Lambda 依赖项必须安装在根文件夹中。请参阅此 guide.
中的“具有依赖项的部署包”部分的第 5 步Create a deployment package with the installed library at the root.
您可以转到根目录,然后发出带有 -t
(目标)标志的 pip install
并使用点 .
指定当前目录。
pip install -r src/requirements.txt -t .
这是下面的回答。它可能会对某人有所帮助。
- task: AWSShellScript@1
displayName: 'Build'
inputs:
awsCredentials: AwsServiceConnection
regionName: 'us-east-1'
scriptType: 'inline'
inlineScript: |
sam build --debug \
--template-file template.yaml
- task: AWSShellScript@1
displayName: 'Package'
inputs:
awsCredentials: AwsServiceConnection
regionName: us-east-1
scriptType: 'inline'
inlineScript: |
sam package --resolve-s3 --output-template-file packaged.yaml
- task: AWSShellScript@1
displayName: 'Deploy Infrastructure'
inputs:
awsCredentials: AwsServiceConnection
regionName: 'us-east-1'
scriptType: "inline"
inlineScript: |
sam deploy \
--template-file packaged.yaml \
--no-confirm-changeset \
--no-fail-on-empty-changeset \
--capabilities CAPABILITY_IAM \
--stack-name sam-test-stack \
--resolve-s3 \
--s3-prefix sam-test-stack