Я написал лямбда-функцию, которая будет запускать код python, когда в S3 происходит событие создания, и сценарий Python должен считывать файлы из S3 и отправлять их на сервер Neptune.
Когда я проверяю это, я получаю следующую ошибку.
{
"requestId":"xxxxxxxx-1234-5678-9012-xxxxxxxxxxxxx",
"code":"ThrottlingException",
"detailedMessage":"Failed to start new load for the source s3://my-s3-url/file.ttl.
Max concurrent load limit breached. Limit is 1"
}
Код:
def lambda_handler(event, context):
file_names = ["a.ttl", "b.ttl", "c.ttl"]
source_url = "s3://my-s3.aws.com/"
role = "my-role"
neptune_url = "https://my-neptune-server.aws.com/loader"
headers = {"Content-Type": "application/json"}
for name in file_names:
file = source_url+name
data = {"source": file, "iamRoleArn": role, "region": "region-1", "failOnError": "FALSE", "format": "turtle"}
loop = asyncio.get_event_loop()
task = loop.create_task(post_async(neptune_url, json.dumps(data), headers))
resp = loop.run_until_complete(task)
print(resp)
async def post_async(neptune_url, data, headers):
async with aiohttp.ClientSession() as session:
async with session.post(neptune_url, data=data, headers=headers) as response:
result = await response.text()
return result
Я пробовал оба варианта: синхронный и асинхронный. Я получаю ограниченную документацию в Интернете. Кто-нибудь может указать мне правильное направление?