2016-10-01 35 views
2

我正在使用我用来运行Lambda函数的用户角色之一的访问策略。我有这样的:lambda:InvokeFunction不能与所有资源一起使用设置

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "logs:CreateLogGroup", 
       "logs:CreateLogStream", 
       "logs:PutLogEvents" 
      ], 
      "Resource": "arn:aws:logs:*:*:*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "lambda:InvokeFunction", 
      "Resource": "*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "ec2:DescribeInstances", 
      "Resource": "*" 
     } 
    ] 
} 

据我所知,我的资源设置为*是不是最好的做法,但我只是想在我缩小在它的最锁定版本,以获得它的工作。

当我测试lambda函数就这样说:

ClientError: An error occurred (AccessDeniedException) when calling the Invoke operation: User: arn:aws:sts::{NUMBERS}:assumed-role/{ROLE_NAME}/awslambda_{NUMBERS}_{NUMBERS} is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-east-1:{NUMBERS}:function:{FUNCTION_NAME} 

我明明掩盖它的一些上面的花括号和文字,但上面的ROLE_NAME匹配,我编辑的角色名政策。我不确定它为什么会失败。我尝试了这些资源:

arn:aws:lambda:*:*:*:* 
arn:aws:lambda:*:*:* 

那些不起作用。所以我尝试了很宽泛的,我试图缩小它,没有任何工作。还有什么我必须做的让这些坚持?我在一个屏幕上打开IAM策略窗口,在另一个屏幕上打开lambda表达式,所以我在更新策略之后立即测试,但我也完全注销并重新登录以查看是否存在某些内容。这并没有解决它。

任何想法?

回答

1

我做了一段时间。这是从我的笔记。账户支票当然还在那里。

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Action": ["lambda:InvokeFunction"], 
     "Effect": "Allow", 
     "Resource": "arn:aws:lambda:*:*:*" 
    } 
    ] 
} 

您也可以尝试在AWS控制台的IAM策略模拟器页。你可以挑选和选择行动和资源,看看它是否经过。乍一看,解释有时候很笨拙,但它很有帮助。

相关问题