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

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

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

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

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

    注意

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

  • 要通过已连接的 AWS 账户管理对空间的支持,您可以选择创建和使用可让 CodeCatalyst 用户访问支持的 AWSRoleForCodeCatalystSupport 服务角色。有关对 CodeCatalyst 空间的支持的更多信息,请参阅支持 for Amazon CodeCatalyst

了解 CodeCatalystWorkflowDevelopmentRole-spaceName 服务角色

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

注意

建议仅将此角色用于开发账户,并使用 AdministratorAccess AWS 托管式策略,从而向此角色授予完全访问权限以便在该 AWS 账户中创建新的策略和资源。

附加到 CodeCatalystWorkflowDevelopmentRole-spaceName 角色的策略旨在用于使用空间中的蓝图创建的项目。该策略使这些项目中的用户能够使用已连接的 AWS 账户中的资源来开发、构建、测试和部署代码。有关更多信息,请参阅创建用于 AWS 服务的角色

附加到 CodeCatalystWorkflowDevelopmentRole-spaceName 角色的策略是 AWS 中的 AdministratorAccess 托管式策略。这是一项授予对所有 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 账户的管理权限或能够与您的管理员合作。有关如何在 CodeCatalyst 中使用 AWS 账户和 IAM 角色的更多信息,请参阅允许使用已连接的 AWS 账户访问 AWS 资源

创建和添加 CodeCatalyst CodeCatalystWorkflowDevelopmentRole-spaceName
  1. 在 CodeCatalyst 控制台中开始操作之前,请先打开 AWS Management Console,然后确保您使用空间的同一 AWS 账户进行登录。

  2. 通过访问 https://codecatalyst.aws/ 打开 CodeCatalyst 控制台。

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

  4. 选择要在其中创建角色的 AWS 账户的链接。此时将显示 AWS 账户详细信息页面。

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

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

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

    注意

    建议仅将此角色用于开发人员账户,并使用 AdministratorAccess AWS 托管式策略,从而向此角色授予完全访问权限以便在该 AWS 账户中创建新的策略和资源。

  7. 选择创建开发角色

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

  9. 要返回您的空间,请选择 转到 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 账户的管理权限或能够与您的管理员合作。有关如何在 CodeCatalyst 中使用 AWS 账户和 IAM 角色的更多信息,请参阅允许使用已连接的 AWS 账户访问 AWS 资源

创建和添加 CodeCatalyst AWSRoleForCodeCatalystSupport
  1. 在 CodeCatalyst 控制台中开始操作之前,请先打开 AWS Management Console,然后确保您使用空间的同一 AWS 账户进行登录。

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

  3. 选择要在其中创建角色的 AWS 账户的链接。此时将显示 AWS 账户详细信息页面。

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

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

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

  6. 添加用于 CodeCatalyst 支持的角色页面上,保留默认选定项,然后选择创建角色

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

  8. 要返回您的空间,请选择 转到 Amazon CodeCatalyst

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

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

适用于 Amazon S3 访问的 CodeCatalyst 构建角色

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

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

  • 写入 Amazon S3 存储桶。

  • 使用 AWS CloudFormation 支持构建资源。这需要 Amazon S3 访问权限。

该角色使用以下策略:

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

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

"Resource": "*"

适用于 AWS CloudFormation 的 CodeCatalyst 构建角色

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

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

  • 使用 AWS CloudFormation 支持构建资源。这要求与适用于 Amazon S3 访问的 CodeCatalyst 构建角色和适用于 AWS CloudFormation 的 CodeCatalyst 部署角色结合使用。

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

  • AWSCloudFormationFullAccess

  • IAMFullAccess

  • AmazonS3FullAccess

  • AmazonAPIGatewayAdministrator

  • AWSLambdaFullAccess

适用于 CDK 的 CodeCatalyst 构建角色

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

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

  • 写入 Amazon S3 存储桶。

  • 支持构建 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": "*"

适用于 AWS CloudFormation 的 CodeCatalyst 部署角色

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

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

  • 使 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": "*"

适用于 Amazon EC2 的 CodeCatalyst 部署角色

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。

该角色使用以下策略:

{ "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": "*"

适用于 Amazon ECS 的 CodeCatalyst 部署角色

对于 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": "*"

适用于 Lambda 的 CodeCatalyst 部署角色

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

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

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

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

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

  • 将信息发布到 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": "*"

适用于 Lambda 的 CodeCatalyst 部署角色

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

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

  • 读取、更新和调用 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": "*"

适用于 AWS SAM 的 CodeCatalyst 部署角色

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

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

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

  • 使 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": "*"

适用于 Amazon EC2 的 CodeCatalyst 只读角色

对于 CodeCatalyst 工作流操作,您可以创建具有所需权限的 IAM 角色。此角色使用具有范围限定的权限的策略,CodeCatalyst 需要这些权限才能在 AWS 账户中的 Amazon EC2 资源上运行任务。CodeCatalystWorkflowDevelopmentRole-spaceName 服务角色不包括 Amazon EC2 的权限或所描述的 Amazon 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": "*"

适用于 Amazon ECS 的 CodeCatalyst 只读角色

对于 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": "*"

适用于 Lambda 的 CodeCatalyst 只读角色

对于 CodeCatalyst 工作流操作,您可以创建具有所需权限的 IAM 角色。此角色使用具有范围限定的权限的策略,CodeCatalyst 需要这些权限才能在 AWS 账户中的 Lambda 资源上运行任务。

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

  • 读取 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. 在导航窗格中,选择角色,然后选择创建角色

    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. 在导航窗格中,选择角色,然后选择创建角色

    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. 打开 IAM 控制台:https://console.aws.amazon.com/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 模板来创建策略和角色,需要这些策略和角色才能在 AWS 账户中访问 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 应用程序蓝图创建角色

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. 在导航窗格中,选择角色,然后选择创建角色

    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 蓝图创建角色

CodeCatalyst SAM 蓝图使用您创建的 IAM 角色,它们分别称作适用于 CloudFormation 的构建角色适用于 SAM 的部署角色

按以下步骤操作,在 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. 在导航窗格中,选择角色,然后选择创建角色

    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. 在导航窗格中,选择角色,然后选择创建角色

    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。