Estou construindo uma API serverless com Node.js usando AWS Lambda, e minha função interage com o DynamoDB para recuperar dados. No entanto, toda vez que tento interagir com o DynamoDB, a função Lambda atinge o tempo limite antes que a solicitação seja concluída.
Configurei corretamente a função de execução da minha função Lambda com as permissões necessárias e assegurei que o AWS SDK v3 ( @aws-sdk/client-dynamodb
) esteja instalado e inicializado corretamente. Apesar disso, a função Lambda atinge o tempo limite sem consultar o DynamoDB com sucesso.
Aqui está o que eu fiz até agora:
O tempo limite da função Lambda foi configurado para 30 segundos, mas ele ainda atinge o tempo limite.
Verifiquei as permissões para a função Lambda, que inclui acesso ao DynamoDB.
Eu usei
async/await
para lidar com solicitações assíncronas.
Espero que a função Lambda seja concluída com sucesso e retorne dados do DynamoDB sem nenhum tempo limite.
Tentei aumentar o tempo limite da função Lambda para 30 segundos.
Tentei ajustar a capacidade de leitura/gravação da tabela do DynamoDB, mas isso não resolveu o problema.
Eu esperava que a função Lambda fosse executada sem atingir o tempo limite e recuperasse os dados do DynamoDB com sucesso.
Task timed out after 30.01 seconds
const { DynamoDBClient, GetItemCommand } = require("@aws-sdk/client-dynamodb");
const client = new DynamoDBClient({ region: "us-east-1" });
const params = {
TableName: "MyTable",
Key: { "id": { S: "123" } }
};
exports.handler = async (event) => {
try {
const data = await client.send(new GetItemCommand(params));
return {
statusCode: 200,
body: JSON.stringify(data),
};
} catch (err) {
console.error("Error", err);
return {
statusCode: 500,
body: JSON.stringify({ error: "Could not retrieve data" }),
};
}
};
Verifiquei que a tabela do DynamoDB existe e contém dados para o fornecido id
, mas a função Lambda ainda atinge o tempo limite.