提问者:小点点

为函数定义的角色不能由Lambda承担


当我试图用create-function命令创建一个lambda函数时,我得到了一个错误:“为函数定义的角色不能由lambda承担”。

aws lambda create-function
--region US-West-2
--function-name hellopython
--zip-file fileb:/hello_python.zip
--role arn:aws:iam::my-acc-account-id:role/default
--handler hello_python.my_handler
--runtime python2.7
--timeout 15
--memory-size 512


共2个答案

匿名用户

我收到错误“为函数定义的角色不能由lambda承担”,因为我没有更新角色的“信任关系”配置文件。我没有遇到超时的问题,如在评论中链接的答案。

以上回答中的注释指出,您需要添加以下内容。

  • 转到'IAM>角色>YourRoleName'
    • (注意:如果未列出您的角色,则需要创建它。)

    我的结果就像下面这样。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          <your other rules>
        },
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "lambda.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

匿名用户

我也遇到了这个错误。我还没有得到一个明确的答案,但我想我会传递一些提示,可能会帮助你和/或其他遇到这个问题的人。

A)如果您通过将您的帐户ID和角色名称放在一起来构建角色ARN,我认为帐户ID需要没有任何破折号

B)如果您刚刚创建了角色,并且可能添加了策略,那么角色将触发此错误的时间窗口似乎很小。在角色上一次操作和create-function调用之间休眠5或6秒,我就可以绕过此问题(当然,时间可能是可变的,所以这充其量只是一种解决办法)。