我正在尝试编写一个Lambda函数来存储dyanamodb中的数据,并尝试与AWS X射线集成。下面是Lambda函数的代码。我收到错误了
无法写入/tmp/..aws xray/初始化。未能向SDK初始化发出信号。由于Lambda工作人员仍在初始化而丢弃的子段put_item
我安装了Aws xray SDK软件包。此外,代码中还包括开始段和结束段。并设置了LAMBDA_TASK_ROOT.的环境变量。请给出这个错误的解决方案。
import json
import os
import configparser
import boto3
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch
patch(['boto3'])
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table(os.environ['dynamodb_table'])
def lambda_handler(event, context):
for i in event:
item = {
'key': i['key'],
'search': i['search'],
}
put_item_into_dynamodb(item)
response = {
"statusCode": 200,
"body": json.dumps(item)
}
return response
def put_item_into_dynamodb(item):
try:
xray_recorder.begin_subsegment('put_item')
response = table.put_item(Item=item)
status_code = response['ResponseMetadata']['HTTPStatusCode']
xray_recorder.current_subsegment().put_annotation('put_response', status_code)
finally:
xray_recorder.end_subsegment()更新-2(第二个问题):在这段代码中,AttributeError:'NoneType‘对象没有属性'put_annotation',这个错误即将出现。我不知道这是为什么..。
def lambda_handler(event, context):
val = (str(event['userId']),str(event['teamId']), str(event['searchScope']))
key_table = "|".join(val)
key = {
'key': key_table
}
response = get_item_into_dynamodb(key)
try:
data = response['Item']
for i in data['search']:
keyword_list.append(i['searchText'])
dict_of_keyword[i['searchText']] = i['dateTime']
recent_sort = sorted(dict_of_keyword.items(), key=lambda x: x[1], reverse=True)
def get_item_into_dynamodb(key):
try:
xray_recorder.begin_segment('get_item')
response = table.get_item(Key = key)
status_code = response['ResponseMetadata']['HTTPStatusCode']
xray_recorder.current_subsegment().put_annotation('get_response', status_code) #error is on this line
finally:
xray_recorder.end_subsegment()
return response发布于 2018-12-04 01:33:56
不能在Lambda函数中创建段。Lambda将在外部包装器中创建无法在函数中访问的段。你能试着把xray_recorder.begin_segment('get_item')换成xray_recorder.begin_subsegment('get_item')吗?
此外,在lambda处理程序之外生成的跟踪数据将不会被捕获,因为在此期间,lambda函数仍在初始化,并且没有可用的跟踪上下文。
https://stackoverflow.com/questions/53570002
复制相似问题