

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS CodeBuild 条件キー
<a name="action-context-keys"></a>

AWS CodeBuild には、プロジェクトやフリートなどの CodeBuild リソースに組織ポリシーを適用するために IAM ポリシーで使用できる一連の条件キーが用意されています。条件キーは、ネットワーク設定、認証情報設定、コンピューティング制限など、ほとんどの 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` 条件キーでは、API フィールドの存在をチェックする Null 演算子のみサポートされます。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"
            }
        }
    }]
}
```