Lambda 托管实例的 Lambda 操作员角色
当您使用 Lambda 托管实例时,Lambda 需要获得管理您账户内的计算容量的权限。操作员角色通过 IAM 策略提供这些权限,使得 Lambda 能够在容量提供程序中管理 EC2 实例。
Lambda 在执行这些管理操作时代入操作员角色,这与您的函数运行时 Lambda 代入执行角色的方式类似。
创建操作员角色
您可以在 IAM 控制台中或使用 Amazon CLI 创建操作员角色。该角色必须包括:
-
权限策略:授予管理容量提供程序和相关资源的权限
-
信任策略:允许 Lambda 服务(
lambda.amazonaws.com)代入角色
权限策略
操作员角色需要管理容量提供程序和底层计算资源的权限。该角色至少需要 AWSLambdaManagedEC2ResourceOperator
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances", "ec2:CreateTags", "ec2:AttachNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:volume/*" ], "Condition": { "StringEquals": { "ec2:ManagedResourceOperator": "scaler.lambda.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeAvailabilityZones", "ec2:DescribeCapacityReservations", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeInstanceTypeOfferings", "ec2:DescribeInstanceTypes", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:RunInstances", "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:*:image/*" ], "Condition": { "StringEquals": { "ec2:Owner": "amazon" } } } ] }
信任策略
信任策略允许 Lambda 代入操作员角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Lambda 托管实例的服务相关角色
为了负责任地管理 Lambda 托管实例的生命周期,Lambda 需要持续拥有访问权限,以便在您的账户中终止托管实例。Lambda 使用 Amazon Identity and Access Management(IAM)服务相关角色(SLR)来执行这些操作。
自动创建:服务相关角色在您首次创建容量提供程序时将自动创建。创建第一个容量提供程序的用户必须拥有 lambda.amazonaws.com 主体的 iam:CreateServiceLinkedRole 权限。
权限:服务相关角色授予 Lambda 对托管实例的以下权限:
-
ec2:TerminateInstances:在实例生命周期结束时将其终止 -
ec2:DescribeInstances:枚举托管实例
删除:只有在您删除了账户中的所有 Lambda 托管实例容量提供程序之后,才能删除此服务相关角色。
有关服务关联角色的更多信息,请参阅使用 Lambda 的服务相关角色。