首页 > 解决方案 > AWS Lambda 函数:它不显示现有角色的列表

问题描述

我创建了一个IAM基于AmazonEC2FullAccess策略的角色。此角色在 中正确创建IAM。但同样的角色似乎没有附加lambda功能。

有人可以帮忙吗。我有管理员访问权限,因此我遇到了以下错误。

(AccessDenied) when calling the PutMetricAlarm operation: User: arn:aws:sts::xxx:assumed-role/lambdaEC2fullaccess/StopEc2 is not authorized to perform: iam:CreateServiceLinkedRole on resource: arn:aws:iam::xxx:role/aws-service-role/events.amazonaws.com/AWSServiceRoleForCloudWatchEvents"

ImageWithAccessRole

RolesNotAppearingInLambda

标签: amazon-web-servicesamazon-ec2aws-lambdaamazon-iam

解决方案


从您的屏幕截图中,该AmazonEC2FullAccess 角色似乎适用于 EC2 实例,而不是 lambda。您可以通过进入 IAM 控制台、单击AmazonEC2FullAccess并检查其信任关系来验证这一点。

例如,如果信任策略是,它将如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

但是,Lambda 的 IAM 信任策略应如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

您可以编辑信任策略,并刷新您的 lambda 控制台窗口。或者您可以从一开始就为 lambda 创建新角色。


推荐阅读