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

Amazon CodeBuild 条件键

Amazon CodeBuild 提供一组条件键,您可以在 IAM 策略中使用这些条件键,以便在项目和实例集等 CodeBuild 资源上强制执行组织策略。条件键涵盖了大部分 CodeBuild API 请求上下文,包括网络设置、凭证配置和计算限制。

对您的项目和实例集强制执行 VPC 连接设置

此策略支持调用者在创建 CodeBuild 项目和实例集时使用选定的 VPC、子网和安全组。有关多值上下文键的更多信息,请参阅单值和多值上下文键

JSON
{ "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" ] } } }] }

防止对项目 buildspec 进行未经授权的修改

此策略不支持调用方覆盖 buildspecOverride 字段中的 buildspec。

注意

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

JSON
{ "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 计算实例类型构建的实例集。

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

控制环境变量设置

此策略支持调用方将 STAGE 环境变量覆盖为 BETAGAMMA。它还显式拒绝将 STAGE 覆盖为 PRODUCTION,并拒绝覆盖 MY_APP_VERSION 环境变量。有关多值上下文键,请参阅单值和多值上下文键

JSON
{ "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 创建具有特定源位置的项目。

JSON
{ "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.vpcId": "false" } } }] }