Lambda层问题:未找到Python模块

6rqinv9w  于 2023-08-08  发布在  Python
关注(0)|答案(2)|浏览(95)

总体Usecase:我有lambda函数,我正在使用terraform向lambda添加定制的python包层。成功创建了Lambda,并且层也被附加到Lambda。

这里是我的文件夹结构我已经安装了python google API库在gogoleapis文件夹使用下面的命令

编辑-1更新pip install google-cloud-iam -t /Users/Documents/GitHub/Project/project/step_function/common/googleapis

project-dir
     |-step_function
                   |-common
                           |-googleapis
                           |-zip
                   |-python
                           |-lambda_function.py
                   |-zip
                        |-lambda_function.zip
                   |-main.tf
     |-main.tf

字符串
我已经添加了块来创建googleapis的zip文件夹和创建层。Googleapis filder包含Python函数所需的所有谷歌云库。

# Add Google API Layers
data "archive_file" "googleapis_layer_archive" {
  type        = "zip"
  source_dir = "${path.module}/common/googleapis"
  output_path = "${path.module}/common/zip/googleapis.zip"
}

# Python googleapis layer
resource "aws_lambda_layer_version" "googleapis_layer" {
    filename            = "${path.module}/common/zip/googleapis.zip"
    layer_name          = "googleapis"
    source_code_hash    = data.archive_file.snow_gcp_permission_handler_archive.output_base64sha256
    compatible_runtimes = ["python3.8"]
}


Lambda函数gcp_get_assignment_role_data.py从层导入包的代码。我只是导入了googleapis文件夹中的google包。

Lambda函数:gcp_get_assignment_role_data.py

import json,os
from datetime import date
import boto3, requests
from google.oauth2 import service_account

def lambda_handler(event, context):
    # TODO implement
    return "hello-world"


当我尝试运行lambda函数时,返回下面的错误。我试图查看AWS文档,但所有步骤都导致手动创建并向函数添加lambda层。但是我想使用Terraform创建/添加到lambda。

编辑-1--再现实际错误

{
  "errorMessage": "Unable to import module 'gcp_get_assignment_role_data': No module named 'google'",
  "errorType": "Runtime.ImportModuleError",
  "stackTrace": []
}

ki1q1bka

ki1q1bka1#

您提供的错误消息指示名为gcp_get_assignment_role_data的Python代码模块中的语法错误。该错误特别指出了gcp_get_assignment_role_data.py文件的line 4上的意外缩进。Python对缩进很敏感,因此当缩进级别不符合预期时会发生此错误。
要解决此问题,需要确保gcp_get_assignment_role_data.py文件中的缩进一致且正确。

gg58donl

gg58donl2#

我认为问题出在我创建和上传文件到图层时的目录结构上。如果目录名不是Python,则图层库将无法工作。我已经更新了我的目录结构,最后API按预期工作。

project-dir
     |-step_function
                   |-common
                           |-python
                           |-python.zip
                   |-python
                           |-lambda_function.py
                   |-zip
                        |-lambda_function.zip
                   |-main.tf
     |-main.tf

字符串

相关问题