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

问题描述

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

enter image description here

我正在尝试使用 Cloud Formation Template 并使用以下模板将其部署到 AWS Lambda。 code.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 中成功部署后,代码文件夹结构会发生变化,并且父文件名称会附加到所有文件

enter image description here

请帮助我了解是否需要在代码结构或 CFT 中进行任何更改,以便在 Lambda 中不附加父文件名称

解决方法

您可以在处理程序中指定路径:

Handler: code/index.lambda_handler
,

ZIP 文件不应包含任何文件夹。将模块保存在根位置所需的一切。

你的文件夹结构应该像
enter image description here

您可以使用 -

创建一个 zip 文件
cd message-retry
zip ../message-retry.zip *