这个问题通常出现在 AWS Lambda 函数中,在该函数中我们通过执行角色来调用 EC2 实例上的 DescribeNetworkInterfaces 方法。
为了解决这个问题,我们需要在执行角色中为 Lambda 函数提供 DescribeNetworkInterfaces 权限。
以下是一些解决方案:
你可以在 AWS IAM 控制台上为执行角色添加 DescribeNetworkInterfaces 权限。
进入'IAM 控制台” > 'Roles” > 选择你的执行角色 > 'Attach policies”。
在搜索栏中搜索并选择'AmazonEC2ReadOnlyAccess”或者'AmazonEC2FullAccess”策略,这将为执行角色提供 DescribeNetworkInterfaces 权限。
你也可以在 AWS Lambda 控制台中更改执行角色,为执行角色添加 DescribeNetworkInterfaces 权限。
进入'Lambda 控制台” > 选择你的 Lambda 函数 > 'Configuration” > 'Permissions” > 点击执行角色名称 > 'Attach policies” > 选择'AmazonEC2ReadOnlyAccess”或者'AmazonEC2FullAccess”。
下面是一个示例 AWS Lambda 函数,它执行 DescribeNetworkInterfaces 方法:
const AWS = require('aws-sdk'); const ec2 = new AWS.EC2();
exports.handler = async (event, context) => { const params = { Filters: [ { Name: 'vpc-id', Values: ['YOUR_VPC_ID'] } ] };
try { const networkInterfaces = await ec2.describeNetworkInterfaces(params).promise(); console.log(networkInterfaces); } catch (err) { console.log(err.message); } };
请注意,在上面的示例中,你需要'YOUR_VPC_ID”替换为你自己的 VPC ID。
如果你已经为执行角色添加了 DescribeNetworkInterfaces 权限,那么上述示例代码应该能够正常工作。