我遇到一个简单的Python Lambda函数问题。 Lambda(由Zapier调用)函数基本上创建了一个Confluence页面并召回另一个Zapier Webhook。我在我的S3中上传了一个.zip文件,其中包含了所有软件包的所有文件夹,然后是一个带有我的处理函数的Python文件的 src 文件夹。
.zip - > src / lambda_function.py然后我称之为处理函数。
在我的lambda_function.py的顶部,我有以下内容:
import string
import json
import pyconfluence as pyco
import requests
import os
import time
def create_page(name, content, label):
data = {}
data["type"] = "page"
data["title"] = name
data["ancestors"] = [{"id": str(12345678)}] #172949526 is the Parent
data["space"] = {"key": "PK"}
data["body"] = {"storage": {"value": content, "representation": "storage"}}
data["metadata"] = {"labels": [{"name": label}]}
return pyco.api.rest("/", "POST", json.dumps(data))
def lambda_handler(event, context):
# Page 12345678 that is in fact a representation of the template
content = pyco.get_page_content(12345678)
page_title = event['issue_key'] + ": " + event['issue_title']
content = string.replace(content, "PK-200", event['issue_key'])
create_page(page_title, content, "active-product-requirement")
api_url = "https://acmein.atlassian.net/rest/api/2/issue/"+event['issue_key']+"/remotelink/"
webhook = 'https://hooks.zapier.com/hooks/catch/123456/8v6fde/'
requisite_headers = {'Accept': 'application/json',
'Content-Type': 'application/json'}
auth = (os.environ["PYCONFLUENCE_USER"], os.environ["PYCONFLUENCE_TOKEN"])
result = requests.get(api_url, headers=requisite_headers, auth=auth).json()
if len(result) > 0:
confluence_url = result[0]["object"]["url"]
else:
confluence_url = "Error getting the page"
callback = requests.post(webhook, data={'issue_key': event['issue_key'], 'confluence_url': confluence_url })
return ["Success"]
然后在我的CloudWatch日志中出现以下错误:
答案 0 :(得分:0)
您必须压缩src
文件夹的内容,而不是src
文件夹本身。你的python模块(lambda_function.py
)应该是你zip的第一级。
见documentation:
压缩目录内容,而不是目录。 Zip文件的内容可用作Lambda函数的当前工作目录。