

# Lambda 托管实例的 Lambda 操作员角色
<a name="lambda-managed-instances-operator-role"></a>

当您使用 Lambda 托管实例时，Lambda 需要获得管理您账户内的计算容量的权限。操作员角色通过 IAM 策略提供这些权限，使得 Lambda 能够在容量提供程序中管理 EC2 实例。

Lambda 在执行这些管理操作时代入操作员角色，这与您的函数运行时 Lambda 代入执行角色的方式类似。

## 创建操作员角色
<a name="lambda-managed-instances-creating-operator-role"></a>

您可以在 IAM 控制台中或使用 AWS CLI 创建操作员角色。该角色必须包括：
+ **权限策略**：授予管理容量提供程序和相关资源的权限
+ **信任策略**：允许 Lambda 服务（`lambda.amazonaws.com`）代入角色

### 权限策略
<a name="lambda-managed-instances-operator-role-permissions-policy"></a>

操作员角色需要管理容量提供程序和底层计算资源的权限。该角色至少需要 [AWSLambdaManagedEC2ResourceOperator](https://us-east-1.console.aws.amazon.com/iam/home?region=us-east-1#/policies/details/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSLambdaManagedEC2ResourceOperator) 托管策略中的权限，目前为：

```
{
  "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",
        "ec2:DescribeVpcEncryptionControls"
      ],
      "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"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup"
      ],
      "Resource": "arn:aws:logs:*:*:log-group:*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:log-group:*:log-stream:*"
    }
  ]
}
```

### 信任策略
<a name="lambda-managed-instances-operator-role-trust-policy"></a>

信任策略允许 Lambda 代入操作员角色：

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

## Lambda 托管实例的服务相关角色
<a name="lambda-managed-instances-service-linked-role-for-lmi"></a>

为了负责任地管理 Lambda 托管实例的生命周期，Lambda 需要持续拥有访问权限，以便在您的账户中终止托管实例。Lambda 使用 AWS Identity and Access Management（IAM）服务相关角色（SLR）来执行这些操作。

**自动创建**：服务相关角色在您首次创建容量提供程序时将自动创建。创建第一个容量提供程序的用户必须拥有 `lambda.amazonaws.com` 主体的 `iam:CreateServiceLinkedRole` 权限。

**权限**：服务相关角色授予 Lambda 对托管实例的以下权限：
+ `ec2:TerminateInstances`：在实例生命周期结束时将其终止
+ `ec2:DescribeInstances`：枚举托管实例

**删除**：只有在您删除了账户中的所有 Lambda 托管实例容量提供程序之后，才能删除此服务相关角色。

有关服务关联角色的更多信息，请参阅[使用 Lambda 的服务相关角色](using-service-linked-roles.md)。