Amazon CodeBuild 条件键 - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon CodeBuild 条件键

Amazon CodeBuild 提供了一组条件密钥,您可以在 IAM 策略中使用这些条件密钥对项目和队列等 CodeBuild 资源强制执行组织策略。条件密钥涵盖了大多数 CodeBuild API 请求上下文,包括网络设置、凭据配置和计算限制。

对您的项目和队列强制执行 VPC 连接设置

此策略允许呼叫者在创建 CodeBuild 项目和队列时使用选定的 VPCs子网和安全组。有关多值上下文键的更多信息,请参阅单值与多值上下文键。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "codebuild:CreateProject", "codebuild:CreateFleet" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "codebuild:vpcConfig.vpcId": [ "vpc-01234567890abcdef", "vpc-abcdef01234567890" ], "codebuild:vpcConfig.subnets": [ "subnet-1234abcd", "subnet-5678abcd" ], "codebuild:vpcConfig.securityGroupIds": [ "sg-12345678abcdefghij", "sg-01234567abcdefghij" ] } } }] }

防止对项目构建规范进行未经授权的修改

此策略不允许调用者覆盖该buildspecOverride字段中的 buildspec。

注意

codebuild:source.buildspec条件键仅支持 Null 运算符来检查 API 字段是否存在。它不评估构建规范的内容。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "codebuild:StartBuild", "Resource": "*" }, { "Effect": "Deny", "Action": "codebuild:StartBuild", "Resource": "*", "Condition": { "Null": { "codebuild:source.buildspec": "false" } } }] }

限制编译版本的计算类型

此策略允许创建只能使用实例类型构建c5.largem5.large计算实例类型的队列。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "codebuild:CreateFleet", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "codebuild:computeConfiguration.instanceType": ["c5.large", "m5.large"] } } }] }

控制环境变量设置

此策略允许调用者将STAGE环境变量改为BETAGAMMA。它还明确拒绝重写 STAGEPRODUCTION,并拒绝覆盖MY_APP_VERSION环境变量。有关多值上下文键,请参阅单值与多值上下文键。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:StartBuild" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "codebuild:environment.environmentVariables/STAGE.value": [ "BETA", "GAMMA" ] } } }, { "Effect": "Deny", "Action": [ "codebuild:StartBuild" ], "Resource": "*", "Condition": { "StringEquals": { "codebuild:environment.environmentVariables/STAGE.value": "PRODUCTION" }, "ForAnyValue:StringEquals": { "codebuild:environment.environmentVariables.name": [ "MY_APP_VERSION" ] } } } ] }

在条件键名称中使用变量

您可以在条件键名称中使用变量,例如secondarySources/${sourceIdentifier}.locationsecondaryArtifacts/${artifactIdentifier}.location,您可以在其中在 IAM 策略中指定辅助来源或次要项目标识符。以下策略允许调用者为辅助来源创建具有特定源位置的项目mySecondSource

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:CreateProject", "Resource": "*", "Condition": { "StringEquals": { "codebuild:secondarySources/mySecondSource.location": "my-source-location" } } } ] }

检查 API 请求中是否存在属性

CodeBuild 支持条件键来检查 API 请求中是否存在某些字段。该策略在创建或更新项目时强制执行 VPC 要求。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "codebuild:CreateProject", "codebuild:UpdateProject" ], "Resource": "*", "Condition": { "Null": { "codebuild:vpcConfig": "false" } } }] }