(特定资源)AWS Lambda:The 提供的执行角色无权调用 EC2 上的 DescribeNetworkInterfaces
(specific resource) AWS Lambda:The provided execution role does not have permissions to call DescribeNetworkInterfaces on EC2
我知道我可以使用 AWS 托管角色或资源通配符修复此策略,但我的问题是:
¿如何指定通过 ec2: 执行这些操作的资源是什么?
我想设置特定的 lambda 来执行我的策略中的这些操作,就像这样。
我试过了,但在上面抛出了同样的错误,它只有在我为资源放置 * 时才有效。
{
Action = [
"ec2:AttachNetworkInterface",
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:DescribeInstances",
"ec2:DescribeNetworkInterfaces",
"ec2:DetachNetworkInterface",
"ec2:ModifyNetworkInterfaceAttribute",
"ec2:ResetNetworkInterfaceAttribute",
]
Effect = "Allow"
Resource = "arn:aws:lambda:<region>:<acc_id>:function:myfunction"
}
首先,在定义 IAM 策略时,Resource
是应用这些操作的位置,而不是谁可以执行这些操作。所以这里的 Resource
不是 lambda,而是一些 EC2 资源。执行这些操作的资源(您的 lambda)是您附加 IAM 角色的地方。
也就是说,并非所有 EC2 操作都具有资源级权限,而 DescribeNetworkInterfaces
则没有。这意味着您将无法为此操作指定特定资源,而必须使用 '*'
.
参考文献:
https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html
我知道我可以使用 AWS 托管角色或资源通配符修复此策略,但我的问题是: ¿如何指定通过 ec2: 执行这些操作的资源是什么?
我想设置特定的 lambda 来执行我的策略中的这些操作,就像这样。 我试过了,但在上面抛出了同样的错误,它只有在我为资源放置 * 时才有效。
{
Action = [
"ec2:AttachNetworkInterface",
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:DescribeInstances",
"ec2:DescribeNetworkInterfaces",
"ec2:DetachNetworkInterface",
"ec2:ModifyNetworkInterfaceAttribute",
"ec2:ResetNetworkInterfaceAttribute",
]
Effect = "Allow"
Resource = "arn:aws:lambda:<region>:<acc_id>:function:myfunction"
}
首先,在定义 IAM 策略时,Resource
是应用这些操作的位置,而不是谁可以执行这些操作。所以这里的 Resource
不是 lambda,而是一些 EC2 资源。执行这些操作的资源(您的 lambda)是您附加 IAM 角色的地方。
也就是说,并非所有 EC2 操作都具有资源级权限,而 DescribeNetworkInterfaces
则没有。这意味着您将无法为此操作指定特定资源,而必须使用 '*'
.
参考文献:
https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html