Estoy usando nodejs, serverless y aws dynamodb. Estoy tratando de crear una lambda donde llamo a una API, obtengo los datos (1000 registros) y ahora quiero insertar estos datos en mi dynamodb.
Estoy usando batchWrite para esto y lo uso creando cubos de 25 objetos json cada uno. Pero estoy recibiendo un error:
AccessDeniedException: <Username> is not authorized to perform dynamodb BatchWriteItem on resource <table-name>
Cuando hago lo mismo sin batchWrite y operaciones PUT individuales, funciona bien (pero necesito usar lote porque eso da un error de rendimiento excedido).
He otorgado todos los derechos administrativos en AWS al usuario que estoy usando sin servidor.
en su archivo serverless.yml, debe agregar un nuevo rol
- Effect: Allow Action: - dynamodb:DescribeTable - dynamodb:Query - dynamodb:Scan - dynamodb:GetItem - dynamodb:PutItem - dynamodb:UpdateItem - dynamodb:DeleteItem - dynamodb:BatchWriteItem Resource: "arn:aws:dynamodb:${self:custom.region}:*:table/*"Así es como lo configuro cuando uso el proyecto Amplify CLI:
{ "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:BatchWriteItem", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:*:*:table/*" }, { "Effect": "Allow", "Action": "dynamodb:Query", "Resource": "arn:aws:dynamodb:*:*:table/*/index/*" }