(具体资源)AWS Lambda:提供的执行角色无权调用EC2上的DescribeNetworkInterfaces

Posted

技术标签:

【中文标题】(具体资源)AWS Lambda:提供的执行角色无权调用EC2上的DescribeNetworkInterfaces【英文标题】:(specific resource) AWS Lambda:The provided execution role does not have permissions to call DescribeNetworkInterfaces on EC2 【发布时间】:2021-07-20 04:44:50 【问题描述】:

我知道我可以使用 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"

【问题讨论】:

【参考方案1】:

首先,在定义 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

【讨论】:

出色地回答了我清楚的很多事情。谢谢

以上是关于(具体资源)AWS Lambda:提供的执行角色无权调用EC2上的DescribeNetworkInterfaces的主要内容,如果未能解决你的问题,请参考以下文章

使用具有 Web 身份的假定角色执行 AWS Lambda

来自执行环境的 AWS Lambda 凭证没有执行角色的权限

有没有办法使用 cloudformation 创建 aws lambda 执行角色?

连接AWS lambda和RDS数据库时超时

AWS Lambda 设计器未显示函数角色

AWS Lambda 无服务器资源处理程序返回消息:“解压缩后的大小必须小于 262144000 字节