总体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": []
}
型
2条答案
按热度按时间ki1q1bka1#
您提供的错误消息指示名为
gcp_get_assignment_role_data
的Python代码模块中的语法错误。该错误特别指出了gcp_get_assignment_role_data.py
文件的line 4
上的意外缩进。Python对缩进很敏感,因此当缩进级别不符合预期时会发生此错误。要解决此问题,需要确保
gcp_get_assignment_role_data.py
文件中的缩进一致且正确。gg58donl2#
我认为问题出在我创建和上传文件到图层时的目录结构上。如果目录名不是Python,则图层库将无法工作。我已经更新了我的目录结构,最后API按预期工作。
字符串