使用一个dynamoDB表和两个不同的无服务应用程序

时间:2018-06-07 11:32:29

标签: amazon-web-services aws-lambda amazon-dynamodb yaml serverless-framework

我已经开始研究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中?

如果有人找到解决方案,请在此帮助我。提前致谢

2 个答案:

答案 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