詳細設定 - AWS CodeBuild

詳細設定

コンソールを使用した開始方法」の手順に従って初めて AWS CodeBuild にアクセスする場合、このトピックの情報は必要ないと考えられます。ただし、CodeBuild を引き続き使用する場合、組織内の IAM グループやユーザーに CodeBuild へのアクセスを付与したり、CodeBuild にアクセスするために IAM の既存のサービスロールや AWS KMS のカスタマーマスターキーを変更したり、CodeBuild にアクセスするために組織のワークステーション全体で AWS CLI をセットアップしたりすることがあります。このトピックでは、関連するセットアップ手順の実行方法について説明します。

AWS アカウントは既にあるものとします。ただし、まだアカウントがない場合は、http://aws.amazon.com に移動し、[Sign In to the Console (コンソールにサインインする)] を選択してオンラインの指示に従ってください。

IAM グループまたは IAM ユーザーに対して CodeBuild へのアクセス許可を追加する

AWS CodeBuild にアクセスするには、IAM グループまたは IAM ユーザーにアクセス許可を追加する必要があります。このセクションでは、IAM コンソールまたは AWS CLI でこれを行う方法について説明します。

AWS ルートアカウント (非推奨) または AWS アカウントの管理者 IAM ユーザーで CodeBuild にアクセスする場合は、これらの手順に従う必要はありません。

AWS ルートアカウントと管理者 IAM ユーザーについては、https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html ユーザーガイドの、「IAMアカウント root ユーザー」および「最初の IAM 管理者ユーザーおよびグループの作成」を参照してください。

IAM グループまたは IAM ユーザー (コンソール) に CodeBuild アクセス許可を追加するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

    次のいずれかを使用して、AWS マネジメントコンソール に既にサインインしている必要があります。

    • AWS ルートアカウント。これは推奨されません。詳細については、https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html ユーザーガイドの「IAMアカウント root ユーザー」を参照してください。

    • AWS アカウントの管理者 IAM ユーザー。詳細については、IAM ユーザーガイドの「最初の IAM 管理者のユーザーおよびグループの作成」を参照してください。

    • 次の最小限のアクションを実行する権限がある AWS アカウントの IAM ユーザー。

      iam:AttachGroupPolicy iam:AttachUserPolicy iam:CreatePolicy iam:ListAttachedGroupPolicies iam:ListAttachedUserPolicies iam:ListGroups iam:ListPolicies iam:ListUsers

      詳細については、IAM ユーザーガイドの「IAM ポリシーの概要」を参照してください。

  2. ナビゲーションペインで、[ポリシー] を選択します。

  3. カスタムセットの AWS CodeBuild アクセス許可を IAM グループまたは IAM ユーザーに追加するには、この手順のステップ 4 に進んでください。

    IAM グループや IAM ユーザーにデフォルトの CodeBuild アクセス許可セットを追加するには、[Policy Type (ポリシータイプ)]、[AWS Managed (AWS 管理)] の順に選択し、以下の操作を行います。

    • CodeBuild へのフルアクセス許可を追加するには、[AWSCodeBuildAdminAccess] という名前のボックスを選択し、[ポリシーアクション]、[アタッチ] の順に選択します。対象の IAM グループや IAM ユーザーの横にあるボックスを選択し、[Attach Policy (ポリシーのアタッチ)] を選択します。AmazonS3ReadOnlyAccess ポリシーおよび IAMFullAccess ポリシーに対して、この操作を繰り返します。

    • ビルドプロジェクト管理を除くすべてについて CodeBuild へのアクセス許可に追加するには、[AWSCodeBuildDeveloperAccess] という名前のボックスを選択し、[ポリシーアクション]、[アタッチ] の順に選択します。対象の IAM グループや IAM ユーザーの横にあるボックスを選択し、[Attach Policy (ポリシーのアタッチ)] を選択します。AmazonS3ReadOnlyAccess ポリシーに対して、この操作を繰り返します。

    • CodeBuild に読み取り専用アクセス許可を追加するには、AWSCodeBuildReadOnlyAccess という名前のボックスを選択します。対象の IAM グループや IAM ユーザーの横にあるボックスを選択し、[Attach Policy (ポリシーのアタッチ)] を選択します。AmazonS3ReadOnlyAccess ポリシーに対して、この操作を繰り返します。

    これで、IAM グループまたは IAM ユーザーへの CodeBuild のアクセス許可のデフォルトセットが追加されました。この手順の残りの手順をスキップします。

  4. [Create Policy (ポリシーの作成)] を選択します。

  5. [Create Policy] ページで、[Create Your Own Policy] の横にある [Select] を選択します。

  6. [ポリシーの確認] ページの [ポリシー名] に、ポリシーの名前 (CodeBuildAccessPolicy など) を入力します。別の名前を使用する場合は、この手順全体でそれを使用してください。

  7. [ポリシードキュメント] に、次のように入力し、[ポリシーの作成] を選択します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "CodeBuildDefaultPolicy", "Effect": "Allow", "Action": [ "codebuild:*", "iam:PassRole" ], "Resource": "*" }, { "Sid": "CloudWatchLogsAccessPolicy", "Effect": "Allow", "Action": [ "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": "*" }, { "Sid": "S3AccessPolicy", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetObject", "s3:List*", "s3:PutObject" ], "Resource": "*" }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
    注記

    このポリシーにより、すべての CodeBuild アクションへのアクセスが許可され、多数の AWS リソースへのアクセスが許可される可能性があります。アクセス許可を特定の CodeBuild アクションに限定するには、CodeBuild ポリシーステートメントの codebuild:* の値を変更します。詳細については、「Identity and access management」を参照してください。特定の AWS リソースへのアクセスを制限するには、Resource オブジェクトの値を変更します。詳細については、「Identity and access management」を参照してください。

  8. ナビゲーションペインで、[Groups] または [Users] を選択します。

  9. グループまたはユーザーのリストで、CodeBuild アクセス許可を追加する IAM グループまたは IAM ユーザーの名前を選択します。

  10. グループの場合は、グループ設定ページの [アクセス許可] タブで [管理ポリシー] を展開し、[ポリシーのアタッチ] を選択します。

    ユーザーの場合は、ユーザー設定ページの [Permissions] タブで、[Add permissions] を選択します。

  11. グループの場合は、[Attach Policy (ポリシーのアタッチ)] ページで [CodeBuildAccessPolicy] を選択し、[Attach Policy (ポリシーのアタッチ)] を選択します。

    ユーザーの場合は、[Add permissions] ページで [Attach existing policies directly] を選択します。選択 CodeBuildアクセスポリシー、選択 次へ: リードを選択し、次に 権限の追加.

IAM グループまたは IAM ユーザー (AWS CLI) に CodeBuild アクセス許可を追加する

  1. 前の手順で説明しているように、IAM エンティティのいずれかに対応する AWS アクセスキーと AWS シークレットアクセスキーを使用して AWS CLI が設定されていることを確認します。詳細については、AWS Command Line Interface ユーザーガイドの「AWS Command Line Interface のセットアップ」を参照してください。

  2. AWS CodeBuild へのアクセス許可のカスタムセットを IAM グループまたは IAM ユーザーに追加するには、この手順のステップ 3 に進んでください。

    IAM グループまたは IAM ユーザーに、CodeBuild アクセス許可のデフォルトセットを追加するには以下を実行します。

    IAM グループまたは IAM ユーザーのどちらにアクセス許可を追加するかに応じて、次のいずれかのコマンドを実行します。

    aws iam attach-group-policy --group-name group-name --policy-arn policy-arn aws iam attach-user-policy --user-name user-name --policy-arn policy-arn

    コマンドを 3 回実行し、group-name または user-name と IAM グループ名または IAM ユーザー名、置換 policy-arn 次のポリシーの Amazon リソース名 (ARN) ごとに 1 回:

    • CodeBuild にフルアクセス許可を追加するには、以下のポリシー ARN を使用します。

      • arn:aws:iam::aws:policy/AWSCodeBuildAdminAccess

      • arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

      • arn:aws:iam::aws:policy/IAMFullAccess

    • ビルドプロジェクトの管理以外のすべてに対して CodeBuild にアクセス許可を追加するには、次のポリシー ARN を使用します。

      • arn:aws:iam::aws:policy/AWSCodeBuildDeveloperAccess

      • arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

    • CodeBuild に読み取り専用アクセス許可を追加するには、以下のポリシー ARN を使用します。

      • arn:aws:iam::aws:policy/AWSCodeBuildReadOnlyAccess

      • arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

    これで、IAM グループまたは IAM ユーザーへの CodeBuild のアクセス許可のデフォルトセットが追加されました。この手順の残りの手順をスキップします。

  3. ローカル ワークステーションまたはインスタンス上の空のディレクトリで、 AWS CLI をインストールし、という名前のファイルを作成します put-group-policy.json または put-user-policy.json。 別のファイル名を使用する場合は、必ずこの手順全体を通して使用してください。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "CodeBuildAccessPolicy", "Effect": "Allow", "Action": [ "codebuild:*", "iam:PassRole" ], "Resource": "*" }, { "Sid": "CloudWatchLogsAccessPolicy", "Effect": "Allow", "Action": [ "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": "*" }, { "Sid": "S3AccessPolicy", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetObject", "s3:List*", "s3:PutObject" ], "Resource": "*" }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
    注記

    このポリシーにより、すべての CodeBuild アクションへのアクセスが許可され、多数の AWS リソースへのアクセスが許可される可能性があります。アクセス許可を特定の CodeBuild アクションに限定するには、CodeBuild ポリシーステートメントの codebuild:* の値を変更します。詳細については、「Identity and access management」を参照してください。特定の AWS リソースへのアクセスを制限するには、関連する Resource オブジェクトの値を変更します。詳細については、「Identity and access management」または特定の AWS サービスのセキュリティドキュメントを参照してください。

  4. ファイルを保存したディレクトリに移動し、以下のいずれかのコマンドを実行します。の異なる値を使用できます。 CodeBuildGroupAccessPolicy および CodeBuildUserAccessPolicy。 異なる値を使用する場合は、必ずここで使用してください。

    IAM グループの場合:

    aws iam put-group-policy --group-name group-name --policy-name CodeBuildGroupAccessPolicy --policy-document file://put-group-policy.json

    IAM ユーザーの場合:

    aws iam put-user-policy --user-name user-name --policy-name CodeBuildUserAccessPolicy --policy-document file://put-user-policy.json

    前述のコマンドで、group-name または user-name ターゲットの名前付き IAM グループまたは IAM ユーザー。

CodeBuild サービスロールの作成

AWS CodeBuild サービスロールが必要です。これにより、CodeBuild が、ユーザーに代わって依存 AWS サービスとやり取りできるようになります。CodeBuild または AWS CodePipeline コンソールを使用して、CodeBuild サービスロールを作成できます。詳細については、「」を参照してください。

これらのコンソールを使用する予定がない場合のために、このセクションでは、IAM コンソールまたは AWS CLI を使用して CodeBuild サービスロールを作成する方法について説明します。

注記

このページで説明されているサービスロールには、CodeBuild を使用するのに必要な最小権限を付与するポリシーが含まれています。ユースケースに応じて、さらにアクセス許可を追加する必要がある場合があります。たとえば、Amazon Virtual Private Cloud で CodeBuild を使用するには、作成するサービスロールに、次のポリシーのアクセス権限が必要です。CodeBuild サービスロールの作成。

CodeBuild サービスロールを作成するには (コンソール)

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

    次のいずれかを使用して、コンソールに既にサインインしている必要があります。

    • AWS ルートアカウント。これは推奨されません。詳細については、https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html ユーザーガイドの「IAMアカウント root ユーザー」を参照してください。

    • AWS アカウントの管理者 IAM ユーザー。詳細については、IAM ユーザーガイドの「最初の IAM 管理者のユーザーおよびグループの作成」を参照してください。

    • 次の最小限のアクションを実行する権限がある AWS アカウントの IAM ユーザー。

      iam:AddRoleToInstanceProfile iam:AttachRolePolicy iam:CreateInstanceProfile iam:CreatePolicy iam:CreateRole iam:GetRole iam:ListAttachedRolePolicies iam:ListPolicies iam:ListRoles iam:PassRole iam:PutRolePolicy iam:UpdateAssumeRolePolicy

      詳細については、IAM ユーザーガイドの「IAM ポリシーの概要」を参照してください。

  2. ナビゲーションペインで、[ポリシー] を選択します。

  3. [Create Policy (ポリシーの作成)] を選択します。

  4. [Create Policy] ページで、[JSON] を選択します。

  5. [JSON ポリシー] に、次のように入力し、[ポリシーの確認] を選択します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsPolicy", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "*" ] }, { "Sid": "CodeCommitPolicy", "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": [ "*" ] }, { "Sid": "S3GetObjectPolicy", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "*" ] }, { "Sid": "S3PutObjectPolicy", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "*" ] }, { "Sid": "ECRPullPolicy", "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": [ "*" ] }, { "Sid": "ECRAuthPolicy", "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": [ "*" ] }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
    注記

    このポリシーに含まれているステートメントでは、多数の AWS リソースへのアクセスが許可される可能性があります。AWS CodeBuild に特定の AWS リソースへのアクセスを制限するには、Resource 配列の値を変更します。詳細については、AWS サービスのセキュリティドキュメントを参照してください。

  6. [ポリシーの確認] ページで、[ポリシー名] にポリシー名 (CodeBuildServiceRolePolicy など) を入力し、[ポリシーの作成] を選択します。

    注記

    別の名前を使用する場合は、この手順全体でそれを使用してください。

  7. ナビゲーションペインで [ロール] を選択します。

  8. [Create role] を選択します。

  9. [ロールの作成] ページで、[AWS のサービス] が選択された状態で、[CodeBuild]、[次の手順: アクセス許可] の順に選択します。

  10. 権限ポリシーを添付 ページ、選択 CodeBuildサービス役割ポリシーを選択し、次に 次へ: 確認

  11. [Create role and review (ロールの作成と確認)] ページで、[ロール名] にロールの名前 (CodeBuildServiceRole など) を入力し、[ロールの作成] を選択します。

CodeBuild サービスロールを作成するには (AWS CLI)

  1. 前の手順で説明しているように、IAM エンティティのいずれかに対応する AWS アクセスキーと AWS シークレットアクセスキーを使用して AWS CLI が設定されていることを確認します。詳細については、AWS Command Line Interface ユーザーガイドの「AWS Command Line Interface のセットアップ」を参照してください。

  2. ローカル ワークステーションまたはインスタンス上の空のディレクトリで、 AWS CLI をインストールし、2つのファイルを作成します create-role.json および put-role-policy.json。 異なるファイル名を選択する場合は、必ずこの手順全体を通して使用してください。

    create-role.json:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    put-role-policy.json:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsPolicy", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "*" ] }, { "Sid": "CodeCommitPolicy", "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": [ "*" ] }, { "Sid": "S3GetObjectPolicy", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "*" ] }, { "Sid": "S3PutObjectPolicy", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "*" ] }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": [ "*" ] } ] }
    注記

    このポリシーに含まれているステートメントでは、多数の AWS リソースへのアクセスが許可される可能性があります。AWS CodeBuild に特定の AWS リソースへのアクセスを制限するには、Resource 配列の値を変更します。詳細については、AWS サービスのセキュリティドキュメントを参照してください。

  3. 上記のファイルを保存したディレクトリに移動し、以下の 2 つのコマンドをこの順番で 1 つずつ実行します。CodeBuildServiceRoleCodeBuildServiceRolePolicy には異なる値を使用する場合は、ここでそれらを使用してください。

    aws iam create-role --role-name CodeBuildServiceRole --assume-role-policy-document file://create-role.json
    aws iam put-role-policy --role-name CodeBuildServiceRole --policy-name CodeBuildServiceRolePolicy --policy-document file://put-role-policy.json

CodeBuild の AWS KMS CMK の作成と設定

AWS CodeBuild がビルド出力アーティファクトを暗号化するには、AWS KMS カスタマーマスタキー (CMK) にアクセスする必要があります。デフォルトでは、CodeBuild は、AWS アカウントの Amazon S3 の AWS 管理 CMK を使用します。

この CMK を使用しない場合は、お客様が管理する CMK を自分で作成して設定する必要があります。このセクションでは、IAM コンソールを使用してこれを行う方法を説明します。

CMK の詳細については、AWS Key Management Service 開発者ガイドの「https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html の概念」と「AWS KMSキーの作成」を参照してください。

CodeBuild で使用する CMK を設定するには、https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html 開発者ガイドの「AWS KMSキーポリシーの変更」の手順に従ってください。次に、次の文を追加します( ### BEGIN ADDING STATEMENTS HERE ### および ### END ADDING STATEMENTS HERE ###)をキーポリシーに修正します。省略記号 (...) は、簡潔にするために使用され、ステートメントを追加する場所の特定に役立ちます。ステートメントを削除しないでください、また、これらの省略記号をキーポリシーに入力しないでください。

{ "Version": "2012-10-17", "Id": "...", "Statement": [ ### BEGIN ADDING STATEMENTS HERE ### { "Sid": "Allow access through Amazon S3 for all principals in the account that are authorized to use Amazon S3", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "s3.region-ID.amazonaws.com", "kms:CallerAccount": "account-ID" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-ID:role/CodeBuild-service-role" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, ### END ADDING STATEMENTS HERE ### { "Sid": "Enable IAM User Permissions", ... }, { "Sid": "Allow access for Key Administrators", ... }, { "Sid": "Allow use of the key", ... }, { "Sid": "Allow attachment of persistent resources", ... } ] }
  • region-ID は、 AWS 領域( Amazon S3 関連付けられたバケット CodeBuild (たとえば、 us-east-1)。

  • account-ID は、 AWS CMKを所有するアカウント。

  • CodeBuild-service-role は、 CodeBuild このトピックで作成または特定したサービス ロール。

注記

IAM コンソールで CMK を作成または設定するには、まず次のいずれかを使用して AWS マネジメントコンソール にサインインする必要があります。

  • AWS ルートアカウント。これは推奨されません。詳細については、https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html ユーザーガイドの「IAMアカウント root ユーザー」を参照してください。

  • AWS アカウントの管理者 IAM ユーザー。詳細については、IAM ユーザーガイドの「最初の IAM 管理者のユーザーおよびグループの作成」を参照してください。

  • CMK を作成または変更する権限が与えられている AWS アカウントの IAM ユーザー。詳細については、AWS KMS 開発者ガイドの、「AWS KMS コンソールを使用するために必要なアクセス許可」を参照してください。

AWS CLI のインストールと設定

AWS CodeBuild にアクセスするには、AWS CLI を使用できます (CodeBuild コンソール、CodePipeline コンソール、または AWS SDK と一緒に使用するか、これらの代わりに使用できます)。AWS CLI をインストールして設定するには、AWS Command Line Interface ユーザーガイドの「AWS Command Line Interface のセットアップ」を参照してください。

  1. 次のコマンドを実行して、AWS CLI のインストールが CodeBuild をサポートしているかどうかを確認します。

    aws codebuild list-builds

    成功すると、次のような情報が出力に表示されます。

    { "ids": [] }

    空の角括弧は、まだビルドを実行していないことを示しています。

  2. エラーが出力された場合は、現在のバージョンの AWS CLI をアンインストールしてから、最新バージョンをインストールする必要があります。詳細については、AWS CLI ユーザーガイドの「AWS Command Line Interface のアンインストール」および「AWS Command Line Interface のインストール」を参照してください。