无服务器调用错误:“无权执行:dynamodb:BatchWriteItem on resource:arn:aws:...”

Posted

技术标签:

【中文标题】无服务器调用错误:“无权执行:dynamodb:BatchWriteItem on resource:arn:aws:...”【英文标题】:Serverless invoke error: "is not authorized to perform: dynamodb:BatchWriteItem on resource: arn:aws:..." 【发布时间】:2021-12-20 06:51:59 【问题描述】:

我的 serverless.yml 上有这个 iamRoleStatements,它应该允许对我的 lambda 函数执行这些操作:

- Effect: Allow
  Action:
    - dynamodb:Query
    - dynamodb:Scan
    - dynamodb:GetItem
    - dynamodb:PutItem
    - dynamodb:UpdateItem
    - dynamodb:DeleteItem
    - dynamodb:BatchWriteItem
    - dynamodb:BatchReadItem
  Resource: "arn:aws:dynamodb:$self:provider.region:*:table/$self:custom.tableName"

这是我的 lambda yml:

functions:
  scraping:
    handler: handler.scraping
    memorySize: 1536
    layers:
      - !Sub 'arn:aws:lambda:$AWS::Region:764866452798:layer:chrome-aws-lambda:22'
    timeout: 15
    events:
      - schedule:
          rate: $self:custom.scheduleRate
          name: schedule-scraping-$self:provider.stage
          description: scraping each 5 minute
          enabled: $self:custom.enabled

在我的句柄函数中,我尝试插入一个项目,但出现此错误:

AccessDeniedException: User: arn:aws:sts::006977245882:assumed-role/BestSellers-qa-us-east-1-lambdaRole/BestSellers-qa-scraping is not authorized to perform: dynamodb:BatchWriteItem on resource: arn:aws:dynamodb:us-east-1:006977245882:table/TABLE_NAME
   at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:52:27)
   at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20) ...

【问题讨论】:

您是否检查了您对 lambda 函数的角色权限。?它似乎是权限问题BestSellers-qa-scraping is not authorized to perform: dynamodb:BatchWriteItem 当您在 serverless.yml 中配置 iamRoleStatements 时,至少在理论上,您的所有 lambda 描述的函数都应该继承该权限... =\ 所以不需要更多权限 欢迎来到 Stack Overflow。我们需要更多关于问题所在的具体信息。请描述你在做什么,将你的代码显示为minimal reproducible example,并清楚地解释你的尝试有什么问题。例如,我们看不到此处设置的 DDB 表,并且您没有发布完整的配置。 【参考方案1】:

除非您在错误消息中编辑/编辑了TABLE_NAME,否则我猜您是在无意中尝试写入可能不存在的表 (TABLE_NAME)。

您尚未发布您的处理程序代码,但在您的处理程序代码尝试使用 DynamoDB API 插入项目之前,我会检查您的代码并验证您的实际表名是否已正确设置/插入。

【讨论】:

确实,我的自定义变量有错误,你完全正确。非常感谢。

以上是关于无服务器调用错误:“无权执行:dynamodb:BatchWriteItem on resource:arn:aws:...”的主要内容,如果未能解决你的问题,请参考以下文章

IBM MFP8 - 调用适配器时主机无响应错误

Spring Cloud项目中通过Feign进行内部服务调用发生401407错误无返回信息的问题

Spring Cloud项目中通过Feign进行内部服务调用发生401407错误无返回信息的问题

从显示错误中删除“无错误”输出

无服务器框架、打字稿、nodejs 和 mysql - 错误:接收到的数据包顺序错误

POSTMAN 在调用 API 时出现内部服务器错误