Estoy construyendo un AWS lambda con aws-sam-cli . En la función, quiero acceder a una determinada tabla de DynamoDB. Mi problema es que la función vuelve con este error cuando la invoco localmente con el comando de sam local invoke : ResourceNotFoundException: Requested resource not found
const axios = require('axios') const AWS = require('aws-sdk') AWS.config.update({region: <MY REGION>}) const dynamo = new AWS.DynamoDB.DocumentClient() exports.handler = async (event) => { const scanParams = { TableName: 'example-table' } const scanResult = await dynamo.scan(scanParams).promise().catch((error) => { console.log(`Scan error: ${error}`) // => Scan error: ResourceNotFoundException: Requested resource not found }) console.log(scanResult) } Sin embargo, si realmente lo sam deploy en AWS y lo pruebo en la consola Lambda real, registra la información de la tabla correctamente.
{ Items: <TABLE ITEMS>, Count: 1, ScannedCount: 1 } ¿Es este el comportamiento esperado? ¿O hay alguna configuración adicional que deba hacer para que funcione localmente? Mi template.yaml se ve así:
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: 'Example SAM stack' Resources: ExampleFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs12.x Policies: - DynamoDBCrudPolicy: TableName: 'example-table'Creo que cuando invoca su Lambda localmente, SAM no reconoce qué perfil usar para los recursos remotos, por ejemplo, DynamoDB
Intente pasar el perfil de credenciales para su dynamoDB remoto
ex:
sam local invoke --profile defaultPuede consultar la documentación del comando aquí: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-local-invoke.html