【问题标题】:How to configure AWS lambda function to perform crud operation on dynamodb tables in different aws sub-account?如何配置 AWS lambda 函数以对不同 aws 子账户中的 dynamodb 表执行 crud 操作?
【发布时间】:2020-02-11 16:44:35
【问题描述】:

在 lambda 函数中,我们有版本和别名,我有两个别名(test1、test2)。 test1 对同一账户内的 dynamodb 进行 crud 操作,而 test2 需要对不同子账户同一区域的 dynamodb 进行 crud(防止 lambda 函数返工)。

我是如何尝试的:

  1. 在主帐号中创建了一个角色来担任角色
  2. 在子帐户中创建的角色将获得完整的 aws 服务访问权限
  3. 复制 arn 并将子帐户角色分配给主帐户 sts 承担策略
  4. 测试 lambda 函数以从子帐户 dynamodb 表中获取数据
  5. 错误:
{
  "errorMessage": "User: arn:aws:sts::123456:assumed-role/getAccessSubAccountRole/testlambdafunction is not authorized to perform: dynamodb:Query on resource: arn:aws:dynamodb:region:123456:table/USER",
  "errorType": "AccessDeniedException",
  "stackTrace": [
    "Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:51:27)",
    "Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)",
    "Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)",
    "Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:683:14)",
    "Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)",
    "AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)",
    "/var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10",
    "Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)",
    "Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:685:12)",
    "Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:116:18)"
  ]
}

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-dynamodb aws-sdk


    【解决方案1】:

    错误消息列出了问题:

    用户: arn:aws:sts::123456:assumed-role/getAccessSubAccountRole/testlambdafunction 无权执行:dynamodb:资源查询: arn:aws:dynamodb:region:123456:table/USER

    在 #2 中,您提到“在子帐户中创建一个角色将获得完整的 aws 服务访问权限”,但我认为您应该仔细检查该角色是否具有您期望的访问权限。这是否意味着具有管理员访问权限?一旦您确定它具有访问权限,请检查how policies are evaluated

    【讨论】:

    • 该角色已被分配完全的 aws 访问权限,因此它将允许使用分配给它的任何 aws 服务。同一区域中的 lambda 函数使用该角色并且可以正常工作。从主帐户担任相同角色时它不起作用,因此问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 2023-02-13
    • 2020-08-22
    • 1970-01-01
    相关资源
    最近更新 更多