詳細設定 - AWS CodeBuild

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

詳細設定

の手順を行います。コンソールを使用した開始方法AWS CodeBuild に初めてアクセスするには、このトピックの情報は必要ないと考えられます。ただし、引き続き CodeBuild を使用する場合は、組織の IAM グループやユーザーに CodeBuild へのアクセスを付与したり、CodeBuild にアクセスするため AWS CLI をセットアップしたりする場合があります。CodeBuild このトピックでは、関連するセットアップ手順の実行方法について説明します。

AWS アカウントは既にあるものとします。ただし、これをまだお持ちでない場合は、[] に移動します。http://aws.amazon.com] で、コンソールにサインインする] を選択し、オンラインの指示に従います。

IAM グループまたは IAM ユーザーに CodeBuild アクセス権限を追加する

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

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

AWS ルートアカウントと管理者 IAM ユーザーの詳細については、アカウントのルートユーザーおよび最初の IAM 管理者のユーザーおよびグループの作成()IAM ユーザーガイド

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

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

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

    • AWS ルートアカウント。これは推奨されません。詳細については、「」を参照してください。アカウントのルートユーザー()IAM ユーザーガイド

    • 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 アクセス許可のデフォルトセットを追加するには、[] を選択します。ポリシータイプAWS マネージド] を選択し、次の操作を行います。

    • CodeBuild にフルアクセス許可を追加するには、[] という名前のボックスを選択します。AWSCODEビルド管理者アクセス] で、ポリシーアクション] を選択してから、[アタッチ。対象の IAM グループまたは IAM ユーザーの横にあるボックスを選択して、[] を選択します。ポリシーのアタッチAmazonS3ReadOnlyAccess ポリシーおよび IAMFullAccess ポリシーに対して、この操作を繰り返します。

    • ビルドプロジェクトの管理以外のすべてのアクセス権限を CodeBuild に追加するには、[] という名前のボックスを選択します。AWSCODEビルド開発者アクセス] で、ポリシーアクション] を選択してから、[アタッチ。対象の IAM グループまたは IAM ユーザーの横にあるボックスを選択して、[] を選択します。ポリシーのアタッチAmazonS3ReadOnlyAccess ポリシーに対して、この操作を繰り返します。

    • CodeBuild に読み取り専用アクセス許可を追加するには、[] という名前のボックスを選択します。AWSCODEビルド専用アクセス。対象の IAM グループまたは IAM ユーザーの横にあるボックスを選択して、[] を選択します。ポリシーのアタッチ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. グループの場合、ポリシーのアタッチページで、[コードビルドアクセスポリシー] を選択してから、[ポリシーのアタッチ

    ユーザーの場合は、[Add permissions] ページで [Attach existing policies directly] を選択します。Selectコードビルドアクセスポリシー] で、次へ: ライヴー] を選択してから、[アクセス許可の追加

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

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

  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 サービスロールが必要です。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 ルートアカウント。これは推奨されません。詳細については、「」を参照してください。アカウントのルートユーザー()IAM ユーザーガイド

    • 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 リソースへのアクセスを制限するには、AWS CodeBuild の値を変更します。Resource配列。詳細については、AWS サービスのセキュリティドキュメントを参照してください。

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

    注記

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

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

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

  9. リポジトリの []ロールの作成ページで、AWS サービスすでに選択されている場合は、CodeBuild] を選択してから、[Next: Permissions

  10. リポジトリの []アクセス許可ポリシーをアタッチするページで、[コードビルドサービスロールポリシー] を選択してから、[次へ: 確認

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

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

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

  2. AWS CLI がインストールされているローカルワークステーションまたはインスタンスの空のディレクトリに、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 リソースへのアクセスを制限するには、AWS CodeBuild の値を変更します。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 用 CMK を使用します。

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

CMK の詳細については、「CMK」を参照してください。AWS Key Management Service 概念およびキーの作成()AWS KMS 開発者ガイド

CodeBuild で使用する CMK を設定するには、[] の「キーポリシーを変更する方法」の手順に従ってください。キーポリシーの変更()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 は、CodeBuild に関連付けられた Amazon S3 バケットが配置されている AWS リージョンの ID を表します (たとえば、us-east-1).

  • account-ID CMK がある AWS アカウントの ID を表します。

  • CodeBuild-service-role このトピックの前半で作成または識別した CodeBuild サービスロールの名前を表します。

注記

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

AWS CLI をインストールして設定する

AWS CodeBuild にアクセスするには、コードBuild コンソール、CodePipeline コンソール、または AWS SDK とともに、または代わりに AWS SDK を使用します。AWS CLI をインストールして設定するには、「AWS CLI」を参照してください。AWS コマンドラインインターフェイスのセットアップ()AWS コマンドラインインターフェイスユーザーガイド

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

    aws codebuild list-builds

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

    { "ids": [] }

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

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