

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 IAM 角色授予对项目 AWS 资源的访问权限
<a name="ipa-iam-roles"></a>

CodeCatalyst 可以通过将您的连接到 CodeCatalyst 空间 AWS 账户 来访问 AWS 资源。之后，您可以创建以下服务角色并在连接账户时将其关联。

有关在 JSON 策略中使用的元素的更多信息，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。
+ 要访问 CodeCatalyst 项目和工作流程中的资源，必须先授予代表您访问这些资源的权限。 AWS 账户 CodeCatalyst 为此，您必须在 connected 中创建一个服务角色 AWS 账户 ，该角色 CodeCatalyst可以代表空间中的用户和项目代替。您可以选择创建和使用 **CodeCatalystWorkflowDevelopmentRole-*spaceName*** 服务角色，也可以创建自定义的服务角色并手动配置这些 IAM 策略和角色。最佳实践是向这些角色分配最少的必需权限。
**注意**  
对于自定义的服务角色，需要 CodeCatalyst 服务主体。有关 CodeCatalyst 服务主体和信任模型的更多信息，请参阅[了解 CodeCatalyst 信任模型](trust-model.md)。
+ 要通过互联管理对空间的支持 AWS 账户，您可以选择创建和使用允许 CodeCatalyst 用户访问支持的**AWSRoleForCodeCatalystSupport**服务角色。有关 CodeCatalyst 空间支持的更多信息，请参阅[支持 for Amazon CodeCatalyst](support.md)。



## 了解 **CodeCatalystWorkflowDevelopmentRole-*spaceName*** 服务角色
<a name="ipa-iam-roles-service-role"></a>

您可以为空间添加一个 IAM 角色，该角色 CodeCatalyst 可用于在互联环境中创建和访问资源 AWS 账户。该角色称作[服务角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)。创建服务角色的最简单方法是，在创建空间时添加一个服务角色并为该角色选择 **CodeCatalystWorkflowDevelopmentRole-*spaceName*** 选项。这不仅创建了`AdministratorAccess`附加的服务角色，而且还创建了信任策略， CodeCatalyst 允许在空间中的项目中代表用户担任该角色。服务角色的范围限于空间而不是单个项目。如需创建此角色，请参阅[为您的账户和空间创建 **CodeCatalystWorkflowDevelopmentRole-*spaceName*** 角色](#ipa-iam-roles-service-create)。您只能为每个账户中的每个空间创建一个角色。

**注意**  
此角色仅建议与开发账户一起使用，并且使用`AdministratorAccess` AWS 托管策略，从而赋予其在其中创建新策略和资源的完全访问权限 AWS 账户。

附加到 **CodeCatalystWorkflowDevelopmentRole-*spaceName*** 角色的策略旨在用于使用空间中的蓝图创建的项目。该策略使这些项目中的用户能够使用已连接的 AWS 账户中的资源来开发、构建、测试和部署代码。有关更多信息，请参阅[为 AWS 服务创建角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

附加到**CodeCatalystWorkflowDevelopmentRole-*spaceName***角色的策略是中的`AdministratorAccess`托管策略 AWS。这是一项授予对所有 AWS 操作和资源的完全访问权限的策略。要在 IAM 控制台中查看 JSON 策略文档，请参阅[AdministratorAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AdministratorAccess)。

以下信任策略 CodeCatalyst 允许代入该**CodeCatalystWorkflowDevelopmentRole-*spaceName***角色。有关 CodeCatalyst 信任模型的更多信息，请参阅[了解 CodeCatalyst 信任模型](trust-model.md)。

```
"Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
             "Principal": { 
                "Service": [ 
                    "codecatalyst-runner.amazonaws.com",
                    "codecatalyst.amazonaws.com" 
                ] 
            }, 
            "Action": "sts:AssumeRole",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:codecatalyst:::space/spaceId/project/*"
                }
            }
        }
    ]
```

## 为您的账户和空间创建 **CodeCatalystWorkflowDevelopmentRole-*spaceName*** 角色
<a name="ipa-iam-roles-service-create"></a>

按照以下步骤操作，创建将用于空间中的工作流的 `CodeCatalystWorkflowDevelopmentRole-spaceName` 角色。对于要具有在项目中使用的 IAM 角色的每个账户，您必须向空间添加一个角色，例如开发人员角色。

在开始之前，您必须拥有自己的管理权限 AWS 账户 或能够与您的管理员合作。有关中如何使用 AWS 账户 和 IAM 角色的更多信息 CodeCatalyst，请参阅[允许在已连接的情况下访问 AWS 资源 AWS 账户](ipa-connect-account.md)。

**要创建并添加 CodeCatalyst **CodeCatalystWorkflowDevelopmentRole-*spaceName*****

1. 在开始进入 CodeCatalyst 控制台之前，请先打开 AWS 管理控制台，然后确保您的空间使用相同 AWS 账户 的方式登录。

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到您的 CodeCatalyst 空间。选择**设置**，然后选择 **AWS 账户**。

1. 选择要创建角色的 AWS 账户 位置的链接。此时将显示 **AWS 账户 详细信息**页面。

1. **从中选择 “管理角色**” AWS 管理控制台。

   “**将 IAM 角色添加到 Amazon CodeCatalyst 空间**” 页面将在中打开 AWS 管理控制台。这是 **Amazon CodeCatalyst 空间**页面。您可能需要登录才能访问该页面。

1. 选择**在 IAM 中创建 CodeCatalyst 开发管理员角色**。此选项将创建一个服务角色，其中包含开发角色的权限策略和信任策略。该角色的名称为 `CodeCatalystWorkflowDevelopmentRole-spaceName`。有关角色和角色策略的更多信息，请参阅[了解 **CodeCatalystWorkflowDevelopmentRole-*spaceName*** 服务角色](#ipa-iam-roles-service-role)。
**注意**  
此角色仅建议与开发者账户一起使用，并且使用`AdministratorAccess` AWS 托管策略，从而赋予其在此创建新策略和资源的完全访问权限 AWS 账户。

1. 选择**创建开发角色**。

1. 在连接页面的**可用的 IAM 角色**下 CodeCatalyst，查看添加到您的账户的 IAM 角色列表中的角色。`CodeCatalystWorkflowDevelopmentRole-spaceName`

1. 要返回您的空间，请选择 **Go to Amazon CodeCatalyst**。

## 了解 **AWSRoleForCodeCatalystSupport** 服务角色
<a name="ipa-iam-roles-support-role"></a>

您可以为空间添加一个 IAM 角色，空间中的 CodeCatalyst 用户可以使用该角色来创建和访问支持案例。此角色称作用于支持的[服务角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)。创建用于支持的服务角色的最简单方法是，在创建空间时添加一个服务角色并为该角色选择 `AWSRoleForCodeCatalystSupport` 选项。这不仅可以创建策略和角色，还可以创建信任策略，该策略 CodeCatalyst 允许在空间中的项目中代表用户担任该角色。服务角色的范围限于空间而不是单个项目。如需创建此角色，请参阅[为您的账户和空间创建 **AWSRoleForCodeCatalystSupport** 角色](#ipa-iam-roles-support-create)。

附加到 `AWSRoleForCodeCatalystSupport` 角色的策略是提供支持权限的托管式策略。有关更多信息，请参阅 [AWS 托管策略：AmazonCodeCatalystSupportAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonCodeCatalystSupportAccess)。

策略的信任角色 CodeCatalyst 允许代入该角色。

------
#### [ JSON ]

****  

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

------

## 为您的账户和空间创建 **AWSRoleForCodeCatalystSupport** 角色
<a name="ipa-iam-roles-support-create"></a>

按照以下步骤操作，创建将用于空间中的支持案例的 `AWSRoleForCodeCatalystSupport` 角色。必须将该角色添加到空间的指定计费账户中。

在开始之前，您必须拥有自己的管理权限 AWS 账户 或能够与您的管理员合作。有关中如何使用 AWS 账户 和 IAM 角色的更多信息 CodeCatalyst，请参阅[允许在已连接的情况下访问 AWS 资源 AWS 账户](ipa-connect-account.md)。

**要创建并添加 CodeCatalyst **AWSRoleForCodeCatalystSupport****

1. 在开始进入 CodeCatalyst 控制台之前，请先打开 AWS 管理控制台，然后确保您的空间使用相同 AWS 账户 的方式登录。

1. 导航到您的 CodeCatalyst 空间。选择**设置**，然后选择 **AWS 账户**。

1. 选择要创建角色的 AWS 账户 位置的链接。此时将显示 **AWS 账户 详细信息**页面。

1. **从中选择 “管理角色**” AWS 管理控制台。

   “**将 IAM 角色添加到 Amazon CodeCatalyst 空间**” 页面将在中打开 AWS 管理控制台。这是 **Amazon CodeCatalyst Spaces** 页面。您可能需要登录才能访问该页面。

1. 在**CodeCatalyst 空间详情**下，选择**添加 Su CodeCatalyst pport 角色**。此选项将创建一个服务角色，其中包含预览开发角色的权限策略和信任策略。该角色的名称为 **AWSRoleForCodeCatalystSupport**，并且将附加唯一标识符。有关角色和角色策略的更多信息，请参阅[了解 **AWSRoleForCodeCatalystSupport** 服务角色](#ipa-iam-roles-support-role)。

1. 在 “为 Su ** CodeCatalyst pport 添加角色**” 页面上，将默认角色保留为选中状态，然后选择**创建角色**。

1. 在 “**可用的 IAM 角色**” `CodeCatalystWorkflowDevelopmentRole-spaceName` 下 CodeCatalyst，在添加到您的账户的 IAM 角色列表中查看该角色。

1. 要返回您的空间，请选择 **Go to Amazon CodeCatalyst**。

## 在中为工作流程操作配置 IAM 角色 CodeCatalyst
<a name="ipa-iam-roles-policies"></a>

本部分详细介绍了您可以创建的用于 CodeCatalyst账户的 IAM 角色和策略。有关创建示例角色的说明，请参阅[手动为工作流操作创建角色](#ipa-iam-roles-actions)。创建 IAM 角色后，复制角色 ARN 以将 IAM 角色添加到账户连接中，并将其与项目环境关联。要了解更多信息，请参阅[将 IAM 角色添加到账户连接](ipa-connect-account-addroles.md)。

### CodeCatalyst 为 Amazon S3 访问权限构建角色
<a name="ipa-iam-rolepolicy-BuildRoleS3"></a>

对于 CodeCatalyst 工作流程构建操作，您可以使用默认**CodeCatalystWorkflowDevelopmentRole-*spaceName***服务角色，也可以创建名为 **CodeCatalystBuildRoleforS3** Access 的 IAM 角色。此角色使用具有限定权限的策略，该策略 CodeCatalyst 需要在中的 CloudFormation 资源上运行任务。 AWS 账户

此角色授予执行以下操作所需的权限：
+ 写入 Amazon S3 存储桶。
+ 使用 Support 来支持资源构建 CloudFormation。这需要 Amazon S3 访问权限。

该角色使用以下策略：

**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

```
"Resource": "*"
```

### CodeCatalyst 为其构建角色 CloudFormation
<a name="ipa-iam-rolepolicy-BuildRoleCloudFormation"></a>

对于 CodeCatalyst 工作流程构建操作，您可以使用默认**CodeCatalystWorkflowDevelopmentRole-*spaceName***服务角色，也可以创建具有必要权限的 IAM 角色。此角色使用具有限定权限的策略，该策略 CodeCatalyst 需要在中的 CloudFormation 资源上运行任务。 AWS 账户

此角色授予执行以下操作所需的权限：
+ 使用 Support 来支持资源构建 CloudFormation。这与访问 Amazon S3 的 CodeCatalyst构建角色和的 CodeCatalyst 部署角色一起是必需的 CloudFormation。

应将以下 AWS 托管策略附加到此角色：
+ **AWSCloudFormationFullAccess**
+ **IAMFull访问**
+ **亚马逊 3 FullAccess**
+ **亚马逊APIGateway管理员**
+ **AWSLambdaFullAccess**

### CodeCatalyst 为 CDK 构建角色
<a name="ipa-iam-rolepolicy-BuildRoleCDK"></a>

对于运行 CDK 构建操作 CodeCatalyst 的工作流程，例如现代三层 Web 应用程序，您可以使用默认**CodeCatalystWorkflowDevelopmentRole-*spaceName***服务角色，也可以创建具有必要权限的 IAM 角色。此角色使用具有限定权限的策略，该策略 CodeCatalyst 需要对您的 CloudFormation 资源进行引导和运行 CDK 构建命令。 AWS 账户

此角色授予执行以下操作所需的权限：
+ 写入 Amazon S3 存储桶。
+ Support 构建 CDK 构造和 CloudFormation 资源堆栈。这需要访问 Amazon S3 以存储构件，访问 Amazon ECR 以获得映像存储库支持，并访问 SSM 以进行系统治理和监控虚拟实例。

该角色使用以下策略：

**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

```
"Resource": "*"
```

### CodeCatalyst 为部署角色 CloudFormation
<a name="ipa-iam-rolepolicy-DeployCloudFormation"></a>

对于使用 CodeCatalyst 的工作流程部署操作 CloudFormation，您可以使用默认**CodeCatalystWorkflowDevelopmentRole-*spaceName***服务角色，也可以使用具有限定权限的策略，该策略 CodeCatalyst 需要对中的 CloudFormation AWS 账户资源运行任务。

此角色授予执行以下操作所需的权限：
+  CodeCatalyst 允许调用 λ 函数来执行 blue/green 部署 CloudFormation。
+  CodeCatalyst 允许在中创建和更新堆栈和变更集。 CloudFormation

该角色使用以下策略：

```
{"Action": [
        "cloudformation:CreateStack",
        "cloudformation:DeleteStack",
        "cloudformation:Describe*",
        "cloudformation:UpdateStack",
        "cloudformation:CreateChangeSet",
        "cloudformation:DeleteChangeSet",
        "cloudformation:ExecuteChangeSet",
        "cloudformation:SetStackPolicy",
        "cloudformation:ValidateTemplate",
        "cloudformation:List*",
        "iam:PassRole"
    ],
    "Resource": "resource_ARN",
    "Effect": "Allow"
}
```

**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

```
"Resource": "*"
```

### CodeCatalyst 为 Amazon EC2 部署角色
<a name="ipa-iam-rolepolicy-DeployEC2"></a>

CodeCatalyst 工作流程部署操作使用具有必要权限的 IAM 角色。此角色使用具有限定权限的策略，该策略 CodeCatalyst 需要在您 AWS 账户的 Amazon EC2 资源上运行任务。**CodeCatalystWorkflowDevelopmentRole-*spaceName*** 角色的默认策略不包括 Amazon EC2 或 Amazon EC2 Auto Scaling 的权限。

此角色授予执行以下操作所需的权限：
+ 创建 Amazon EC2 部署。
+ 读取实例上的标签，或通过自动扩缩组名称识别 Amazon EC2 实例。
+ 读取、创建、更新和删除 Amazon EC2 Auto Scaling 组、生命周期挂钩和扩展策略。
+ 将信息发布到 Amazon SNS 主题。
+ 检索有关 CloudWatch 警报的信息。
+ 读取和更新 Elastic Load Balancing。

该角色使用以下策略：

**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

```
"Resource": "*"
```

### CodeCatalyst 为 Amazon ECS 部署角色
<a name="ipa-iam-rolepolicy-DeployECS"></a>

对于 CodeCatalyst 工作流程操作，您可以创建具有必要权限的 IAM 角色。您可以使用默认**CodeCatalystWorkflowDevelopmentRole-*spaceName***服务角色，也可以创建用于 CodeCatalyst 部署操作的 IAM 角色以用于 Lambda 部署。此角色使用具有限定权限的策略，该策略 CodeCatalyst 需要在您 AWS 账户的 Amazon ECS 资源上运行任务。

此角色授予执行以下操作所需的权限：
+ 代表 CodeCatalyst 用户使用 CodeCatalyst 连接中指定的账户启动滚动部署 Amazon ECS。
+ 读取、更新和删除 Amazon ECS 任务集。
+ 更新 Elastic Load Balancing 目标组、侦听器和规则。
+ 调用 Lambda 函数。
+ 访问 Amazon S3 存储桶中的修订文件。
+ 检索有关 CloudWatch 警报的信息。
+ 将信息发布到 Amazon SNS 主题。

该角色使用以下策略：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
    "Action":[
      "ecs:DescribeServices",
      "ecs:CreateTaskSet",
      "ecs:DeleteTaskSet",
      "ecs:ListClusters",
      "ecs:RegisterTaskDefinition",
      "ecs:UpdateServicePrimaryTaskSet",
      "ecs:UpdateService",
      "elasticloadbalancing:DescribeTargetGroups",
      "elasticloadbalancing:DescribeListeners",
      "elasticloadbalancing:ModifyListener",
      "elasticloadbalancing:DescribeRules",
      "elasticloadbalancing:ModifyRule",
      "lambda:InvokeFunction",
      "lambda:ListFunctions",
      "cloudwatch:DescribeAlarms",
      "sns:Publish",
      "sns:ListTopics", 
      "s3:GetObject",
      "s3:GetObjectVersion",
      "codedeploy:CreateApplication", 
      "codedeploy:CreateDeployment", 
      "codedeploy:CreateDeploymentGroup", 
      "codedeploy:GetApplication", 
      "codedeploy:GetDeployment", 
      "codedeploy:GetDeploymentGroup", 
      "codedeploy:ListApplications", 
      "codedeploy:ListDeploymentGroups", 
      "codedeploy:ListDeployments", 
      "codedeploy:StopDeployment", 
      "codedeploy:GetDeploymentTarget", 
      "codedeploy:ListDeploymentTargets", 
      "codedeploy:GetDeploymentConfig", 
      "codedeploy:GetApplicationRevision", 
      "codedeploy:RegisterApplicationRevision", 
      "codedeploy:BatchGetApplicationRevisions", 
      "codedeploy:BatchGetDeploymentGroups", 
      "codedeploy:BatchGetDeployments", 
      "codedeploy:BatchGetApplications", 
      "codedeploy:ListApplicationRevisions", 
      "codedeploy:ListDeploymentConfigs", 
      "codedeploy:ContinueDeployment"           
   ],
   "Resource":"*",
   "Effect":"Allow"
},{"Action":[
      "iam:PassRole"
   ],
   "Effect":"Allow",
   "Resource":"*",
   "Condition":{"StringLike":{"iam:PassedToService":[
            "ecs-tasks.amazonaws.com",
            "codedeploy.amazonaws.com"
         ]
      }
   }
}]
}
```

------

**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

```
"Resource": "*"
```

### CodeCatalyst 为 Lambda 部署角色
<a name="ipa-iam-rolepolicy-DeployLambda"></a>

 对于 CodeCatalyst 工作流程操作，您可以创建具有必要权限的 IAM 角色。您可以使用默认**CodeCatalystWorkflowDevelopmentRole-*spaceName***服务角色，也可以创建用于 CodeCatalyst部署操作的 IAM 角色以用于 Lambda 部署。此角色使用具有限定权限的策略，该策略 CodeCatalyst 需要在您的 Lambda 资源上运行任务。 AWS 账户

此角色授予执行以下操作所需的权限：
+ 读取、更新和调用 Lambda 函数和别名。
+ 访问 Amazon S3 存储桶中的修订文件。
+ 检索有关 CloudWatch 事件警报的信息。
+ 将信息发布到 Amazon SNS 主题。

该角色使用以下策略：

**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

```
"Resource": "*"
```

### CodeCatalyst 为 Lambda 部署角色
<a name="ipa-iam-rolepolicy-DeployLambda"></a>

对于 CodeCatalyst 工作流程操作，您可以使用默认**CodeCatalystWorkflowDevelopmentRole-*spaceName***服务角色，也可以创建具有必要权限的 IAM 角色。此角色使用具有限定权限的策略，该策略 CodeCatalyst 需要在您的 Lambda 资源上运行任务。 AWS 账户

此角色授予执行以下操作所需的权限：
+ 读取、更新和调用 Lambda 函数和别名。
+ 访问 Amazon S3 存储桶中的修订文件。
+ 检索有关 CloudWatch 警报的信息。
+ 将信息发布到 Amazon SNS 主题。

该角色使用以下策略：

**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

```
"Resource": "*"
```

### CodeCatalyst 为部署角色 AWS SAM
<a name="ipa-iam-rolepolicy-DeploySAM"></a>

对于 CodeCatalyst 工作流程操作，您可以使用默认**CodeCatalystWorkflowDevelopmentRole-*spaceName***服务角色，也可以创建具有必要权限的 IAM 角色。此角色使用具有限定权限的策略，该策略 CodeCatalyst 需要在您的 AWS 账户上运行任务 AWS SAM 和 CloudFormation 资源。

此角色授予执行以下操作所需的权限：
+  CodeCatalyst 允许调用 Lambda 函数来部署无服务器和 CLI AWS SAM 应用程序。
+  CodeCatalyst 允许在中创建和更新堆栈和变更集。 CloudFormation

该角色使用以下策略：

**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

```
"Resource": "*"
```

### CodeCatalyst Amazon EC2 的只读角色
<a name="ipa-iam-rolepolicy-ReadOnlyEC2"></a>

对于 CodeCatalyst 工作流程操作，您可以创建具有必要权限的 IAM 角色。此角色使用具有限定权限的策略，该策略 CodeCatalyst 需要在您 AWS 账户的 Amazon EC2 资源上运行任务。该**CodeCatalystWorkflowDevelopmentRole-*spaceName***服务角色不包括对 Amazon EC2 的权限或所描述的针对亚马逊的操作 CloudWatch。

此角色授予执行以下操作所需的权限：
+ 获取 Amazon EC2 实例的状态。
+ 获取 Amazon EC2 实例的 CloudWatch 指标。

该角色使用以下策略：

**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

```
"Resource": "*"
```

### CodeCatalyst Amazon ECS 的只读角色
<a name="ipa-iam-rolepolicy-ReadOnlyECS"></a>

对于 CodeCatalyst 工作流程操作，您可以创建具有必要权限的 IAM 角色。此角色使用具有限定权限的策略，该策略 CodeCatalyst 需要在您 AWS 账户的 Amazon ECS 资源上运行任务。

此角色授予执行以下操作所需的权限：
+ 读取 Amazon ECS 任务集。
+ 检索有关 CloudWatch 警报的信息。

该角色使用以下策略：

**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

```
"Resource": "*"
```

### CodeCatalyst Lambda 的只读角色
<a name="ipa-iam-rolepolicy-ReadOnlyLambda"></a>

对于 CodeCatalyst 工作流程操作，您可以创建具有必要权限的 IAM 角色。此角色使用具有限定权限的策略，该策略 CodeCatalyst 需要在您的 Lambda 资源上运行任务。 AWS 账户

此角色授予执行以下操作所需的权限：
+  读取 Lambda 函数和别名。
+ 访问 Amazon S3 存储桶中的修订文件。
+ 检索有关 CloudWatch 警报的信息。

该角色使用以下策略。

**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

```
"Resource": "*"
```

## 手动为工作流操作创建角色
<a name="ipa-iam-roles-actions"></a>

CodeCatalyst 工作流程操作使用您创建的 IAM 角色，这些**角色称为构建****角色、部署角色**和**堆栈角色**。

按以下步骤操作，在 IAM 中创建这些角色。

**创建部署角色**

1. 按如下步骤操作，为角色创建策略：

   1. 登录到 AWS。

   1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

   1. 在导航窗格中，选择**策略**。

   1. 选择**创建策略**。

   1. 选择 **JSON** 选项卡。

   1. 删除现有代码。

   1. 粘贴以下代码：
**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

      ```
      "Resource": "*"
      ```

   1. 选择**下一步：标签**。

   1. 选择**下一步：审核**。

   1. 在**名称**中，输入：

      ```
      codecatalyst-deploy-policy
      ```

   1. 选择**创建策略**。

      现在，您已经创建了权限策略。

1. 按如下步骤操作，创建部署角色：

   1. 在导航窗格中，选择**角色**，然后选择**创建角色**。

   1. 选择**自定义信任策略**。

   1. 删除现有的自定义信任策略。

   1. 添加以下自定义信任策略：

   1. 选择**下一步**。

   1. 在**权限策略**中，搜索 `codecatalyst-deploy-policy` 并选中其复选框。

   1. 选择**下一步**。

   1. 对于**角色名称**，输入：

      ```
      codecatalyst-deploy-role
      ```

   1. 对于**角色描述**，输入：

      ```
      CodeCatalyst deploy role
      ```

   1. 选择**创建角色**。

   现在，您已创建一个具有信任策略和权限策略的部署角色。

1. 按如下步骤操作，获取部署角色 ARN：

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

   1. 在搜索框中，输入刚创建的角色的名称（`codecatalyst-deploy-role`）。

   1. 从列表中选择该角色。

      此时将显示该角色的**摘要**页面。

   1. 在顶部，复制 **ARN** 值。

   现在，您已创建具有相应权限的部署角色并已获取其 ARN。

**创建构建角色**

1. 按如下步骤操作，为角色创建策略：

   1. 登录到 AWS。

   1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

   1. 在导航窗格中，选择**策略**。

   1. 选择**创建策略**。

   1. 选择 **JSON** 选项卡。

   1. 删除现有代码。

   1. 粘贴以下代码：
**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

      ```
      "Resource": "*"
      ```

   1. 选择**下一步：标签**。

   1. 选择**下一步：审核**。

   1. 在**名称**中，输入：

      ```
      codecatalyst-build-policy
      ```

   1. 选择**创建策略**。

      现在，您已经创建了权限策略。

1. 按如下步骤操作，创建构建角色：

   1. 在导航窗格中，选择**角色**，然后选择**创建角色**。

   1. 选择**自定义信任策略**。

   1. 删除现有的自定义信任策略。

   1. 添加以下自定义信任策略：

   1. 选择**下一步**。

   1. 在**权限策略**中，搜索 `codecatalyst-build-policy` 并选中其复选框。

   1. 选择**下一步**。

   1. 对于**角色名称**，输入：

      ```
      codecatalyst-build-role
      ```

   1. 对于**角色描述**，输入：

      ```
      CodeCatalyst build role
      ```

   1. 选择**创建角色**。

   现在，您已创建一个具有信任策略和权限策略的构建角色。

1. 按如下步骤操作，获取构建角色 ARN：

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

   1. 在搜索框中，输入刚创建的角色的名称（`codecatalyst-build-role`）。

   1. 从列表中选择该角色。

      此时将显示该角色的**摘要**页面。

   1. 在顶部，复制 **ARN** 值。

   现在，您已创建具有相应权限的构建角色并已获取其 ARN。

**创建堆栈角色**
**注意**  
您不必创建堆栈角色，但出于安全考虑，建议您这样做。如果您不创建堆栈角色，则需要将此过程中进一步描述的权限策略添加到部署角色。

1.  AWS 使用要部署堆栈的账户登录。

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**，然后选择**创建角色**。

1. 选择顶部的 **AWS 服务**。

1. 从服务列表中选择**CloudFormation**。

1. 选择**下一步: 权限**。

1. 在搜索框中，添加访问堆栈中的资源所需的所有策略。例如，如果您的堆栈包含一个 AWS Lambda 函数，则需要添加授予对 Lambda 的访问权限的策略。
**提示**  
如果您不确定要添加哪些策略，此时可以将其忽略。在测试操作时，如果您没有正确的权限，则 CloudFormation 会生成错误，显示您需要添加哪些权限。

1. 选择**下一步：标签**。

1. 选择**下一步：审核**。

1. 对于**角色名称**，输入：

   ```
   codecatalyst-stack-role
   ```

1. 选择**创建角色**。

1. 要获取堆栈角色的 ARN，请执行以下操作：

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

   1. 在搜索框中，输入刚创建的角色的名称（`codecatalyst-stack-role`）。

   1. 从列表中选择该角色。

   1. 在**摘要**页面上，复制**角色 ARN** 值。

## AWS CloudFormation 用于在 IAM 中创建策略和角色
<a name="ipa-iam-roles-cfn"></a>

您可以选择创建和使用 AWS CloudFormation 模板来创建访问 CodeCatalyst 项目和工作流程中资源所需的策略和角色。 AWS 账户 CloudFormation 是一项服务，可帮助您对 AWS 资源进行建模和设置，这样您就可以花更少的时间管理这些资源，而将更多的时间集中在运行的应用程序上 AWS。如果您打算创建多个角色 AWS 账户，则创建模板可以帮助您更快地执行此任务。

以下示例模板创建了部署操作角色和策略。

```
Parameters:
  CodeCatalystAccountId:
    Type: String
    Description: Account ID from the connections page
  ExternalId:
    Type: String
    Description: External ID from the connections page
Resources:
  CrossAccountRole:
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"		 	 	 
        Statement:
          - Effect: Allow
            Principal:
              AWS:
                - !Ref CodeCatalystAccountId
            Action:
              - 'sts:AssumeRole'
            Condition:
              StringEquals:
                sts:ExternalId: !Ref ExternalId
      Path: /
      Policies:
        - PolicyName: CodeCatalyst-CloudFormation-action-policy
          PolicyDocument:
            Version: "2012-10-17"		 	 	 
            Statement:
              - Effect: Allow
                Action:
                  - 'cloudformation:CreateStack'
                  - 'cloudformation:DeleteStack'
                  - 'cloudformation:Describe*'
                  - 'cloudformation:UpdateStack'
                  - 'cloudformation:CreateChangeSet'
                  - 'cloudformation:DeleteChangeSet'
                  - 'cloudformation:ExecuteChangeSet'
                  - 'cloudformation:SetStackPolicy'
                  - 'cloudformation:ValidateTemplate'
                  - 'cloudformation:List*'
                  - 'iam:PassRole'
                Resource: '*'
```

## 手动为 Web 应用程序蓝图创建角色
<a name="ipa-iam-roles-webapp-blueprint"></a>

 CodeCatalyst Web 应用程序蓝图使用您创建的 IAM 角色，这些**角色称为 CDK 的构建**角色、**部署角色**和**堆栈角色**。

按以下步骤操作，在 IAM 中创建角色。

**创建构建角色**

1. 按如下步骤操作，为角色创建策略：

   1. 登录到 AWS。

   1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

   1. 在导航窗格中，选择**策略**。

   1. 选择**创建策略**。

   1. 选择 **JSON** 选项卡。

   1. 删除现有代码。

   1. 粘贴以下代码：
**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

      ```
      "Resource": "*"
      ```

   1. 选择**下一步：标签**。

   1. 选择**下一步：审核**。

   1. 在**名称**中，输入：

      ```
      codecatalyst-webapp-build-policy
      ```

   1. 选择**创建策略**。

      现在，您已经创建了权限策略。

1. 按如下步骤操作，创建构建角色：

   1. 在导航窗格中，选择**角色**，然后选择**创建角色**。

   1. 选择**自定义信任策略**。

   1. 删除现有的自定义信任策略。

   1. 添加以下自定义信任策略：

   1. 选择**下一步**。

   1. 将权限策略附加到构建角色。在**添加权限**页面上的**权限策略**部分中，搜索 `codecatalyst-webapp-build-policy` 并选中其复选框。

   1. 选择**下一步**。

   1. 对于**角色名称**，输入：

      ```
      codecatalyst-webapp-build-role
      ```

   1. 对于**角色描述**，输入：

      ```
      CodeCatalyst Web app build role
      ```

   1. 选择**创建角色**。

   现在，您已创建一个具有信任策略和权限策略的构建角色。

1. 将权限策略附加到构建角色，如下所示：

   1. 在导航窗格中，选择**角色**，然后搜索 `codecatalyst-webapp-build-role`。``

   1. 选择 `codecatalyst-webapp-build-role` 以显示其详细信息。``

   1. 在**权限**选项卡中，选择**添加权限**，然后选择**附加策略**。

   1. 搜索 `codecatalyst-webapp-build-policy`，选中其复选框，然后选择**附加策略**。

      您现在已将权限策略附加到构建角色。构建角色现在具有两个策略：权限策略和信任策略。

1. 按如下步骤操作，获取构建角色 ARN：

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

   1. 在搜索框中，输入刚创建的角色的名称（`codecatalyst-webapp-build-role`）。

   1. 从列表中选择该角色。

      此时将显示该角色的**摘要**页面。

   1. 在顶部，复制 **ARN** 值。

   现在，您已创建具有相应权限的构建角色并已获取其 ARN。

## 手动为 SAM 蓝图创建角色
<a name="ipa-iam-roles-SAM-blueprint"></a>

SA CodeCatalyst M 蓝图使用您创建的 IAM 角色，分别称为**构建角色 CloudFormation**和 SA **M 的部署角色**。

按以下步骤操作，在 IAM 中创建这些角色。

**为创建生成角色 CloudFormation**

1. 按如下步骤操作，为角色创建策略：

   1. 登录到 AWS。

   1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

   1. 在导航窗格中，选择**策略**。

   1. 选择**创建策略**。

   1. 选择 **JSON** 选项卡。

   1. 删除现有代码。

   1. 粘贴以下代码：

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "s3:*",
                      "cloudformation:*"
                  ],
                  "Resource": "*"
              }
          ]
      }
      ```

------
**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

      ```
      "Resource": "*"
      ```

   1. 选择**下一步：标签**。

   1. 选择**下一步：审核**。

   1. 在**名称**中，输入：

      ```
      codecatalyst-SAM-build-policy
      ```

   1. 选择**创建策略**。

      现在，您已经创建了权限策略。

1. 按如下步骤操作，创建构建角色：

   1. 在导航窗格中，选择**角色**，然后选择**创建角色**。

   1. 选择**自定义信任策略**。

   1. 删除现有的自定义信任策略。

   1. 添加以下自定义信任策略：

   1. 选择**下一步**。

   1. 将权限策略附加到构建角色。在**添加权限**页面上的**权限策略**部分中，搜索 `codecatalyst-SAM-build-policy` 并选中其复选框。

   1. 选择**下一步**。

   1. 对于**角色名称**，输入：

      ```
      codecatalyst-SAM-build-role
      ```

   1. 对于**角色描述**，输入：

      ```
      CodeCatalyst SAM build role
      ```

   1. 选择**创建角色**。

   现在，您已创建一个具有信任策略和权限策略的构建角色。

1. 将权限策略附加到构建角色，如下所示：

   1. 在导航窗格中，选择**角色**，然后搜索 `codecatalyst-SAM-build-role`。``

   1. 选择 `codecatalyst-SAM-build-role` 以显示其详细信息。``

   1. 在**权限**选项卡中，选择**添加权限**，然后选择**附加策略**。

   1. 搜索 `codecatalyst-SAM-build-policy`，选中其复选框，然后选择**附加策略**。

      您现在已将权限策略附加到构建角色。构建角色现在具有两个策略：权限策略和信任策略。

1. 按如下步骤操作，获取构建角色 ARN：

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

   1. 在搜索框中，输入刚创建的角色的名称（`codecatalyst-SAM-build-role`）。

   1. 从列表中选择该角色。

      此时将显示该角色的**摘要**页面。

   1. 在顶部，复制 **ARN** 值。

   现在，您已创建具有相应权限的构建角色并已获取其 ARN。

**创建适用于 SAM 的部署角色**

1. 按如下步骤操作，为角色创建策略：

   1. 登录到 AWS。

   1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

   1. 在导航窗格中，选择**策略**。

   1. 选择**创建策略**。

   1. 选择 **JSON** 选项卡。

   1. 删除现有代码。

   1. 粘贴以下代码：
**注意**  
第一次使用该角色运行工作流操作时，请在资源策略语句中使用以下通配符，然后在策略可用后使用资源名称缩小策略范围。  

      ```
      "Resource": "*"
      ```

   1. 选择**下一步：标签**。

   1. 选择**下一步：审核**。

   1. 在**名称**中，输入：

      ```
      codecatalyst-SAM-deploy-policy
      ```

   1. 选择**创建策略**。

      现在，您已经创建了权限策略。

1. 按如下步骤操作，创建构建角色：

   1. 在导航窗格中，选择**角色**，然后选择**创建角色**。

   1. 选择**自定义信任策略**。

   1. 删除现有的自定义信任策略。

   1. 添加以下自定义信任策略：

   1. 选择**下一步**。

   1. 将权限策略附加到构建角色。在**添加权限**页面上的**权限策略**部分中，搜索 `codecatalyst-SAM-deploy-policy` 并选中其复选框。

   1. 选择**下一步**。

   1. 对于**角色名称**，输入：

      ```
      codecatalyst-SAM-deploy-role
      ```

   1. 对于**角色描述**，输入：

      ```
      CodeCatalyst SAM deploy role
      ```

   1. 选择**创建角色**。

   现在，您已创建一个具有信任策略和权限策略的构建角色。

1. 将权限策略附加到构建角色，如下所示：

   1. 在导航窗格中，选择**角色**，然后搜索 `codecatalyst-SAM-deploy-role`。``

   1. 选择 `codecatalyst-SAM-deploy-role` 以显示其详细信息。``

   1. 在**权限**选项卡中，选择**添加权限**，然后选择**附加策略**。

   1. 搜索 `codecatalyst-SAM-deploy-policy`，选中其复选框，然后选择**附加策略**。

      您现在已将权限策略附加到构建角色。构建角色现在具有两个策略：权限策略和信任策略。

1. 按如下步骤操作，获取构建角色 ARN：

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

   1. 在搜索框中，输入刚创建的角色的名称（`codecatalyst-SAM-deploy-role`）。

   1. 从列表中选择该角色。

      此时将显示该角色的**摘要**页面。

   1. 在顶部，复制 **ARN** 值。

   现在，您已创建具有相应权限的构建角色并已获取其 ARN。