使用 IAM 角色授予对项目 AWS 资源的访问权限 - Amazon CodeCatalyst

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

使用 IAM 角色授予对项目 AWS 资源的访问权限

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

有关您在 JSON 策略中使用的元素的更多信息,请参阅 IAM 用户指南中的 IAM JSON 策略元素参考

  • 要访问 CodeCatalyst 项目和工作流程中的资源,必须先授予代表您访问这些资源的权限。 AWS 账户 CodeCatalyst 为此,您必须在 connected 中创建一个服务角色 AWS 账户 ,该角色 CodeCatalyst可以代表空间中的用户和项目代替。您可以选择创建和使用CodeCatalystWorkflowDevelopmentRole-spaceName服务角色,也可以创建自定义服务角色并手动配置这些 IAM 策略和角色。最佳做法是,为这些角色分配所需的最少权限。

    注意

    对于自定义的服务角色,需要 CodeCatalyst 服务主体。有关 CodeCatalyst 服务主体和信任模型的更多信息,请参阅了解 CodeCatalyst 信任模型

  • 要通过互联管理对空间的支持 AWS 账户,您可以选择创建和使用允许 CodeCatalyst 用户访问支持的AWSRoleForCodeCatalystSupport服务角色。有关 CodeCatalyst 空间支持的更多信息,请参阅AWS Support适用于 Amazon CodeCatalyst

了解CodeCatalystWorkflowDevelopmentRole-spaceName服务角色

您可以为空间添加一个 IAM 角色,该角色 CodeCatalyst 可用于在互联环境中创建和访问资源 AWS 账户。这称为服务角色。创建服务角色的最简单方法是在创建空间时添加一个服务角色并为该角色选择CodeCatalystWorkflowDevelopmentRole-spaceName选项。这不仅创建了AdministratorAccess附加的服务角色,而且还创建了信任策略, CodeCatalyst 允许在空间中的项目中代表用户担任该角色。服务角色的范围仅限于空间,而不是单个项目。如需创建此角色,请参阅为您的账户和空间创建CodeCatalystWorkflowDevelopmentRole-spaceName角色。每个账户中只能为每个空间创建一个角色。

注意

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

CodeCatalystWorkflowDevelopmentRole-spaceName角色所附的政策旨在与使用该空间中的蓝图创建的项目合作。它允许这些项目中的用户使用连接中的资源开发、构建、测试和部署代码 AWS 账户。有关更多信息,请参阅为 AWS 服务创建角色

附加到CodeCatalystWorkflowDevelopmentRole-spaceName角色的策略是中的AdministratorAccess托管策略 AWS。这是一项授予对所有 AWS 操作和资源的完全访问权限的策略。要在 IAM 控制台中查看 JSON 策略文档,请参阅AdministratorAccess

以下信任策略 CodeCatalyst 允许代入该CodeCatalystWorkflowDevelopmentRole-spaceName角色。有关 CodeCatalyst 信任模型的更多信息,请参阅了解 CodeCatalyst 信任模型

"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角色

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

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

要创建并添加 CodeCatalyst CodeCatalystWorkflowDevelopmentRole-spaceName
  1. 在开始进入 CodeCatalyst 控制台之前,请先打开 AWS Management Console,然后确保您的空间使用相同 AWS 账户 的方式登录。

  2. 打开 CodeCatalyst 控制台,网址为 https://codecatalyst.aws/

  3. 导航到您的 CodeCatalyst 空间。选择 Settings (设置),然后选择 AWS 账户

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

  5. 从中选择 “管理角色” AWS Management Console。

    将 IAM 角色添加到 Amazon CodeCatalyst 空间” 页面将在中打开 AWS Management Console。这是 Amazon CodeCatalyst 空间页面。您可能需要登录才能访问该页面。

  6. 选择在 IAM 中创建 CodeCatalyst 开发管理员角色。此选项创建了一个服务角色,其中包含开发角色的权限策略和信任策略。该角色将有一个名字CodeCatalystWorkflowDevelopmentRole-spaceName。有关角色和角色策略的更多信息,请参阅了解CodeCatalystWorkflowDevelopmentRole-spaceName服务角色

    注意

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

  7. 选择创建开发角色

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

  9. 要返回您的空间,请选择 Go to Amazon CodeCatalyst

了解AWSRoleForCodeCatalystSupport服务角色

您可以为空间添加一个 IAM 角色,空间中的 CodeCatalyst 用户可以使用该角色来创建和访问支持案例。这称为支持服务角色。创建支持服务角色的最简单方法是在创建空间时添加一个服务角色,然后为该角色选择AWSRoleForCodeCatalystSupport选项。这不仅可以创建策略和角色,还可以创建信任策略,该策略 CodeCatalyst 允许在空间中的项目中代表用户担任该角色。服务角色的范围仅限于空间,而不是单个项目。如需创建此角色,请参阅为您的账户和空间创建AWSRoleForCodeCatalystSupport角色

附加到该AWSRoleForCodeCatalystSupport角色的策略是提供对支持权限的访问权限的托管策略。有关更多信息,请参阅 AWS 托管式策略:AmazonCodeCatalystSupportAccess

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

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

为您的账户和空间创建AWSRoleForCodeCatalystSupport角色

按照以下步骤创建将在您所在空间中用于支持案例的AWSRoleForCodeCatalystSupport角色。必须将该角色添加到该空间的指定账单账户中。

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

要创建并添加 CodeCatalyst AWSRoleForCodeCatalystSupport
  1. 在开始进入 CodeCatalyst 控制台之前,请先打开 AWS Management Console,然后确保您的空间使用相同 AWS 账户 的方式登录。

  2. 导航到您的 CodeCatalyst 空间。选择 Settings (设置),然后选择 AWS 账户

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

  4. 从中选择 “管理角色” AWS Management Console。

    将 IAM 角色添加到 Amazon CodeCatalyst 空间” 页面将在中打开 AWS Management Console。这是 Amazon CodeCatalyst Spaces 页面。您可能需要登录才能访问该页面。

  5. CodeCatalyst 空间详情下,选择添加 Su CodeCatalyst pport 角色。此选项创建的服务角色包含预览版开发角色的权限策略和信任策略。该角色的AWSRoleForCodeCatalystSupport名称将附加唯一标识符。有关角色和角色策略的更多信息,请参阅了解AWSRoleForCodeCatalystSupport服务角色

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

  7. 在 “可用的 IAM 角色CodeCatalystWorkflowDevelopmentRole-spaceName 下 CodeCatalyst,查看添加到您的账户的 IAM 角色列表中的角色。

  8. 要返回您的空间,请选择 Go to Amazon CodeCatalyst

在中为工作流程操作配置 IAM 角色 CodeCatalyst

本部分详细介绍了您可以创建的用于 CodeCatalyst账户的 IAM 角色和策略。有关创建示例角色的说明,请参阅手动为工作流程操作创建角色。创建 IAM 角色后,复制角色 ARN,将 IAM 角色添加到您的账户连接中,并将其与您的项目环境关联。要了解更多信息,请参阅向账户连接添加 IAM 角色

CodeCatalyst 为 Amazon S3 访问权限构建角色

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

此角色授予执行以下操作的权限:

  • 写入亚马逊 S3 存储桶。

  • 使用 Support 来支持资源构建 AWS CloudFormation。这需要亚马逊 S3 访问权限。

此角色使用以下策略:

{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:PutObject", "iam:PassRole" ], "Resource": "resource_ARN", "Effect": "Allow" }] }
注意

首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

"Resource": "*"

CodeCatalyst 为其构建角色 AWS CloudFormation

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

此角色授予执行以下操作的权限:

  • 使用 Support 来支持资源构建 AWS CloudFormation。这与访问 Amazon S3 的 CodeCatalyst构建角色和的 CodeCatalyst 部署角色一起是必需的 AWS CloudFormation。

应将以下 AWS 托管策略附加到此角色:

  • AWSCloudFormationFullAccess

  • IAM FullAccess

  • 亚马逊 3 FullAccess

  • 亚马逊 API GatewayAdministrator

  • AWSLambdaFullAccess

CodeCatalyst 为 CDK 构建角色

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

此角色授予执行以下操作的权限:

  • 写入亚马逊 S3 存储桶。

  • Support 构建 CDK 构造和 AWS CloudFormation 资源堆栈。这需要访问 Amazon S3 以进行项目存储,访问 Amazon ECR 以获得图像存储库支持,并访问 SSM 以进行系统管理和监控虚拟实例。

此角色使用以下策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "ecr:*", "ssm:*", "s3:*", "iam:PassRole", "iam:GetRole", "iam:CreateRole", "iam:AttachRolePolicy", "iam:PutRolePolicy" ], "Resource": "*" } ] }
注意

首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

"Resource": "*"

CodeCatalyst 为部署角色 AWS CloudFormation

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

此角色授予执行以下操作的权限:

  • CodeCatalyst 允许调用 λ 函数以通过执行蓝/绿部署。 AWS CloudFormation

  • CodeCatalyst 允许在中创建和更新堆栈和变更集。 AWS 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 部署角色

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

此角色授予执行以下操作的权限:

  • 创建亚马逊 EC2 部署。

  • 读取实例上的标签或通过 Auto Scaling 组名识别 Amazon EC2 实例。

  • 读取、创建、更新和删除 Amazon EC2 Auto Scaling 组、生命周期挂钩和扩展策略。

  • 将信息发布到 Amazon SNS 主题。

  • 检索有关 CloudWatch 警报的信息。

  • 阅读并更新 Elastic Load Balancing。

此角色使用以下策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CompleteLifecycleAction", "autoscaling:DeleteLifecycleHook", "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeLifecycleHooks", "autoscaling:PutLifecycleHook", "autoscaling:RecordLifecycleActionHeartbeat", "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "autoscaling:EnableMetricsCollection", "autoscaling:DescribePolicies", "autoscaling:DescribeScheduledActions", "autoscaling:DescribeNotificationConfigurations", "autoscaling:SuspendProcesses", "autoscaling:ResumeProcesses", "autoscaling:AttachLoadBalancers", "autoscaling:AttachLoadBalancerTargetGroups", "autoscaling:PutScalingPolicy", "autoscaling:PutScheduledUpdateGroupAction", "autoscaling:PutNotificationConfiguration", "autoscaling:PutWarmPool", "autoscaling:DescribeScalingActivities", "autoscaling:DeleteAutoScalingGroup", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:TerminateInstances", "tag:GetResources", "sns:Publish", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeInstanceHealth", "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:RegisterTargets", "elasticloadbalancing:DeregisterTargets" ], "Resource": "resource_ARN" } ] }
注意

首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

"Resource": "*"

CodeCatalyst 为 Amazon ECS 部署角色

对于 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 主题。

此角色使用以下策略:

{ "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 部署角色

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

此角色授予执行以下操作的权限:

  • 读取、更新和调用 Lambda 函数和别名。

  • 访问 Amazon S3 存储桶中的修订文件。

  • 检索有关 CloudWatch 事件警报的信息。

  • 将信息发布到 Amazon SNS 主题。

此角色使用以下策略:

*{* "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:DescribeAlarms", "lambda:UpdateAlias", "lambda:GetAlias", "lambda:GetProvisionedConcurrencyConfig", "sns:Publish" ], "Resource": "resource_ARN", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::/CodeDeploy/", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } }, "Effect": "Allow" }, { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:::function:CodeDeployHook_*", "Effect": "Allow" } ] }
注意

首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

"Resource": "*"

CodeCatalyst 为 Lambda 部署角色

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

此角色授予执行以下操作的权限:

  • 读取、更新和调用 Lambda 函数和别名。

  • 访问 Amazon S3 存储桶中的修订文件。

  • 检索有关 CloudWatch 警报的信息。

  • 将信息发布到 Amazon SNS 主题。

此角色使用以下策略:

*{* "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:DescribeAlarms", "lambda:UpdateAlias", "lambda:GetAlias", "lambda:GetProvisionedConcurrencyConfig", "sns:Publish" ], "Resource": "resource_ARN", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::/CodeDeploy/", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } }, "Effect": "Allow" }, { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:::function:CodeDeployHook_*", "Effect": "Allow" } ] }
注意

首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

"Resource": "*"

CodeCatalyst 为部署角色 AWS SAM

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

此角色授予执行以下操作的权限:

  • CodeCatalyst 允许调用 Lambda 函数来部署无服务器和 CLI AWS SAM 应用程序。

  • CodeCatalyst 允许在中创建和更新堆栈和变更集。 AWS CloudFormation

此角色使用以下策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "iam:PassRole", "iam:DeleteRole", "iam:GetRole", "iam:TagRole", "iam:CreateRole", "iam:AttachRolePolicy", "iam:DetachRolePolicy", "cloudformation:*", "lambda:*", "apigateway:*" ], "Resource": "*" } ] }
注意

首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

"Resource": "*"

CodeCatalyst Amazon EC2 的只读角色

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

此角色授予执行以下操作的权限:

  • 获取 Amazon EC2 实例的状态。

  • 获取 Amazon EC2 实例的 CloudWatch 指标。

此角色使用以下策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe", "Resource": "resource_ARN" }, { "Effect": "Allow", "Action": "elasticloadbalancing:Describe", "Resource": "resource_ARN" }, { "Effect": "Allow", "Action": [ "cloudwatch:ListMetrics", "cloudwatch:GetMetricStatistics", "cloudwatch:Describe" ], "Resource": "resource_ARN" }, { "Effect": "Allow", "Action": "autoscaling:Describe", "Resource": "resource_ARN" } ] }
注意

首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

"Resource": "*"

CodeCatalyst Amazon ECS 的只读角色

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

此角色授予执行以下操作的权限:

  • 阅读 Amazon ECS 任务集。

  • 检索有关 CloudWatch 警报的信息。

此角色使用以下策略:

*{* "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:DescribeServices", "cloudwatch:DescribeAlarms" ], "Resource": "resource_ARN", "Effect": "Allow" }, { "Action": [ "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeRules" ], "Resource": "resource_ARN", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } }, "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam:::role/ecsTaskExecutionRole", "arn:aws:iam:::role/ECSTaskExecution" ], "Condition": { "StringLike": { "iam:PassedToService": [ "ecs-tasks.amazonaws.com" ] } } } ] }
注意

首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

"Resource": "*"

CodeCatalyst Lambda 的只读角色

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

此角色授予以下权限:

  • 阅读 Lambda 函数和别名。

  • 访问 Amazon S3 存储桶中的修订文件。

  • 检索有关 CloudWatch 警报的信息。

该角色使用以下 策略。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:DescribeAlarms", "lambda:GetAlias", "lambda:GetProvisionedConcurrencyConfig" ], "Resource": "resource_ARN", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::/CodeDeploy/", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } }, "Effect": "Allow" } ] }
注意

首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

"Resource": "*"

手动为工作流程操作创建角色

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

按照以下步骤在 IAM 中创建这些角色。

创建部署角色
  1. 为该角色创建策略,如下所示:

    1. 登录到 AWS。

    2. 打开 IAM 控制台:https://console.aws.amazon.com/iam/

    3. 在导航窗格中,选择策略

    4. 选择创建策略

    5. 选择 JSON 选项卡。

    6. 删除现有代码。

    7. 粘贴以下代码:

      { "Version": "2012-10-17", "Statement": [{ "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:Describe*", "cloudformation:UpdateStack", "cloudformation:CreateChangeSet", "cloudformation:DeleteChangeSet", "cloudformation:ExecuteChangeSet", "cloudformation:SetStackPolicy", "cloudformation:ValidateTemplate", "cloudformation:List*", "iam:PassRole" ], "Resource": "*", "Effect": "Allow" }] }
      注意

      首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

      "Resource": "*"
    8. 选择下一步:标签

    9. 选择下一步:审核

    10. 名称中,输入:

      codecatalyst-deploy-policy
    11. 选择 创建策略

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

  2. 按如下方式创建部署角色:

    1. 在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)

    2. 选择 “自定义信任策略”。

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

    4. 添加以下自定义信任策略:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. 选择下一步

    6. 权限策略中,搜索codecatalyst-deploy-policy并选中其复选框。

    7. 选择下一步

    8. 在 “角色名称” 中,输入:

      codecatalyst-deploy-role
    9. 角色描述中,输入:

      CodeCatalyst deploy role
    10. 选择 创建角色

    现在,您已经创建了一个带有信任策略和权限策略的部署角色。

  3. 按如下方式获取部署角色 ARN:

    1. 在导航窗格中,选择角色

    2. 在搜索框中,输入您刚刚创建的角色的名称(codecatalyst-deploy-role)。

    3. 从列表中选择角色。

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

    4. 在顶部,复制 ARN 值。

    现在,您已经创建了具有相应权限的部署角色并获得了其 ARN。

创建生成角色
  1. 为该角色创建策略,如下所示:

    1. 登录到 AWS。

    2. 打开 IAM 控制台:https://console.aws.amazon.com/iam/

    3. 在导航窗格中,选择策略

    4. 选择创建策略

    5. 选择 JSON 选项卡。

    6. 删除现有代码。

    7. 粘贴以下代码:

      { "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:PutObject", "iam:PassRole" ], "Resource": "*", "Effect": "Allow" }] }
      注意

      首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

      "Resource": "*"
    8. 选择下一步:标签

    9. 选择下一步:审核

    10. 名称中,输入:

      codecatalyst-build-policy
    11. 选择 创建策略

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

  2. 创建生成角色,如下所示:

    1. 在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)

    2. 选择 “自定义信任策略”。

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

    4. 添加以下自定义信任策略:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. 选择下一步

    6. 权限策略中,搜索codecatalyst-build-policy并选中其复选框。

    7. 选择下一步

    8. 在 “角色名称” 中,输入:

      codecatalyst-build-role
    9. 角色描述中,输入:

      CodeCatalyst build role
    10. 选择 创建角色

    现在,您已经创建了一个包含信任策略和权限策略的构建角色。

  3. 按如下方式获取构建角色 ARN:

    1. 在导航窗格中,选择角色

    2. 在搜索框中,输入您刚刚创建的角色的名称(codecatalyst-build-role)。

    3. 从列表中选择角色。

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

    4. 在顶部,复制 ARN 值。

    现在,您已经创建了具有相应权限的构建角色并获得了其 ARN。

创建堆栈角色
注意

尽管出于安全考虑,建议您创建堆栈角色,但您不必创建堆栈角色。如果您未创建堆栈角色,则需要将本过程中进一步描述的权限策略添加到部署角色中。

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

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

  3. 在导航窗格中,选择角色。然后选择创建角色

  4. 在顶部,选择AWS 服务

  5. 从服务列表中选择CloudFormation

  6. 选择下一步:权限

  7. 在搜索框中,添加访问堆栈中资源所需的所有策略。例如,如果您的堆栈包含一个 AWS Lambda 函数,则需要添加授予对 Lambda 的访问权限的策略。

    提示

    如果您不确定要添加哪些策略,可以暂时将其省略。在测试操作时,如果您没有正确的权限,则 AWS CloudFormation 会生成错误,显示您需要添加哪些权限。

  8. 选择下一步:标签

  9. 选择下一步:审核

  10. 在 “角色名称” 中,输入:

    codecatalyst-stack-role
  11. 选择 创建角色

  12. 要获取堆栈角色的 ARN,请执行以下操作:

    1. 在导航窗格中,选择角色

    2. 在搜索框中,输入您刚刚创建的角色的名称(codecatalyst-stack-role)。

    3. 从列表中选择角色。

    4. 摘要页面上,复制角色 ARN 值。

AWS CloudFormation 用于在 IAM 中创建策略和角色

您可以选择创建和使用 AWS CloudFormation 模板来创建访问 CodeCatalyst 项目和工作流程中资源所需的策略和角色。 AWS 账户 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 应用程序蓝图创建角色

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

按照以下步骤在 IAM 中创建角色。

创建生成角色
  1. 为该角色创建策略,如下所示:

    1. 登录到 AWS。

    2. 打开 IAM 控制台:https://console.aws.amazon.com/iam/

    3. 在导航窗格中,选择策略

    4. 选择创建策略

    5. 选择 JSON 选项卡。

    6. 删除现有代码。

    7. 粘贴以下代码:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "ecr:*", "ssm:*", "s3:*", "iam:PassRole", "iam:GetRole", "iam:CreateRole", "iam:AttachRolePolicy", "iam:PutRolePolicy" ], "Resource": "*" } ] }
      注意

      首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

      "Resource": "*"
    8. 选择下一步:标签

    9. 选择下一步:审核

    10. 名称中,输入:

      codecatalyst-webapp-build-policy
    11. 选择 创建策略

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

  2. 创建生成角色,如下所示:

    1. 在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)

    2. 选择 “自定义信任策略”。

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

    4. 添加以下自定义信任策略:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. 选择下一步

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

    7. 选择下一步

    8. 在 “角色名称” 中,输入:

      codecatalyst-webapp-build-role
    9. 角色描述中,输入:

      CodeCatalyst Web app build role
    10. 选择 创建角色

    现在,您已经创建了一个包含信任策略和权限策略的构建角色。

  3. 将权限策略附加到构建角色,如下所示:

    1. 在导航窗格中,选择 “角色”,然后搜索codecatalyst-webapp-build-role

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

    3. 在 “权限” 选项卡中,选择 “添加权限”,然后选择 “附加策略”。

    4. 搜索codecatalyst-webapp-build-policy,选中其复选框,然后选择附加策略

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

  4. 按如下方式获取构建角色 ARN:

    1. 在导航窗格中,选择角色

    2. 在搜索框中,输入您刚刚创建的角色的名称(codecatalyst-webapp-build-role)。

    3. 从列表中选择角色。

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

    4. 在顶部,复制 ARN 值。

    现在,您已经创建了具有相应权限的构建角色并获得了其 ARN。

手动为 SAM 蓝图创建角色

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

按照以下步骤在 IAM 中创建角色。

为创建生成角色 CloudFormation
  1. 为该角色创建策略,如下所示:

    1. 登录到 AWS。

    2. 打开 IAM 控制台:https://console.aws.amazon.com/iam/

    3. 在导航窗格中,选择策略

    4. 选择创建策略

    5. 选择 JSON 选项卡。

    6. 删除现有代码。

    7. 粘贴以下代码:

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

      首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

      "Resource": "*"
    8. 选择下一步:标签

    9. 选择下一步:审核

    10. 名称中,输入:

      codecatalyst-SAM-build-policy
    11. 选择 创建策略

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

  2. 创建生成角色,如下所示:

    1. 在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)

    2. 选择 “自定义信任策略”。

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

    4. 添加以下自定义信任策略:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. 选择下一步

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

    7. 选择下一步

    8. 在 “角色名称” 中,输入:

      codecatalyst-SAM-build-role
    9. 角色描述中,输入:

      CodeCatalyst SAM build role
    10. 选择 创建角色

    现在,您已经创建了一个包含信任策略和权限策略的构建角色。

  3. 将权限策略附加到构建角色,如下所示:

    1. 在导航窗格中,选择 “角色”,然后搜索codecatalyst-SAM-build-role

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

    3. 在 “权限” 选项卡中,选择 “添加权限”,然后选择 “附加策略”。

    4. 搜索codecatalyst-SAM-build-policy,选中其复选框,然后选择附加策略

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

  4. 按如下方式获取构建角色 ARN:

    1. 在导航窗格中,选择角色

    2. 在搜索框中,输入您刚刚创建的角色的名称(codecatalyst-SAM-build-role)。

    3. 从列表中选择角色。

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

    4. 在顶部,复制 ARN 值。

    现在,您已经创建了具有相应权限的构建角色并获得了其 ARN。

为 SAM 创建部署角色
  1. 为该角色创建策略,如下所示:

    1. 登录到 AWS。

    2. 打开 IAM 控制台:https://console.aws.amazon.com/iam/

    3. 在导航窗格中,选择策略

    4. 选择创建策略

    5. 选择 JSON 选项卡。

    6. 删除现有代码。

    7. 粘贴以下代码:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "iam:PassRole", "iam:DeleteRole", "iam:GetRole", "iam:TagRole", "iam:CreateRole", "iam:AttachRolePolicy", "iam:DetachRolePolicy", "cloudformation:*", "lambda:*", "apigateway:*" ], "Resource": "*" } ] }
      注意

      首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

      "Resource": "*"
    8. 选择下一步:标签

    9. 选择下一步:审核

    10. 名称中,输入:

      codecatalyst-SAM-deploy-policy
    11. 选择 创建策略

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

  2. 创建生成角色,如下所示:

    1. 在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)

    2. 选择 “自定义信任策略”。

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

    4. 添加以下自定义信任策略:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. 选择下一步

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

    7. 选择下一步

    8. 在 “角色名称” 中,输入:

      codecatalyst-SAM-deploy-role
    9. 角色描述中,输入:

      CodeCatalyst SAM deploy role
    10. 选择 创建角色

    现在,您已经创建了一个包含信任策略和权限策略的构建角色。

  3. 将权限策略附加到构建角色,如下所示:

    1. 在导航窗格中,选择 “角色”,然后搜索codecatalyst-SAM-deploy-role

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

    3. 在 “权限” 选项卡中,选择 “添加权限”,然后选择 “附加策略”。

    4. 搜索codecatalyst-SAM-deploy-policy,选中其复选框,然后选择附加策略

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

  4. 按如下方式获取构建角色 ARN:

    1. 在导航窗格中,选择角色

    2. 在搜索框中,输入您刚刚创建的角色的名称(codecatalyst-SAM-deploy-role)。

    3. 从列表中选择角色。

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

    4. 在顶部,复制 ARN 值。

    现在,您已经创建了具有相应权限的构建角色并获得了其 ARN。