使用 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-
角色。对于要具有在项目中使用的 IAM 角色的每个账户,您必须向空间添加一个角色,例如开发人员角色。spaceName
在开始之前,您必须拥有 AWS 账户的管理权限或能够与您的管理员合作。有关如何在 CodeCatalyst 中使用 AWS 账户和 IAM 角色的更多信息,请参阅允许使用已连接的 AWS 账户访问 AWS 资源。
创建和添加 CodeCatalyst CodeCatalystWorkflowDevelopmentRole-spaceName
-
在 CodeCatalyst 控制台中开始操作之前,请先打开 AWS Management Console,然后确保您使用空间的同一 AWS 账户进行登录。
通过访问 https://codecatalyst.aws/
打开 CodeCatalyst 控制台。 -
导航到您的 CodeCatalyst 空间。选择设置,然后选择 AWS 账户。
-
选择要在其中创建角色的 AWS 账户的链接。此时将显示 AWS 账户详细信息页面。
-
选择从 AWS Management Console中管理角色。
这将在 AWS Management Console中打开将 IAM 角色添加到 Amazon CodeCatalyst 空间页面。这是 Amazon CodeCatalyst 空间页面。您可能需要登录才能访问该页面。
-
选择在 IAM 中创建 CodeCatalyst 开发管理员角色。此选项将创建一个服务角色,其中包含开发角色的权限策略和信任策略。该角色的名称为
CodeCatalystWorkflowDevelopmentRole-
。有关角色和角色策略的更多信息,请参阅了解 CodeCatalystWorkflowDevelopmentRole-spaceName 服务角色。spaceName
注意
建议仅将此角色用于开发人员账户,并使用
AdministratorAccess
AWS 托管式策略,从而向此角色授予完全访问权限以便在该 AWS 账户中创建新的策略和资源。 -
选择创建开发角色。
-
在连接页面上的 CodeCatalyst 可用的 IAM 角色下,查看已添加到您账户的 IAM 角色的列表中的
CodeCatalystWorkflowDevelopmentRole-
角色。spaceName
-
要返回您的空间,请选择 转到 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
-
在 CodeCatalyst 控制台中开始操作之前,请先打开 AWS Management Console,然后确保您使用空间的同一 AWS 账户进行登录。
-
导航到您的 CodeCatalyst 空间。选择设置,然后选择 AWS 账户。
-
选择要在其中创建角色的 AWS 账户的链接。此时将显示 AWS 账户详细信息页面。
-
选择从 AWS Management Console中管理角色。
这将在 AWS Management Console中打开将 IAM 角色添加到 Amazon CodeCatalyst 空间页面。这是 Amazon CodeCatalyst 空间页面。您可能需要登录才能访问该页面。
-
在 CodeCatalyst 空间详细信息下,选择添加 CodeCatalyst 支持角色。此选项将创建一个服务角色,其中包含预览开发角色的权限策略和信任策略。该角色的名称为 AWSRoleForCodeCatalystSupport,并且将附加唯一标识符。有关角色和角色策略的更多信息,请参阅了解 AWSRoleForCodeCatalystSupport 服务角色。
-
在添加用于 CodeCatalyst 支持的角色页面上,保留默认选定项,然后选择创建角色。
-
在 CodeCatalyst 可用的 IAM 角色下,查看已添加到您账户的 IAM 角色的列表中的
CodeCatalystWorkflowDevelopmentRole-
角色。spaceName
-
要返回您的空间,请选择 转到 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 中创建这些角色。
创建部署角色
-
按如下步骤操作,为角色创建策略:
-
登录到 AWS。
打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择策略。
-
选择创建策略。
-
选择 JSON 选项卡。
-
删除现有代码。
-
粘贴以下代码:
{ "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": "*"
-
选择下一步:标签。
-
选择下一步:审核。
-
在名称中,输入:
codecatalyst-deploy-policy
-
选择创建策略。
现在,您已经创建了权限策略。
-
-
按如下步骤操作,创建部署角色:
-
在导航窗格中,选择角色,然后选择创建角色。
-
选择自定义信任策略。
-
删除现有的自定义信任策略。
-
添加以下自定义信任策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
选择下一步。
-
在权限策略中,搜索
codecatalyst-deploy-policy
并选中其复选框。 -
选择下一步。
-
对于角色名称,输入:
codecatalyst-deploy-role
-
对于角色描述,输入:
CodeCatalyst deploy role
-
选择创建角色。
现在,您已创建一个具有信任策略和权限策略的部署角色。
-
-
按如下步骤操作,获取部署角色 ARN:
-
在导航窗格中,选择角色。
-
在搜索框中,输入刚创建的角色的名称(
codecatalyst-deploy-role
)。 -
从列表中选择该角色。
此时将显示该角色的摘要页面。
-
在顶部,复制 ARN 值。
现在,您已创建具有相应权限的部署角色并已获取其 ARN。
-
创建构建角色
-
按如下步骤操作,为角色创建策略:
-
登录到 AWS。
打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择策略。
-
选择创建策略。
-
选择 JSON 选项卡。
-
删除现有代码。
-
粘贴以下代码:
{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:PutObject", "iam:PassRole" ], "Resource": "*", "Effect": "Allow" }] }
注意
第一次使用该角色运行工作流操作时,请在资源策略语句中使用以下通配符,然后在策略可用后使用资源名称缩小策略范围。
"Resource": "*"
-
选择下一步: 标签。
-
选择下一步: 审核。
-
在名称中,输入:
codecatalyst-build-policy
-
选择创建策略。
现在,您已经创建了权限策略。
-
-
按如下步骤操作,创建构建角色:
-
在导航窗格中,选择角色,然后选择创建角色。
-
选择自定义信任策略。
-
删除现有的自定义信任策略。
-
添加以下自定义信任策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
选择下一步。
-
在权限策略中,搜索
codecatalyst-build-policy
并选中其复选框。 -
选择下一步。
-
对于角色名称,输入:
codecatalyst-build-role
-
对于角色描述,输入:
CodeCatalyst build role
-
选择创建角色。
现在,您已创建一个具有信任策略和权限策略的构建角色。
-
-
按如下步骤操作,获取构建角色 ARN:
-
在导航窗格中,选择角色。
-
在搜索框中,输入刚创建的角色的名称(
codecatalyst-build-role
)。 -
从列表中选择该角色。
此时将显示该角色的摘要页面。
-
在顶部,复制 ARN 值。
现在,您已创建具有相应权限的构建角色并已获取其 ARN。
-
创建堆栈角色
注意
您不必创建堆栈角色,但出于安全考虑,建议您这样做。如果您不创建堆栈角色,则需要将此过程中进一步描述的权限策略添加到部署角色。
-
使用要用于部署堆栈的账户登录 AWS。
打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择角色,然后选择创建角色。
-
选择顶部的 AWS 服务。
-
从服务列表中,选择 CloudFormation。
-
选择下一步: 权限。
-
在搜索框中,添加访问堆栈中的资源所需的所有策略。例如,如果堆栈包含 AWS Lambda 函数,则您需要添加授予对 Lambda 的访问权限的策略。
提示
如果您不确定要添加哪些策略,此时可以将其忽略。在测试操作时,如果您不具有适当的权限,则 AWS CloudFormation 会生成错误,指明您需要添加哪些权限。
-
选择下一步: 标签。
-
选择下一步: 审核。
-
对于角色名称,输入:
codecatalyst-stack-role
-
选择创建角色。
-
要获取堆栈角色的 ARN,请执行以下操作:
-
在导航窗格中,选择角色。
-
在搜索框中,输入刚创建的角色的名称(
codecatalyst-stack-role
)。 -
从列表中选择该角色。
-
在摘要页面上,复制角色 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 中创建角色。
创建构建角色
-
按如下步骤操作,为角色创建策略:
-
登录到 AWS。
打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择策略。
-
选择创建策略。
-
选择 JSON 选项卡。
-
删除现有代码。
-
粘贴以下代码:
{ "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-webapp-build-policy
-
选择创建策略。
现在,您已经创建了权限策略。
-
-
按如下步骤操作,创建构建角色:
-
在导航窗格中,选择角色,然后选择创建角色。
-
选择自定义信任策略。
-
删除现有的自定义信任策略。
-
添加以下自定义信任策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
选择下一步。
-
将权限策略附加到构建角色。在添加权限页面上的权限策略部分中,搜索
codecatalyst-webapp-build-policy
并选中其复选框。 -
选择下一步。
-
对于角色名称,输入:
codecatalyst-webapp-build-role
-
对于角色描述,输入:
CodeCatalyst Web app build role
-
选择创建角色。
现在,您已创建一个具有信任策略和权限策略的构建角色。
-
-
将权限策略附加到构建角色,如下所示:
-
在导航窗格中,选择角色,然后搜索
codecatalyst-webapp-build-role
。 -
选择
codecatalyst-webapp-build-role
以显示其详细信息。 -
在权限选项卡中,选择添加权限,然后选择附加策略。
-
搜索
codecatalyst-webapp-build-policy
,选中其复选框,然后选择附加策略。您现在已将权限策略附加到构建角色。构建角色现在具有两个策略:权限策略和信任策略。
-
-
按如下步骤操作,获取构建角色 ARN:
-
在导航窗格中,选择角色。
-
在搜索框中,输入刚创建的角色的名称(
codecatalyst-webapp-build-role
)。 -
从列表中选择该角色。
此时将显示该角色的摘要页面。
-
在顶部,复制 ARN 值。
现在,您已创建具有相应权限的构建角色并已获取其 ARN。
-
手动为 SAM 蓝图创建角色
CodeCatalyst SAM 蓝图使用您创建的 IAM 角色,它们分别称作适用于 CloudFormation 的构建角色和适用于 SAM 的部署角色。
按以下步骤操作,在 IAM 中创建这些角色。
创建适用于 CloudFormation 的构建角色
-
按如下步骤操作,为角色创建策略:
-
登录到 AWS。
打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择策略。
-
选择创建策略。
-
选择 JSON 选项卡。
-
删除现有代码。
-
粘贴以下代码:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*", "cloudformation:*" ], "Resource": "*" } ] }
注意
第一次使用该角色运行工作流操作时,请在资源策略语句中使用以下通配符,然后在策略可用后使用资源名称缩小策略范围。
"Resource": "*"
-
选择下一步: 标签。
-
选择下一步: 审核。
-
在名称中,输入:
codecatalyst-SAM-build-policy
-
选择创建策略。
现在,您已经创建了权限策略。
-
-
按如下步骤操作,创建构建角色:
-
在导航窗格中,选择角色,然后选择创建角色。
-
选择自定义信任策略。
-
删除现有的自定义信任策略。
-
添加以下自定义信任策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
选择下一步。
-
将权限策略附加到构建角色。在添加权限页面上的权限策略部分中,搜索
codecatalyst-SAM-build-policy
并选中其复选框。 -
选择下一步。
-
对于角色名称,输入:
codecatalyst-SAM-build-role
-
对于角色描述,输入:
CodeCatalyst SAM build role
-
选择创建角色。
现在,您已创建一个具有信任策略和权限策略的构建角色。
-
-
将权限策略附加到构建角色,如下所示:
-
在导航窗格中,选择角色,然后搜索
codecatalyst-SAM-build-role
。 -
选择
codecatalyst-SAM-build-role
以显示其详细信息。 -
在权限选项卡中,选择添加权限,然后选择附加策略。
-
搜索
codecatalyst-SAM-build-policy
,选中其复选框,然后选择附加策略。您现在已将权限策略附加到构建角色。构建角色现在具有两个策略:权限策略和信任策略。
-
-
按如下步骤操作,获取构建角色 ARN:
-
在导航窗格中,选择角色。
-
在搜索框中,输入刚创建的角色的名称(
codecatalyst-SAM-build-role
)。 -
从列表中选择该角色。
此时将显示该角色的摘要页面。
-
在顶部,复制 ARN 值。
现在,您已创建具有相应权限的构建角色并已获取其 ARN。
-
创建适用于 SAM 的部署角色
-
按如下步骤操作,为角色创建策略:
-
登录到 AWS。
打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择策略。
-
选择创建策略。
-
选择 JSON 选项卡。
-
删除现有代码。
-
粘贴以下代码:
{ "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-SAM-deploy-policy
-
选择创建策略。
现在,您已经创建了权限策略。
-
-
按如下步骤操作,创建构建角色:
-
在导航窗格中,选择角色,然后选择创建角色。
-
选择自定义信任策略。
-
删除现有的自定义信任策略。
-
添加以下自定义信任策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
选择下一步。
-
将权限策略附加到构建角色。在添加权限页面上的权限策略部分中,搜索
codecatalyst-SAM-deploy-policy
并选中其复选框。 -
选择下一步。
-
对于角色名称,输入:
codecatalyst-SAM-deploy-role
-
对于角色描述,输入:
CodeCatalyst SAM deploy role
-
选择创建角色。
现在,您已创建一个具有信任策略和权限策略的构建角色。
-
-
将权限策略附加到构建角色,如下所示:
-
在导航窗格中,选择角色,然后搜索
codecatalyst-SAM-deploy-role
。 -
选择
codecatalyst-SAM-deploy-role
以显示其详细信息。 -
在权限选项卡中,选择添加权限,然后选择附加策略。
-
搜索
codecatalyst-SAM-deploy-policy
,选中其复选框,然后选择附加策略。您现在已将权限策略附加到构建角色。构建角色现在具有两个策略:权限策略和信任策略。
-
-
按如下步骤操作,获取构建角色 ARN:
-
在导航窗格中,选择角色。
-
在搜索框中,输入刚创建的角色的名称(
codecatalyst-SAM-deploy-role
)。 -
从列表中选择该角色。
此时将显示该角色的摘要页面。
-
在顶部,复制 ARN 值。
现在,您已创建具有相应权限的构建角色并已获取其 ARN。
-