CodePipeline のトラブルシューティング - AWS CodePipeline
パイプラインエラー: で設定されたパイプラインAWS Elastic Beanstalkエラーメッセージを返します。「デプロイに失敗しました。指定されたロールには十分なアクセス権限がありません。サービス:Amazon Elasticロードバランシング」デプロイエラー: で構成されたパイプラインAWS Elastic Beanstalk「DescribeEvents」アクセス許可がない場合、デプロイアクションは失敗ではなくハングアップ状態になります。パイプラインエラー: ソースアクションは、不十分なアクセス権限メッセージを返します。「アクセスできませんでした CodeCommit 倉庫repository-name。リポジトリにアクセスするための十分な権限がパイプラインの IAM ロールにあることを確認してください。」パイプラインエラー: Jenkins のビルドまたはテストアクションは長期間実行されるため、認証情報やアクセス許可の不足のため失敗します。パイプラインエラー: 1 つで作成されたパイプラインAWS別のバケットで作成されたバケットを使用するリージョンAWSリージョンは、コード「JobFailed」とともに「InternalError」を返します。デプロイエラー: WAR ファイルを含む ZIP ファイルは、に正常にデプロイされますAWS Elastic Beanstalkですが、アプリケーションの URL に 404 Not found エラーが報告されますパイプラインのアーティファクトフォルダ名が切り詰められているように見えますを追加します。 CodeBuild Bitbucket、GitHub、または GitHub Enterprise サーバーを追加します。 CodeBuild ソースアクションの CodeCommit GitClone のアクセス許可パイプラインエラー: CodeDeployToECS アクションを使用したデプロイメントは、次のエラーメッセージを返します。<source artifact name>からタスク定義アーティファクトファイルを読み取ろうとしたときに例外が発生しましたGitHub バージョン 1 のソースアクション: リポジトリリストに異なるリポジトリが表示されます。GitHub バージョン 2 のソースアクション: リポジトリの接続を完了できませんAmazon S3 エラー: CodePipeline <ARN>サービスロールは、S3 バケットの S3 アクセスが拒否されました。<BucketName> Amazon S3 、Amazon ECR、または CodeCommit ソースを使用した パイプラインは自動的に起動されなくなりました。別の問題があるため問い合わせ先を教えてください。

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

CodePipeline のトラブルシューティング

以下の情報は、AWS CodePipeline での一般的な問題のトラブルシューティングに役立ちます。

トピック

パイプラインエラー: で設定されたパイプラインAWS Elastic Beanstalkエラーメッセージを返します。「デプロイに失敗しました。指定されたロールには十分なアクセス権限がありません。サービス:Amazon Elasticロードバランシング」

問題: のサービスロール CodePipeline に対する十分な権限がありませんAWS Elastic BeanstalkElastic Load Balancing の一部の操作を含みますが、これに限定されません。のサービスロール CodePipeline この問題に対処するために、が 2015 年 8 月 6 日に更新されました。この日付より前にサービスロールを作成したお客様は、サービスロールのポリシーステートメントを変更して必要なアクセス権限を追加する必要があります。

解決方法: 最も簡単な解決方法は、「」で記載されているようにサービスロールに対するポリシーステートメントを編集することです。 CodePipeline サービスロールにアクセス許可を追加する

編集済みのポリシーを適用したら、パイプラインを手動で開始する のステップに従って Elastic Beanstalk を使用するパイプラインを手動で再実行します。

セキュリティのニーズに応じて、他の方法でアクセス権限を変更することもできます。

デプロイエラー: で構成されたパイプラインAWS Elastic Beanstalk「DescribeEvents」アクセス許可がない場合、デプロイアクションは失敗ではなくハングアップ状態になります。

問題: のサービスロール CodePipeline 次のものを含める必要があります。"elasticbeanstalk:DescribeEvents"を使用するパイプラインに対するアクションAWS Elastic Beanstalk。このアクセス権限がないと、AWS Elastic Beanstalk のデプロイアクションは失敗やエラーになることなく中止します。このアクションがサービスロールに欠落している場合は、 CodePipeline のパイプラインのデプロイステージを実行するアクセス権限がありませんAWS Elastic Beanstalkユーザーに代わってします。

解決方法: を確認します。 CodePipeline サービスロール。"elasticbeanstalk:DescribeEvents" アクションが欠落している場合は、「 CodePipeline サービスロールにアクセス許可を追加する」の手順に従い、IAM コンソールで [ポリシーの編集] 機能を使用してこのアクションを追加します。

編集済みのポリシーを適用したら、パイプラインを手動で開始する のステップに従って Elastic Beanstalk を使用するパイプラインを手動で再実行します。

パイプラインエラー: ソースアクションは、不十分なアクセス権限メッセージを返します。「アクセスできませんでした CodeCommit 倉庫repository-name。リポジトリにアクセスするための十分な権限がパイプラインの IAM ロールにあることを確認してください。」

問題: のサービスロール CodePipeline に対する十分な権限がありません CodeCommit CodeCommit リポジトリを使用するためのサポートが、2016 年 4 月 18 日に追加される前に作成された可能性があります。この日付より前にサービスロールを作成したお客様は、サービスロールのポリシーステートメントを変更して必要なアクセス権限を追加する必要があります。

解決方法: に必要な権限を追加します。 CodeCommit に CodePipeline サービスロールのポリシー。詳細については、「 CodePipeline サービスロールにアクセス許可を追加する」を参照してください。

パイプラインエラー: Jenkins のビルドまたはテストアクションは長期間実行されるため、認証情報やアクセス許可の不足のため失敗します。

問題: Jenkins サーバーが Amazon EC2 インスタンスにインストールされている場合、インスタンスは CodePipeline に必要な権限を持つインスタンスロールで作成されていない可能性があります。Jakins サーバー、オンプレミスインスタンス、または必要な IAM ロールなしで作成された Amazon EC2 インスタンスで IAM ユーザーを使用している場合、IAM ユーザーには必要な権限がないか、Jenkins サーバーがサーバー上に設定されたプロファイルを介してこれらの認証情報にアクセスできません。

解決方法: Amazon EC2 インスタンスロールまたは IAM ユーザーが、AWSCodePipelineCustomActionAccess管理ポリシーまたは同等の権限を持つ。詳細については、「AWS用の 管理ポリシー CodePipeline」を参照してください。

IAM ユーザーを使用している場合は、インスタンスで設定された AWS プロファイルが正しい権限で設定された IAM ユーザーを使用していることを確認してください。Jenkins との統合のために設定した IAM ユーザー認証情報を提供する必要があります。 CodePipeline Jenkins UI に直接アクセスできます。これは推奨されるベストプラクティスではありません。その必要がある場合は、Jenkins サーバーが保護されており、HTTP ではなく HTTPS を使用していることを確認してください。

パイプラインエラー: 1 つで作成されたパイプラインAWS別のバケットで作成されたバケットを使用するリージョンAWSリージョンは、コード「JobFailed」とともに「InternalError」を返します。

問題: パイプラインとバケットが異なるに作成されていると、Amazon S3 バケットに保存されたアーティファクトのダウンロードは失敗します。AWS地域。

解決方法: アーティファクトが保存されている Amazon S3 バケットが同じにあることを確認しますAWSリージョンは、作成したパイプラインのことです。

デプロイエラー: WAR ファイルを含む ZIP ファイルは、に正常にデプロイされますAWS Elastic Beanstalkですが、アプリケーションの URL に 404 Not found エラーが報告されます

問題: WAR ファイルはAWS Elastic Beanstalk環境ですが、アプリケーションの URL は 404 Not Found エラーを返します。

解決方法: AWS Elastic Beanstalk は ZIP ファイルを展開できますが、ZIP ファイルに含まれている WAR ファイルは展開できません。buildspec.yml ファイルに WAR ファイルを指定する代わりに、デプロイするコンテンツを含むフォルダを指定します。例:

version: 0.2 phases: post_build: commands: - mvn package - mv target/my-web-app ./ artifacts: files: - my-web-app/**/* discard-paths: yes

例については、「AWS Elastic Beanstalk CodeBuild のサンプル 」を参照してください。

パイプラインのアーティファクトフォルダ名が切り詰められているように見えます

問題: パイプラインアーティファクト名を CodePipeline で表示すると、名前が切り詰められているように見えます。これにより、複数の名前が同じように表示されたり、パイプライン名全体の表示が失われたりしたように見えます。

説明: CodePipeline アーティファクト名を切り詰めることにより、Amazon S3 のフルパスがポリシーサイズの上限を超えないようにします。 CodePipeline ジョブワーカーの一時的な認証情報を生成します。

アーティファクトの名前が切り捨てられているように見えても、 CodePipeline は、名前が切り詰められたアーティファクトに影響されない方法でアーティファクトバケットにマッピングします。パイプラインは正常に動作します。これは、フォルダやアーティファクトでは問題となりません。パイプライン名には 100 文字の制限があります。アーティファクトフォルダ名は、短縮されたように見えても、パイプラインに対して依然として一意です。

を追加します。 CodeBuild Bitbucket、GitHub、または GitHub Enterprise サーバー

AWS を使用する場合 CodeStar ソースアクションでの接続と CodeBuild アクションの場合、入力アーティファクトをビルドに渡す方法は 2 つあります。

  • デフォルトは次のとおりです。ソースアクションは、CodeBuild がダウンロードするコードを含む zip ファイルを生成します。

  • Gitクローン: ソースコードは、直接ビルド環境にダウンロードできます。

    Git クローンモードでは、作業中の Git リポジトリとしてソースコードを操作することができます。このモードを使用するには、 CodeBuild 接続を使用するための環境アクセス権限です。

にアクセス権限を追加するには CodeBuild サービスロールポリシー、にアタッチするカスタマーマネージドポリシーを作成します。 CodeBuild サービスロール。次の手順では、UseConnection のアクセス許可が action フィールドに指定され、接続 ARN が Resource フィールドに指定されたポリシーを作成します。

コンソールを使用して UseConnection 許可

  1. パイプラインの接続 ARN を確認するには、パイプラインを開き、ソースアクションの (i) のアイコンをクリックします。に接続 ARN を追加します。 CodeBuild サービスロールポリシー

    次に、接続 ARN の例を示します。

    arn:aws:codestar-connections:eu-central-1:123456789123:connection/sample-1908-4932-9ecc-2ddacee15095
  2. を見つけるには CodeBuild サービスロールを選択し、パイプラインで使用されるビルドプロジェクトを開き、ビルドの詳細タブ。

  3. [サービスロール] リンクを選択します。これにより IAM コンソールが開き、接続へのアクセスを許可する新しいポリシーを追加できます。

  4. IAM コンソールで [ポリシーのアタッチ] を選択し、[ポリシーの作成] を選択します。

    次のサンプルポリシーテンプレートを使用します。次の例に示すように、Resource フィールドに接続 ARN を追加します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codestar-connections:UseConnection", "Resource": "insert connection ARN here" } ] }

    [JSON] タブで、ポリシーを貼り付けます。

  5. [Review policy] (ポリシーの確認) を選択します。ポリシーの名前 (例: connection-permissions) を入力し、[ポリシーの作成] を選択します。

  6. アクセス許可を添付したページに戻り、ポリシーリストを更新して、作成したポリシーを選択します。[Attach policies] (ポリシーの添付) を選択します。

を追加します。 CodeBuild ソースアクションの CodeCommit GitClone のアクセス許可

パイプラインに CodeCommit ソースアクションの場合、入力アーティファクトをビルドに渡す方法は 2 つあります。

  • デフォルト値— ソースアクションは、次のコードを含む zip ファイルを生成します。 CodeBuild ダウンロード。

  • フルクローン: ソースコードは、直接ビルド環境にダウンロードできます。

    フルクローン オプションでは、作業中の Git リポジトリとしてソースコードを操作することができます。このモードを使用するには、CodeBuild 環境がリポジトリからプルするアクセス権限を追加する必要があります。

にアクセス権限を追加するには CodeBuild サービスロールポリシー、にアタッチするカスタマーマネージドポリシーを作成します。 CodeBuild サービスロール。次の手順では、codecommit:GitPull アクセス権限を action フィールドで指定するポリシーを作成します。

コンソールを使用して GitPull 許可

  1. を見つけるには CodeBuild サービスロール、パイプラインで使用されているビルドプロジェクトを開き、ビルドの詳細タブ。

  2. [サービスロール] リンクを選択します。これにより IAM コンソールが開き、リポジトリへのアクセスを許可する新しいポリシーを追加できます。

  3. IAM コンソールで [ポリシーのアタッチ] を選択し、[ポリシーの作成] を選択します。

  4. [JSON] タブに、以下のサンプルポリシーを貼り付けます。

    { "Action": [ "codecommit:GitPull" ], "Resource": "*", "Effect": "Allow" },
  5. [Review policy] (ポリシーの確認) を選択します。ポリシーの名前 (例: codecommit-gitpull) を入力し、[ポリシーの作成] を選択します。

  6. アクセス許可を添付したページに戻り、ポリシーリストを更新して、作成したポリシーを選択します。[Attach policies] (ポリシーの添付) を選択します。

パイプラインエラー: CodeDeployToECS アクションを使用したデプロイメントは、次のエラーメッセージを返します。<source artifact name>からタスク定義アーティファクトファイルを読み取ろうとしたときに例外が発生しました

問題:

タスク定義ファイルは、 CodePipeline を使用して Amazon ECS にアクションをデプロイします。 CodeDeploy (CodeDeployToECSアクション)。最大アーティファクトの ZIP サイズCodeDeployToECSデプロイアクションは 3 MB です。ファイルが見つからないか、アーティファクトのサイズが 3 MB を超えると、次のエラーメッセージが返されます。

<source artifact name> からタスク定義アーティファクトファイルを読み取ろうとしたときに例外が発生しました

解決方法: タスク定義ファイルがアーティファクトとして含まれていることを確認してください。ファイルがすでに存在する場合は、圧縮サイズが 3 MB 未満であることを確認します。

GitHub バージョン 1 のソースアクション: リポジトリリストに異なるリポジトリが表示されます。

問題:

の認証が成功した後 GitHub のバージョン 1 アクション CodePipeline コンソールでは、リストから選択することができます GitHub repository. リストに表示されるはずのリポジトリが含まれていない場合は、認可に使用したアカウントをトラブルシューティングできます。

解決方法: で提供されているリポジトリのリスト CodePipeline コンソールは、 GitHub 承認されたアカウントが属する組織。で認証に使用しているアカウントを確認します。 GitHub アカウントはに関連付けられていますか GitHub リポジトリが作成される組織。

GitHub バージョン 2 のソースアクション: リポジトリの接続を完了できません

問題:

というつながりがあるから GitHub リポジトリはAWSConnector for GitHub の場合、接続を作成するには、リポジトリへの組織所有者のアクセス許可または管理者のアクセス許可が必要です。

解決方法: の権限レベルの詳細については、 GitHub リポジトリ、「」を参照してください。https://docs.github.com/en/free-pro-team@latest/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization

Amazon S3 エラー: CodePipeline <ARN>サービスロールは、S3 バケットの S3 アクセスが拒否されました。<BucketName>

問題:

進行中は、 CodeCommit でのアクション CodePipeline は、パイプラインのアーティファクトバケットが存在することをチェックします。アクションにチェックするアクセス許可がない場合は、Amazon S3 で AccessDenied のエラーが発生し、CodePipeline に次のエラーメッセージが表示されます。

CodePipeline サービスロール「arn:aws:iam:: AccountID :role/service-role/RoleID により、S3 バケット「BucketName」の S3 アクセスが拒否されています。

- CloudTrail アクションのログもAccessDeniedというエラーが表示される。

解決方法: 次のコマンドを実行します

  • に添付されているポリシーについて CodePipeline サービスロール、追加s3:ListBucketに、ポリシー内のアクションのリストに移動します。サービスロールポリシーを表示する手順については、「パイプラインの ARN とサービスロール ARN (コンソール) を表示します。」を参照してください。サービスロールのポリシーステートメントを編集するには「 CodePipeline サービスロールにアクセス許可を追加する」を参照してください。

  • パイプラインの Amazon S3 アーティファクトバケットにアタッチされたリソースベースのポリシー、通称アーティファクトバケットポリシーで、ステートメントを追加して、s3:ListBucketユーザーが使用する許可 CodePipeline サービスロール。

    アーティファクトバケットにポリシーを追加するには

    1. パイプラインの ARN とサービスロール ARN (コンソール) を表示します。 の手順を行い、パイプラインの [設定] ページでアーティファクトバケットを選択し、Amazon S3 コンソールに表示させます。

    2. [Permissions (アクセス許可)] を選択します。

    3. [Bucket policy (バケットポリシー)] で [編集] を選択します。

    4. [ポリシー] テキストフィールドで、新しいバケットポリシーを入力するか、次の例に示すように既存のポリシーを編集します。バケットポリシーは JSON ファイルであるため、有効な JSON を入力する必要があります。

      次の例は、サービスロールのロール ID の例が AROAEXAMPLEID であるアーティファクトバケットのバケットポリシーステートメントを示しています。

      { "Effect": "Allow", "Principal": "*", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::BucketName", "Condition": { "StringLike": { "aws:userid": "AROAEXAMPLEID:*" } } }

      次の例は、アクセス許可が追加された後の同じバケットポリシーステートメントを示しています。

      { "Version": "2012-10-17", "Id": "SSEAndSSLPolicy", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890", "Condition": { "StringLike": { "aws:userid": "AROAEXAMPLEID:*" } } }, { "Sid": "DenyUnEncryptedObjectUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "aws:kms" } } }, { "Sid": "DenyInsecureConnections", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890/*", "Condition": { "Bool": { "aws:SecureTransport": false } } } ] }

      詳細については、http://aws.amazon.com/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/のステップ を参照してください。

    5. [Save] (保存) を選択します。

編集済みのポリシーを適用したら、パイプラインを手動で開始する のステップに従ってパイプラインを手動で再実行します。

Amazon S3 、Amazon ECR、または CodeCommit ソースを使用した パイプラインは自動的に起動されなくなりました。

問題:

イベントルールを使用するアクションの設定を変更した後(EventBridge または CloudWatch イベント)変更検出の場合、ソーストリガー識別子が類似しており、同じ初期文字を持つ変更をコンソールが検出しない場合があります。新しいイベントルールはコンソールによって作成されないため、パイプラインは自動的に起動されなくなります。

のパラメータ名の末尾のマイナーチェンジの例 CodeCommit 変更されるだろう CodeCommit ブランチ名MyTestBranch-1MyTestBranch-2。ブランチ名の末尾に変更があるため、ソースアクションのイベントルールが新しいソース設定のルールを更新、または作成しない場合があります。

これは、次のように変更検出に CWE イベントを使用するソースアクションに適用されます。

ソースアクション パラメータおよびトリガー識別子 (コンソール)
Amazon ECR

リポジトリ名

イメージタグ

Simple Storage Service (Amazon S3)

バケット

S3 オブジェクトキー

CodeCommit

リポジトリ名

ブランチ名

解決方法:

以下の いずれかを 実行します。

  • CodeCommit、S3 および ECR 構成設定を変更して、パラメータ値の開始部分が変更されるようにします。

    例: ブランチ名を変更するrelease-branch2nd-release-branchrelease-branch-2 など、名前の末尾の変更は避けてください。

  • 各パイプラインの CodeCommit、S3 および ECR 構成設定を変更します。

    例: ブランチ名を変更するmyRepo/myBranchmyDeployRepo/myDeployBranchmyRepo/myBranch2 など、名前の末尾の変更は避けてください。

  • コンソールの代わりに CLI を使用するか、AWS CloudFormationをクリックして、変更検出イベントルールを作成および更新します。S3 ソースアクションのイベントルールを作成する手順については、「」を参照してください。Amazon S3 ソースアクションと CloudWatch イベント。Amazon ECR アクションのイベントルールを作成する手順については、「」を参照してください。 Amazon ECR ソースアクションと CloudWatch イベント。のイベントルールの作成手順については、 CodeCommit アクション、「」を参照してください。 CodeCommit ソースアクションと CloudWatch イベント

コンソールでアクション設定を 編集した後、コンソールによって作成された更新された変更検出リソースを 容認します。

別の問題があるため問い合わせ先を教えてください。

これらの他のリソースを試してください。