我已经开始研究DynamoDB,Lambda函数和无服务器框架。
我对这一切有一些了解,并且仍然在学习。
现在我的观点是,我创建了一个无服务器应用程序并部署到AWS。在这个应用程序中,我创建了40多个端点(Lambda函数)和4个dynamoDB表,如A,B,C,D。
现在我需要创建另一个单独的无服务器应用程序,我想将dynamoDB表A用于我在上一个无服务器应用程序中创建的应用程序。
有可能吗?如果可能的话,我该如何实现呢。
我已经尝试将操作扫描到这个新的应用程序中,但是通过像
这样的错误
2018-06-07T11:02:19.352Z 3e8b6b27-6a42-11e8-acf9-7f86fa9df706 { AccessDeniedException: User: arn:aws:sts::XXXXXXX:assumed-role/serverless-rest-api-dev-us-east-1-lambdaRole/serverless-rest-api-dev-todoList is not authorized to perform: dynamodb:Scan on resource: arn:aws:dynamodb:us-east-1:XXXXXX:table/A
在这里,我需要将与dynamoDB表A相关的任何其他内容定义到我的新serverless.yml
中?
如果有人找到解决方案,请在此帮助我。提前致谢
答案 0 :(得分:0)
如果应用程序和dynamoDB表都位于同一区域,则可以。您应该为第二个应用程序设置相应的角色以访问Dynamo DB表。请检查角色的权限: 无服务器-REST的API-DEV-US-东-1- lambdaRole /无服务器静止-API-DEV-todolist的
答案 1 :(得分:0)
我解决了我的问题。
首先,我需要将table A
的ARN检查到我在第一个应用程序中创建的AWS dynamoDB表部分。
现在将ARN添加到第二个无服务器应用程序的serverless.yml文件的Resource部分。
假设表A的ARN类似于arn:aws:dynamodb:us-east-1:XXXXXX:table/todo-task
现在我需要将这个ARN添加到我的第二个应用程序的serverless.yml文件的Resource部分。就像
IAMRoleStatement
- Effect: Allow
Action:
- dynamodb:*
Resource:
- arn:aws:dynamodb:us-east-1:XXXXXX:table/todo-task