You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用serverless-iam-roles-per-function插件部署时报Properties undefined错误

问题描述

我执行serverless deploy --region eu-central-1命令部署时,遇到如下错误:

Type Error ---------------------------------------------
 
  Cannot read property 'Properties' of undefined
 
     For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable.

该错误仅在我添加如下配置后才出现:

plugins:
  - serverless-iam-roles-per-function

注释掉该插件配置即可恢复正常,但我需要使用该插件为我的Lambda函数配置DynamoDB访问权限。
目前网上几乎没有该报错的相关有效信息,升级到最新版本也暂未解决该问题,Serverless官方提示的参考价值不大。我在部署前执行set SLS_DEBUG=*"开启调试模式后,得到如下报错栈:

Type Error ----------------------------------------------

  TypeError: Cannot read property 'Properties' of undefined
      at ServerlessIamPerFunctionPlugin.createRoleForFunction (C:\Users\XXXXX\MyProject\node_modules\serverless-iam-roles-per-function\dist\lib\index.js:273:25)
      at ServerlessIamPerFunctionPlugin.createRolesPerFunction (C:\Users\XXXXX\MyProject\node_modules\serverless-iam-roles-per-function\dist\lib\index.js:383:18)
      at PluginManager.invoke (C:\snapshot\serverless\lib\classes\PluginManager.js:579:20)
      at async PluginManager.spawn (C:\snapshot\serverless\lib\classes\PluginManager.js:601:5)
      at async Object.before:deploy:deploy [as hook] (C:\snapshot\serverless\lib\plugins\deploy.js:60:11)
      at async PluginManager.invoke (C:\snapshot\serverless\lib\classes\PluginManager.js:579:9)
      at async PluginManager.run (C:\snapshot\serverless\lib\classes\PluginManager.js:639:7)
      at async Serverless.run (C:\snapshot\serverless\lib\Serverless.js:452:5)
      at async C:\snapshot\serverless\scripts\serverless.js:751:9

     For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable.

请问我是否需要在本次提问中附上我的serverless.yml配置文件?该文件内容较长。

解答

需要附上配置,你可以只节选核心部分,无需提交完整文件:

  • provider块的完整配置,包含区域、运行时、全局IAM配置等内容
  • 至少1个触发报错的Lambda函数的完整定义,包含你为该函数配置的IAM权限规则或独立角色配置
  • resources块中你定义的DynamoDB资源配置
  • 所有plugins相关的配置内容

你也可以先自行排查几个常见的触发该报错的场景:

  1. 检查是否在函数级别配置了不存在的角色引用,或者角色的CloudFormation逻辑ID拼写错误
  2. 检查你定义的DynamoDB资源是否配置了正确的Properties字段,没有缩进错误导致资源定义层级异常
  3. 检查serverless-iam-roles-per-function插件版本是否和你当前使用的Serverless Framework版本兼容:如果Serverless Framework版本≥3.0,需要使用该插件的3.x及以上版本
  4. 确认你没有在全局IAM配置中设置iamRoleStatements的同时,又给个别函数设置了空的iamRoleStatements字段

排查后问题仍存在的话,贴出上述节选的配置内容即可快速定位问题。

内容的提问来源于stack exchange,提问作者Cadoiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:36:03