(特定资源)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/AWSEC2/latest/UserGuide/iam-policy-structure.html#ec2-supported-iam-actions-resources

https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html