

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS CodeBuild 조건 키
<a name="action-context-keys"></a>

AWS CodeBuild 는 IAM 정책에서 프로젝트 및 플릿과 같은 CodeBuild 리소스에 조직 정책을 적용하는 데 사용할 수 있는 조건 키 세트를 제공합니다. 조건 키는 네트워크 설정, 자격 증명 구성 및 컴퓨팅 제한을 포함하여 대부분의 CodeBuild API 요청 컨텍스트를 다룹니다.

**Topics**
+ [프로젝트 및 플릿에 VPC 연결 설정 적용](#action-context-keys-example-overrideVPC)
+ [프로젝트 buildspec에 대한 무단 수정 방지](#action-context-keys-example-overridebuildspec)
+ [빌드의 컴퓨팅 유형 제한](#action-context-keys-example-computechoice)
+ [제어 환경 변수 설정](#action-context-keys-example-env-variables)
+ [조건 키 이름에 변수 사용](#action-context-keys-example-variables)
+ [API 요청에 속성이 있는지 확인](#action-context-keys-example-env-denyoverride)

## 프로젝트 및 플릿에 VPC 연결 설정 적용
<a name="action-context-keys-example-overrideVPC"></a>

이 정책은 CodeBuild 프로젝트 및 플릿을 생성할 때 호출자가 선택한 VPC, 서브넷 및 보안 그룹을 사용할 수 있도록 허용합니다. 다중 값 컨텍스트 키에 대한 자세한 내용은 [단일 값 컨텍스트 키와 다중 값 컨텍스트 키 비교](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html)를 참조하세요.

------
#### [ 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에 대한 무단 수정 방지
<a name="action-context-keys-example-overridebuildspec"></a>

이 정책은 호출자가 `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"
            }
        }
    }]
}
```

------

## 빌드의 컴퓨팅 유형 제한
<a name="action-context-keys-example-computechoice"></a>

이 정책으로 `c5.large` 또는 `m5.large` [컴퓨팅 인스턴스 유형](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html#environment-reserved-capacity.instance-types)으로만 빌드할 수 있는 플릿을 생성할 수 있습니다.

------
#### [ JSON ]

****  

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

------

## 제어 환경 변수 설정
<a name="action-context-keys-example-env-variables"></a>

이 정책은 호출자가 `STAGE` 환경 변수를 `BETA` 또는 `GAMMA`로 재정의하도록 허용합니다. 또한, `STAGE`를 `PRODUCTION`으로 재정의하는 것을 명시적으로 거부하고 `MY_APP_VERSION` 환경 변수를 재정의하는 것을 거부합니다. 다중 값 컨텍스트 키에 대해서는 [단일 값 컨텍스트 키와 다중 값 컨텍스트 키 비교](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html)를 참조하세요.

------
#### [ 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"
                    ]
                }
            }
        }
    ]
}
```

------

## 조건 키 이름에 변수 사용
<a name="action-context-keys-example-variables"></a>

`secondarySources/${sourceIdentifier}.location` 및 `secondaryArtifacts/${artifactIdentifier}.location`과 같은 조건 키 이름에 변수를 사용할 수 있습니다. IAM 정책에서 보조 [소스](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html) 또는 보조 [아티팩트](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectArtifacts.html) 식별자를 지정할 수 있습니다. 아래 정책은 호출자가 보조 소스 `mySecondSource`의 특정 소스 위치가 있는 프로젝트를 생성하도록 허용합니다.

------
#### [ JSON ]

****  

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

------

## API 요청에 속성이 있는지 확인
<a name="action-context-keys-example-env-denyoverride"></a>

CodeBuild는 조건 키를 지원하여 API 요청에 일부 필드가 있는지 확인합니다. 이 정책은 프로젝트를 생성하거나 업데이트할 때 VPC 요구 사항을 적용합니다.

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