

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# Amazon EKS Connector IAM 角色
<a name="connector-iam-role"></a>

您可以连接 Kubernetes 集群以便在 Amazon Web Services 管理控制台 中查看。要连接 Kubernetes 集群，创建 IAM 角色。

## 检查现有 EKS connector 角色
<a name="check-connector-role"></a>

您可以使用以下过程检查并查看您的账户是否已有 Amazon EKS connector 角色。

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 在左侧导航窗格中，选择 **角色**。

1. 在角色列表中搜索 `AmazonEKSConnectorAgentRole`。如果不存在包含 `AmazonEKSConnectorAgentRole` 的角色，请参阅 [创建 Amazon EKS Connector 代理角色](#create-connector-role) 来创建角色。如果包含 `AmazonEKSConnectorAgentRole` 的角色确实存在，则选择角色以查看附加的策略。

1. 选择**权限**。

1. 确保将 **AmazonEKSConnectorAgentPolicy** 托管策略附加到此角色。如果附加该策略，则将正确配置 Amazon EKS connector 角色。

1. 选择 **Trust relationships**（信任关系），然后选择 **Edit trust policy**（编辑信任策略）。

1. 验证信任关系是否包含以下策略。如果信任关系符合以下策略，请选择 **Cancel**（取消）。如果信任关系不匹配，请将策略复制到**编辑信任策略**窗口并选择**更新策略**。

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

## 创建 Amazon EKS Connector 代理角色
<a name="create-connector-role"></a>

您可以使用 Amazon Web Services 管理控制台 或 Amazon CloudFormation 创建 connector 代理角色。

 Amazon CLI  

1. 创建一个名为 `eks-connector-agent-trust-policy.json` 的文件，其中包含要用于 IAM 角色的以下 JSON。

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

1. 创建一个名为 `eks-connector-agent-policy.json` 的文件，其中包含要用于 IAM 角色的以下 JSON。

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "SsmControlChannel",
               "Effect": "Allow",
               "Action": [
                   "ssmmessages:CreateControlChannel"
               ],
               "Resource": "arn:aws:eks:*:*:cluster/*"
           },
           {
               "Sid": "ssmDataplaneOperations",
               "Effect": "Allow",
               "Action": [
                   "ssmmessages:CreateDataChannel",
                   "ssmmessages:OpenDataChannel",
                   "ssmmessages:OpenControlChannel"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. 使用您在之前列表项中创建的信任策略和策略创建 Amazon EKS Connector 代理角色。

   ```
   aws iam create-role \
        --role-name AmazonEKSConnectorAgentRole \
        --assume-role-policy-document file://eks-connector-agent-trust-policy.json
   ```

1. 将该策略附加到 Amazon EKS Connector 代理角色。

   ```
   aws iam put-role-policy \
        --role-name AmazonEKSConnectorAgentRole \
        --policy-name AmazonEKSConnectorAgentPolicy \
        --policy-document file://eks-connector-agent-policy.json
   ```

 Amazon CloudFormation  

1. 将以下 Amazon CloudFormation 模板保存到本地系统中的文本文件。
**注意**  
此模板还创建服务相关角色，否则调用 `registerCluster` API 时将创建。有关详细信息，请参阅 [使用角色将 Kubernetes 集群连接到 Amazon EKS](using-service-linked-roles-eks-connector.md)。

   ```
   ---
   AWSTemplateFormatVersion: '2010-09-09'
   Description: 'Provisions necessary resources needed to register clusters in EKS'
   Parameters: {}
   Resources:
     EKSConnectorSLR:
       Type: Amazon::IAM::ServiceLinkedRole
       Properties:
         AWSServiceName: eks-connector.amazonaws.com
   
     EKSConnectorAgentRole:
       Type: Amazon::IAM::Role
       Properties:
         AssumeRolePolicyDocument:
           Version: '2012-10-17'
           Statement:
             - Effect: Allow
               Action: [ 'sts:AssumeRole' ]
               Principal:
                 Service: 'ssm.amazonaws.com'
   
     EKSConnectorAgentPolicy:
       Type: Amazon::IAM::Policy
       Properties:
         PolicyName: EKSConnectorAgentPolicy
         Roles:
           - {Ref: 'EKSConnectorAgentRole'}
         PolicyDocument:
           Version: '2012-10-17'
           Statement:
             - Effect: 'Allow'
               Action: [ 'ssmmessages:CreateControlChannel' ]
               Resource:
               - Fn::Sub: 'arn:${Amazon::Partition}:eks:*:*:cluster/*'
             - Effect: 'Allow'
               Action: [ 'ssmmessages:CreateDataChannel', 'ssmmessages:OpenDataChannel', 'ssmmessages:OpenControlChannel' ]
               Resource: "*"
   Outputs:
     EKSConnectorAgentRoleArn:
       Description: The agent role that EKS connector uses to communicate with Amazon services.
       Value: !GetAtt EKSConnectorAgentRole.Arn
   ```

1. 打开 [Amazon CloudFormation 控制台](https://console.amazonaws.cn/cloudformation/)。

1. 选择使用新资源**创建堆栈**（标准）。

1. 对于**指定模板**，选择**上传模板文件**，然后选择**选择文件**。

1. 选择您之前创建的文件，然后选择**下一步**。

1. 对于 **Stack name (堆栈名称)**，输入角色的名称，如 `eksConnectorAgentRole`，然后选择 **Next (下一步)**。

1. 在**配置堆栈选项**页面上，请选择**下一步**。

1. 在 **Review（审核）**页面上审核您的信息，确认堆栈可创建 IAM 资源，然后选择 **Create stack（创建堆栈）**。