我一直在尝试使用 AWS Lambda、DynamoDB 和 Eventbridge 开发交易机器人。然而,我在尝试运行测试环境以确保我的代码正常工作时遇到了一些奇怪的问题。我对 AWS 环境还很陌生,非常感谢我能得到的任何帮助。
我试图让 AWS Lambda 使用默认参数调用
lambda_hander
,这里是我的 lambda_handler
的片段供参考。
def lambda_handler(event, context):
url = "https://paper-api.alpaca.markets/v2/orders"
ticker = "AAPL"
yesterday = str(datetime.today() - timedelta(days = 1))
dynamodb = boto3.resource("dynamodb")
dynamodb.Table("my_table")
dynamodb_item = dynamodb.get_item(
Key = {
'Date': yesterday[0:10],
'TickerSymbol': ticker,
}
)
alpaca_headers = {
"accept": "application/json",
"content-type": "application/json",
"APCA-API-KEY-ID": ALPACA_CONFIG['API_KEY'],
"APCA-API-SECRET-KEY": ALPACA_CONFIG['API_SECRET']
}
alpaca_payload = {
"symbol": "AAPL",
"notional": "string",
"type": "stop",
"time_in_force": "day",
"limit_price": "string",
"stop_price": "string",
"trail_price": "string",
"trail_percent": "string",
"extended_hours": False,
}
asset = get_current_asset_position(ticker=ticker)
prev_closing_price = fast_atof(dynamodb_item['ClosingPrice'])
curr_price = fast_atof(asset['current_price'])
if curr_price > prev_closing_price * 1.05:
alpaca_payload['qty'] = asset['qty']
alpaca_payload['side'] = 'sell'
response = requests.post(url, json=alpaca_payload, headers=alpaca_headers)
return response
if curr_price < prev_closing_price * 0.8995:
alpaca_payload['qty'] = '10'
alpaca_payload['side'] = 'buy'
response = requests.post(url, json=alpaca_payload, headers=alpaca_headers)
return response
但是,在测试环境中运行代码时,仍然会出现此错误:
{
"errorMessage": "lambda_handler() missing 2 required positional arguments: 'event' and 'context'",
"errorType": "TypeError",
"requestId": "",
"stackTrace": [
" File \"/var/lang/lib/python3.11/importlib/__init__.py\", line 126, in import_module\n return _bootstrap._gcd_import(name[level:], package, level)\n",
" File \"<frozen importlib._bootstrap>\", line 1204, in _gcd_import\n",
" File \"<frozen importlib._bootstrap>\", line 1176, in _find_and_load\n",
" File \"<frozen importlib._bootstrap>\", line 1147, in _find_and_load_unlocked\n",
" File \"<frozen importlib._bootstrap>\", line 690, in _load_unlocked\n",
" File \"<frozen importlib._bootstrap_external>\", line 940, in exec_module\n",
" File \"<frozen importlib._bootstrap>\", line 241, in _call_with_frames_removed\n",
" File \"/var/task/lambda_function.py\", line 80, in <module>\n lambda_handler()\n"
]
}
我如何尝试解决这个问题。
但是问题仍然存在,我不知道该怎么办。
您没有显示导入内容,但很明显您正在使用
requests
库。默认情况下,Lambda 不与该库捆绑在一起,因此您可以使用 Lambda Layer 或从 botocore 导入它:
from botocore.vendored import requests