docker 错误:无法打开要求文件:[Errno 2]没有这样的文件或目录:'requirements.txt'使用AWS Lambda和Python时

cgyqldqp  于 2023-01-01  发布在  Docker
关注(0)|答案(1)|浏览(259)

我目前正在使用AWS CDK和Python在Python中建立一个基本的Lambda函数,希望能够在Lambda代码中包含外部库。

from constructs import Construct
import aws_cdk as core
from aws_cdk import (
    Stack,
    aws_lambda as _lambda,
    aws_apigateway as apigw,
)

class SportsTeamGeneratorStack(Stack):

    def __init__(self, scope: Construct, id: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)
        
        my_lambda = _lambda.Function(self, 'HelloHandler',
            runtime=_lambda.Runtime.PYTHON_3_9,
                code=_lambda.Code.from_asset("lambda",
                    bundling= core.BundlingOptions(
                        image=_lambda.Runtime.PYTHON_3_9.bundling_image,
                        command=[
                            "bash", "-c",
                            "pip install --no-cache -r requirements.txt -t /asset-output && cp -au . /asset-output"
                        ],
                    ),
                ),
            handler='hello.handler',
        )

        apigw.LambdaRestApi(
            self, 'Endpoint',
            handler=my_lambda,
        )

每当我运行cdk synth只是为了保持理智时,我就会得到这个错误:错误:无法打开要求文件:[Errno 2]没有这样的文件或目录:'requirements.txt'。我是使用docker和AWS Lambda的新手,但我在另一篇文章中看到了一些关于创建docker文件并将文件复制到docker映像的内容,尽管我不完全确定这是否适用于使用AWS作为此源代码的情况:
https://docs.aws.amazon.com/lambda/latest/dg/python-image.html
说"AWS为每个基本映像提供了一个DockerFile,以帮助绑定您的容器映像"。我已经使用Docker为顶级项目目录启用了文件共享,所以我不认为这是个问题。而且我有点困惑,如果我必须在这里使用Amazon ECR,或者这将允许我在Lambda代码中包含外部依赖项。我假设我必须将requirements.txt文件引入AWS提供的docker图像模板中,但不确定如何做到这一点。

qni6mghb

qni6mghb1#

能否尝试将user="root"作为选项添加到BundlingOptions中?

my_lambda = _lambda.Function(self, 'HelloHandler',
            runtime=_lambda.Runtime.PYTHON_3_9,
                code=_lambda.Code.from_asset("lambda",
                    bundling= core.BundlingOptions(
                        image=_lambda.Runtime.PYTHON_3_9.bundling_image,
                        command=[
                            "bash", "-c",
                            "pip install --no-cache -r requirements.txt -t /asset-output && cp -au . /asset-output"
                        ],
                        user="root",
                    ),
                ),
            handler='hello.handler',
        )

相关问题