我创建了“快速启动:Web后端”AWS SAM项目,其中包含一个使用SAM init SAM app
的DynamoDB表。
按照自述文件中的说明,当我尝试构建并调用引用Dynamo表的lambda函数时:
sam build
sam local invoke getAllItemsFunction --event events/event-get-all-items.json
我得到一个未找到请求的资源
错误:
Invoking src/handlers/get-all-items.getAllItemsHandler (nodejs12.x)
Fetching lambci/lambda:nodejs12.x Docker container image......
Mounting /Users/dev/lab/sam-app/.aws-sam/build/getAllItemsFunction as /var/task:ro,delegated inside runtime container
START RequestId: bd1dd37e-d464-13c1-45da-a4d427db1e84 Version: $LATEST
2020-07-12T23:33:50.674Z bd1dd37e-d464-13c1-45da-a4d427db1e84 INFO received: { httpMethod: 'GET' }
2020-07-12T23:33:50.812Z bd1dd37e-d464-13c1-45da-a4d427db1e84 ERROR Invoke Error {"errorType":"ResourceNotFoundException","errorMessage":"Requested resource not found","code":"ResourceNotFoundException","message":"Requested resource not found","time":"2020-07-12T23:33:50.809Z","requestId":"E711QAGJJAH7FDFSIU8PR88053VV4KQNSO5AEMVJF66Q9ASUAAJG","statusCode":400,"retryable":false,"retryDelay":26.07018253857256,"stack":["ResourceNotFoundException: Requested resource not found"," at Request.extractError (/var/task/node_modules/aws-sdk/lib/protocol/json.js:51:27)"," at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:106:20)"," at Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:78:10)"," at Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:688:14)"," at Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)"," at AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)"," at /var/task/node_modules/aws-sdk/lib/state_machine.js:26:10"," at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)"," at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:690:12)"," at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:116:18)"]}
示例项目包含3个lambda函数,它们调用DynamoDb后端(为清晰起见进行了修剪):
AWSTemplateFormatVersion: 2010-09-09
Description: >-
sam-ap
Transform:
- AWS::Serverless-2016-10-31
Resources:
getAllItemsFunction:
Type: AWS::Serverless::Function
Properties:
Handler: src/handlers/get-all-items.getAllItemsHandler
Runtime: nodejs12.x
MemorySize: 128
Timeout: 100
Description: A simple example includes a HTTP get method to get all items from a DynamoDB table.
Policies:
# Give Create/Read/Update/Delete Permissions to the SampleTable
- DynamoDBCrudPolicy:
TableName: !Ref SampleTable
Environment:
Variables:
# Make table name accessible as environment variable from function code during execution
SAMPLE_TABLE: !Ref SampleTable
Events:
Api:
Type: Api
Properties:
Path: /
Method: GET
SampleTable:
Type: AWS::Serverless::SimpleTable
Properties:
PrimaryKey:
Name: id
Type: String
ProvisionedThroughput:
ReadCapacityUnits: 2
WriteCapacityUnits: 2
Outputs:
WebEndpoint:
Description: "API Gateway endpoint URL for Prod stage"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
我的假设是DynamoDB表不是在AWS测试docker容器中本地创建的。在本地测试DynamoDB时,是否还缺少其他构建步骤或其他定义文件?
我的假设是DynamoDB表不是在AWS测试docker容器中本地创建的。在本地测试DynamoDB时,是否还缺少其他构建步骤或其他定义文件?
sam本地调用
仅用于在本地调用lambda函数,而不是创建本地DynamoDb。
本地DynamoDb应该手动设置,例如使用docker映像或java:
如何使用您的本地函数与本地DynamoDb显示在AWS博客文章和其他资源,例如:
我正在使用DynamoDB local进行单元测试。这并不坏,但也有一些缺点。明确地: 在测试运行之前,您必须以某种方式启动服务器 服务器在每次测试之前不会启动和停止,因此测试会变得相互依赖,除非在每次测试之后添加代码删除所有表等 所有开发者都需要安装它 我想做的是把DynamoDB本地jar和它所依赖的其他jar放在我的目录中(我用Java写)。然后在每次测试之前,我会启动它,用运行,测试结束后
我已经在本地运行了DynamoDB,并使用shell(localhost:8000/shell/)创建了一个表。 [Mon Decc 14 11:22:48.266930 2015][:错误][pid 12][client 10.0.2.2:58042]PHP致命错误:未捕获AWS\DynamODB\Exception\ResourceNotFoundException:AWS错误代码:Resou
问题内容: 给出以下代码: 我的IDE没有给我任何错误。也就是说,直到我尝试构建项目并运行它。当我这样做时,它给了我一个看起来像这样的编译器错误: 现在,我得到了错误消息,如果foo()是静态的,则不会发生这种情况。没错,这仅在foo()是实例方法的情况下才会发生。并且仅当LocalFoo是实例方法中的本地类时才发生,并且仅当使用构造函数引用时(即从不使用常规方法引用)才发生。 更重要的是,如果我
问题是,当我开枪的时候 我如何在本地设置测试的头?(再一次,我不是一个专业人士,我猜当我决定在生产中部署时,我会有相同的起源。如果不是,无论如何,我仍然需要解决方案)
我试图通过触发Python lambda表达式以编程方式将数据放入本地运行的DynamoDB容器中。 我正在尝试遵循此处提供的模板:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Python.03.html 我使用的是amazon/dynamodb local,您可以在此处下载:htt
我无法在浏览器堆栈上运行本地测试(例如http://localhost:3000)。我正在使用LinuxMint 18.3 Sylvia x64。浏览器Chromium。浏览器的扩展程序(应用程序)已安装。 屏幕截图显示没有连接。http://joxi.ru/Y2LJBv0H9MBv8r 复选框已选中。http://joxi.ru/1A5PvVpCnzMww2 我试过这个手册https://www