在本地调用函数时,AWS SAM CLI 无法访问 Dynamo DB
AWS SAM CLI cannot access Dynamo DB when function is invoked locally
我正在使用 aws-sam-cli 构建 AWS lambda。在函数中,我想访问某个DynamoDB table。
我的问题是,当我使用 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)
}
但是,如果我实际上 sam deploy
它到 AWS 并在实际的 Lambda 控制台中测试它,它会正确记录 table 信息。
{
Items: <TABLE ITEMS>,
Count: 1,
ScannedCount: 1
}
这是预期的行为吗?或者我需要做一些额外的配置才能在本地工作吗?我的 template.yaml
看起来像这样:
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'
我相信当您在本地调用 Lambda 时,SAM 无法识别将哪个配置文件用于远程资源,例如:DynamoDB
尝试为您的远程 dynamoDB 传递凭据配置文件
例如:
sam local invoke --profile default
我正在使用 aws-sam-cli 构建 AWS lambda。在函数中,我想访问某个DynamoDB table。
我的问题是,当我使用 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)
}
但是,如果我实际上 sam deploy
它到 AWS 并在实际的 Lambda 控制台中测试它,它会正确记录 table 信息。
{
Items: <TABLE ITEMS>,
Count: 1,
ScannedCount: 1
}
这是预期的行为吗?或者我需要做一些额外的配置才能在本地工作吗?我的 template.yaml
看起来像这样:
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'
我相信当您在本地调用 Lambda 时,SAM 无法识别将哪个配置文件用于远程资源,例如:DynamoDB
尝试为您的远程 dynamoDB 传递凭据配置文件
例如:
sam local invoke --profile default