当我尝试使用create-function命令创建lambda函数时,我收到错误“Lambda不能为函数定义角色”。
aws lambda create-function - 区域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 - 超时15 --memory-size 512
我收到错误“Lambda没有为函数定义的角色”,因为我没有更新角色“Trust Relationship”配置文件。我没有像评论中的链接答案那样遇到超时问题。
上述答案中的注释指出您需要添加以下内容。
我的结局如下。
{
"Version": "2012-10-17",
"Statement": [
{
<your other rules>
},
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
我也遇到了这个错误。尚未得到确定的答案(但)但我认为我会传递一些可能有助于您和/或其他任何人解决此问题的提示。
A)如果您通过将您的帐户ID和角色名称放在一起来构建角色ARN,我认为帐户ID必须没有任何破折号
B)如果你刚刚创建了角色,并且可能添加了策略,那么角色似乎会在一个(小)时间窗口中触发此错误。在角色的最后一次操作和创建函数调用之间休息5或6秒允许我绕过这个问题(当然,时间可能是变化的,所以这最好是一种解决方法)。
对我来说,问题是我的角色名称不完整。我设置
--role arn:aws:iam::000000000000:role/MyRoleName
什么时候应该
--role arn:aws:iam::000000000000:role/service-role/MyRoleName
(当然我的aws id实际上并不是000000000000)
我通过跑步发现了这个
aws iam get-role --role-name MyRoleName
并查看结果集中的"Arn"
属性。
对我来说,问题是我设置了错误的默认区域环境键。
虽然我的IAM角色确实有正确的政策和信任关系,但是有同样的问题。通过CLI完成Lambda创建工作正常,问题是在创建IAM角色后使用lambda模块时。
我也尝试“暂停”几秒钟,但没有帮助。
结束添加重试和延迟,直到定义了registerdLambda.code。通常它会在1-2次尝试后起作用。
例:
- name: creating lambda function
lambda:
state: present
name: "{{ lambdaName }}"
zip_file: "{{ lambdaZipFile }}"
runtime: "{{ lambdaRuntime }}"
role: "{{ lambdaRole }}"
description: "{{ lambdaDescription }}"
handler: "{{ lambdaHandler }}"
register: lambdaFunc
retries: 3
delay: 10
until: "{{ lambdaFunc.code is defined }}"
由于在创建Lambda函数时在CloudFormation中提供了错误的角色ARN,大多数人都会遇到此错误。
首先使用“DependsOn”确保角色已完成并使用内在函数“”“{”Fn :: GetAtt“:[”your-role-logical-name“,”Arn“]}”“”
我使用terraform遇到了这个错误,需要添加一个假定角色策略并将其应用于lambda假定的角色。
data "aws_iam_policy_document" "lambda_assume_role_policy" {
statement {
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = [
"lambda.amazonaws.com"
]
}
}
resource "aws_iam_role" "lambda_rotation_role" {
name = "lambda-rotation-role"
assume_role_policy = "${data.aws_iam_policy_document.lambda_assume_role_policy.json}"
}