У меня есть настройка таблицы dynamodb для использования по требованию чтение и запись.
До 100 lamdbda записывают в таблицу одновременно.
Я включил выходные данные Cloudwatch на тот момент, когда это происходит.
Код: Выделить всё
import boto3
from botocore.exceptions import ClientError
import time
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('myTable')
def lambda_handler(event, context, items, retries=5):
for item in items:
for i in range(retries):
try:
table.put_item(Item=item)
# Apply a check to verify that the item is loaded
response = table.get_item(Key={'PrimaryKey': item['PrimaryKey']})
loaded_item = response.get('Item')
if loaded_item == item:
break
else:
raise ValueError("Item verification failed")
except ClientError as e:
if e.response['Error']['Code'] in ['ProvisionedThroughputExceededException', 'ThrottlingException']:
time.sleep(2 ** i) # Exponential backoff
else:
raise
else:
print(f"Failed to write item after retries: {item}")
# Example usage
items = [
{'PrimaryKey': 'value1', 'Attribute': 'value1'},
{'PrimaryKey': 'value2', 'Attribute': 'value2'},
# Add more items as needed
]
lambda_handler(None, None, items)

Подробнее здесь: https://stackoverflow.com/questions/790 ... ilent-fail