本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS CodeBuild 条件键
AWS CodeBuild 提供了一组条件密钥,您可以在 IAM 策略中使用这些条件密钥对项目和队列等 CodeBuild 资源强制执行组织策略。条件密钥涵盖了大多数 CodeBuild API 请求上下文,包括网络设置、凭据配置和计算限制。
对您的项目和队列强制执行 VPC 连接设置
此策略允许呼叫者在创建 CodeBuild 项目和队列时使用选定的 VPCs子网和安全组。有关多值上下文键的更多信息,请参阅单值与多值上下文键。
- 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"
]
}
}
}]
}
防止对项目构建规范进行未经授权的修改
此策略不允许调用者覆盖该buildspecOverride
字段中的 buildspec。
codebuild:source.buildspec
条件键仅支持 Null 运算符来检查 API 字段是否存在。它不评估构建规范的内容。
- 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.large
或m5.large
计算实例类型的队列。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "codebuild:CreateFleet",
"Resource": "*",
"Condition": {
"ForAnyValue:StringEquals": {
"codebuild:computeConfiguration.instanceType": ["c5.large", "m5.large"]
}
}
}]
}
控制环境变量设置
此策略允许调用者将STAGE
环境变量改为BETA
或GAMMA
。它还明确拒绝重写 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}.location
和secondaryArtifacts/${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"
}
}
}]
}