Python 3.x 部署到AWS Lambda的Python包包含父文件夹名称

Python 3.x 部署到AWS Lambda的Python包包含父文件夹名称,python-3.x,amazon-web-services,aws-lambda,amazon-cloudformation,aws-codepipeline,Python 3.x,Amazon Web Services,Aws Lambda,Amazon Cloudformation,Aws Codepipeline,我在PyCharm中创建了一个python包,这是文件夹结构 我正在尝试使用云形成模板将其部署到AWS Lambda,并使用下面的模板。zip放在S3存储桶中,在部署期间从中获取 AWSTemplateFormatVersion: '2010-09-09' Description: Lambda function Resources: Function: Type: AWS::Lambda::Function Properties: FunctionName:

我在PyCharm中创建了一个python包,这是文件夹结构

我正在尝试使用云形成模板将其部署到AWS Lambda,并使用下面的模板。zip放在S3存储桶中,在部署期间从中获取

AWSTemplateFormatVersion: '2010-09-09'
Description: Lambda function
Resources:
  Function:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: code
      Handler: index.lambda_handler
      Role: arn:aws:iam::xxxxxxxxxxxx:role/lambdaExecutionRole11030037
      Code:
        S3Bucket: apicode11
        S3Key: code.zip
      Runtime: python3.8
      Timeout: 15
在Lambda中成功部署后,代码的文件夹结构将发生更改,并且父文件夹名称将附加到所有文件中


请帮助我了解是否需要对代码结构或CFT进行任何更改,以便不在Lambda中追加父文件夹名称。您可以在处理程序中指定路径:

Handler: code/index.lambda_handler

ZIP文件不应包含任何文件夹。您只需要将模块保持在根位置

您的文件夹结构应该类似于

您可以使用创建zip文件-

cd message-retry
zip ../message-retry.zip *

您是如何创建
code.zip
?@jellycsc code.zip是使用power shell的“压缩存档代码.zip”创建的,并且通常在windows中创建,即右键单击压缩此项工作,但更像是一种解决方法,当代码的复杂性增加时,它将很难维护。@ArijitDas这不是一个解决办法。就是这样做的。您使用的是非默认处理程序,因此需要指定它。为什么这会是一个解决方法?我在windows系统中工作,即使在上载模块时将模块保留在根位置,我也需要创建一个.zip存档,当使用cft部署此zip时,存档文件夹的名称将被添加,这意味着您的zip文件包含一个根文件夹,即
code
。您应该将
index.py
保存在
code
文件夹中。您不应该添加
\uuuu init\uuuuuuy.py
。如果它有代码,则必须将其移动到
index.py
。我建议您遵循。一旦创建了zip,您可以通过打开zip文件进行验证,您应该会看到
index.py
模块。不是任何其他文件夹或文件。我在前面已经讨论过,这只在部署单个.py文件时有效,但我面临的问题是在尝试部署包时。