CodePipeline トラブルシューティング - AWS CodePipeline
パイプラインのエラー: で設定されたパイプラインAWS Elastic Beanstalkはエラー・メッセージを返します。「デプロイに失敗しました 提供されたロールに十分なアクセス許可がありません。サービス:AmazonElasticLoadBalancing」展開エラー: 構成されたパイプラインAWS Elastic Beanstalk「DescribeEvents」アクセス許可がない場合、デプロイアクションは失敗することなく中止します。パイプラインのエラー: ソースアクションは次のような不十分な権限メッセージを返します。「CodeCommit リポジトリにアクセスできませんでしたrepository-name。リポジトリにアクセスするための十分な権限がパイプラインの IAM ロールにあることを確認してください。」パイプラインのエラー: Jenkins のビルドまたはテストアクションは長期間実行されるため、認証情報やアクセス許可の不足のため失敗します。パイプラインのエラー: 1 つのAWS別のバケットで作成されたバケットを使用するリージョンAWSリージョンは、コード「JobFailed」を使用して「InternalError」を返します。展開エラー: WAR ファイルを含む ZIP ファイルは、AWS Elastic Beanstalkアプリケーションの URL に 404 notfound エラーが報告されますパイプラインのアーティファクトフォルダ名が切り詰められているように見えますCodeBuild GitCloneアクセス許可を追加する Bitbucket、GitHub、またはGitHub Enterprise サーバーへの接続にCodeCommit ソースアクションの CodeBuild 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はエラー・メッセージを返します。「デプロイに失敗しました 提供されたロールに十分なアクセス許可がありません。サービス:AmazonElasticLoadBalancing」

問題: CodePipeline のサービスロールに、AWS Elastic Beanstalk(Elastic 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 日に追加される前に作成された可能性があります。この日付より前にサービスロールを作成したお客様は、サービスロールのポリシーステートメントを変更して必要なアクセス権限を追加する必要があります。

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

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

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

解決方法: Amazon EC2 インスタンスのロールまたは IAM ユーザーがAWSCodePipelineCustomActionAccess管理ポリシーを使用するか、同等の権限で設定します。詳細については、「AWSCodePipeline に関する管理 (事前定義) ポリシー」を参照してください。

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

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

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

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

展開エラー: WAR ファイルを含む ZIP ファイルは、AWS Elastic Beanstalkアプリケーションの URL に 404 notfound エラーが報告されます

問題: 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 BeanstalkCodeBuild のサンプル

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

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

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

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

CodeBuild GitCloneアクセス許可を追加する Bitbucket、GitHub、またはGitHub Enterprise サーバーへの接続に

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

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

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

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

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

コンソールを使用して UseConnection のアクセス許可を追加するには

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

    この例では、接続 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. [ポリシーの確認] を選択します。ポリシーの名前 (例: connection-permissions) を入力し、[ポリシーの作成] を選択します。

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

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

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

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

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

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

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

コンソールを使用して GitPull アクセス許可を追加するには

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

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

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

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

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

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

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

問題:

CodeDeploy(CodeDeployToECS アクション)による ECS への CodePipeline デプロイアクションの最大アーティファクト ZIP サイズは、3 MB です。アーティファクトのサイズが 3 MB を超えると、次のエラーメッセージが返されます。

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

解決方法: 圧縮サイズが 3 MB 未満のアーティファクトを作成します。

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

問題:

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

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

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

問題:

GitHub リポジトリへの接続はAWSGitHub 用コネクタを使用する場合、接続を作成するには、リポジトリに対する組織の所有者権限または管理者権限が必要です。

解決方法: 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>

問題:

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

CodePipeline サービスロール「arn: AWS: iam።AccountID:ロール/サービスロール/RoleID「S3バケットのS3アクセスが拒否されました」BucketName"

アクションの 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 を入力する必要があります。

      次の例は、アーティファクトバケットのバケットポリシーステートメントメントを示しています。

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

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

      { "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": "RoleIdForServiceRole:*" } } }, { "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 Events)を使用するアクションの設定を変更した後、ソーストリガー識別子が似ていて、同じ初期文字を持つ変更が検出されないことがあります。新しいイベントルールはコンソールによって作成されないため、パイプラインは自動的に起動しなくなります。

CodeCommit のパラメータ名の最後にマイナーな変更の例は、CodeCommit ブランチ名を変更することですMyTestBranch-1MyTestBranch-2。変更はブランチ名の末尾にあるため、ソースアクションのイベントルールが、新しいソース設定のルールを更新または作成しないことがあります。

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

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

リポジトリ名

イメージタグ

Amazon S3

バケット

S3 オブジェクトキー

CodeCommit

リポジトリ名

ブランチ名

解決方法:

DO次のいずれかの 1 つの以下を実行します。

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

    例: ブランチ名を変更するrelease-branch2nd-release-branch。名前の末尾に変更しないでください。たとえば、release-branch-2

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

    例: ブランチ名を変更するmyRepo/myBranchmyDeployRepo/myDeployBranch。名前の末尾に変更しないでください。たとえば、myRepo/myBranch2

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

あなたの後コンソールでアクション設定を編集する,は、コンソールによって作成された更新された変更検出リソースを受け入れます。

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

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