在 Python 中输出事件数据 3.6 AWS Lambda 函数
Output event data in Python 3.6 AWS Lambda function
我正在尝试在 AWS Lambda Python 函数中输出一个名为 sheetID 的事件,但似乎无法获得正确的语法。
这是一个代码片段:
def lambda_handler(event, context):
scraper = Scraper()
scraper.run()
return { "Message": "Scrape function ran correctly!" }
class Scraper():
def __init__(self):
log.debug("Starting scraper...")
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
credentials = sac.from_json_keyfile_name('src/h9d7246486f2.json', scope)
log.debug("Authorizing gspread...")
self.gc = gspread.authorize(credentials)
self.spreadsheet = self.gc.open_by_key(event['sheetID'])
...
这是有问题的行:
self.spreadsheet = self.gc.open_by_key(event['sheetID'])
之前有一个静态 Google Sheet 名称
self.spreadsheet = self.gc.open("CorStats")
测试 Lambda 函数可以很好地处理事件数据,但不确定格式部分是否可以或应该在上面的函数中使用。
def my_handler(event, context):
message = 'Hello {} {}!'.format(event['key1'],
event['key3'])
return {
'message' : message
}
这是错误日志:
{
"errorMessage": "name 'event' is not defined",
"errorType": "NameError",
"stackTrace": [
[
"/var/task/src/scrape_lambda.py",
18,
"lambda_handler",
"scraper = Scraper()"
],
[
"/var/task/src/scrape_lambda.py",
30,
"__init__",
"self.spreadsheet = self.gc.open_by_key(event['sheetID'])"
]
]
}
您需要在 __init__
方法中包含事件,例如def __init__(self, event):
,然后用scraper = Scraper(event)
实例化它。
先做 def __init__(self, sheet_id)
,再做 scraper = Scraper(event['sheetID'))
和 self.spreadsheet = self.gc.open_by_key(sheet_id)
可能更干净。这样,您就可以将 Scraper
class 从 lambda 事件中分离出来,并可以单独对其进行测试。
我正在尝试在 AWS Lambda Python 函数中输出一个名为 sheetID 的事件,但似乎无法获得正确的语法。
这是一个代码片段:
def lambda_handler(event, context):
scraper = Scraper()
scraper.run()
return { "Message": "Scrape function ran correctly!" }
class Scraper():
def __init__(self):
log.debug("Starting scraper...")
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
credentials = sac.from_json_keyfile_name('src/h9d7246486f2.json', scope)
log.debug("Authorizing gspread...")
self.gc = gspread.authorize(credentials)
self.spreadsheet = self.gc.open_by_key(event['sheetID'])
...
这是有问题的行:
self.spreadsheet = self.gc.open_by_key(event['sheetID'])
之前有一个静态 Google Sheet 名称
self.spreadsheet = self.gc.open("CorStats")
测试 Lambda 函数可以很好地处理事件数据,但不确定格式部分是否可以或应该在上面的函数中使用。
def my_handler(event, context):
message = 'Hello {} {}!'.format(event['key1'],
event['key3'])
return {
'message' : message
}
这是错误日志:
{
"errorMessage": "name 'event' is not defined",
"errorType": "NameError",
"stackTrace": [
[
"/var/task/src/scrape_lambda.py",
18,
"lambda_handler",
"scraper = Scraper()"
],
[
"/var/task/src/scrape_lambda.py",
30,
"__init__",
"self.spreadsheet = self.gc.open_by_key(event['sheetID'])"
]
]
}
您需要在 __init__
方法中包含事件,例如def __init__(self, event):
,然后用scraper = Scraper(event)
实例化它。
先做 def __init__(self, sheet_id)
,再做 scraper = Scraper(event['sheetID'))
和 self.spreadsheet = self.gc.open_by_key(sheet_id)
可能更干净。这样,您就可以将 Scraper
class 从 lambda 事件中分离出来,并可以单独对其进行测试。