当我试图用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
我收到错误“为函数定义的角色不能由lambda承担”,因为我没有更新角色的“信任关系”配置文件。我没有遇到超时的问题,如在评论中链接的答案。
以上回答中的注释指出,您需要添加以下内容。
我的结果就像下面这样。
{
"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秒,我就可以绕过此问题(当然,时间可能是可变的,所以这充其量只是一种解决办法)。