詳細設定 - 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. ナビゲーションペインで、[Policies] を選択します。

  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 ユーザーの横にあるボックスを選択し、[ポリシーのアタッチ] を選択します。[AmazonS3ReadOnlyAccess] というポリシーに対してこれを繰り返します。

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

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

  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. グループの場合は、[ポリシーのアタッチ] CodeBuild AccessPolicy ページで を選択し、[ポリシーのアタッチ] を選択します

    ユーザーの場合は、[Add permissions] ページで [Attach existing policies directly] を選択します。CodeBuildAccessPolicyを選択し、[Next (次へ)] を選択します。[Reivew] で、[Add permissions] を選択します

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。ARNs

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

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

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

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

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

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

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

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

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

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

  3. がインストールされているローカルワークステーションまたはインスタンス上の空のディレクトリに、 AWS CLIまたは という名前のファイルを作成しますput-group-policy.jsonput-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. ナビゲーションペインで、[Policies] を選択します。

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

  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. [Create role ( ロールの作成)] ページで、[AWSService already selected ( のサービスが既に選択されている)] CodeBuild を選択して、[Next:Permissions (次の手順: アクセス許可)] を選択します

  10. [Attach permissions CodeBuild ServiceRolePolicy policies] ページで、[] を選択し、[Next] を選択します。確認.

  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.jsonput-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 コンソールを使用してこれを行う方法を説明します。

CMKsの詳細については、 AWS Key Management Service開発者ガイドの「 の概念とキーの作成」を参照してください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 リージョンの ID を表します ( など)us-east-1

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

  • 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 コンソール、または と一緒に使用するか、これらの代わりに使用できます)CodePipelineAWS。SDKs 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 のインストール」を参照してください。