一般的なトラブルシューティングの問題
トピック
一般的なトラブルシューティングのチェックリスト
次のチェックリストを使用して、失敗したデプロイをトラブルシューティングできます。
-
デプロイが失敗した理由を確認するには、「CodeDeploy デプロイの詳細を表示する 」および「View Instance Details」を参照してください。原因を特定できない場合は、このチェックリストの項目を確認します。
-
インスタンスが正しく設定されているかどうかを確認します。
-
インスタンスは、指定された EC2 キーペアで起動されましたか? 詳細については、「Amazon EC2 ユーザーガイド」の「EC2 キーペア」を参照してください。
-
正しい IAM インスタンスプロファイルがインスタンスにアタッチされていますか? 詳細については、「CodeDeploy と共に動作するように Amazon EC2 インスタンスを構成します」および「ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する」を参照してください。
-
インスタンスにタグが付けられていますか? 詳細については、「Amazon EC2 ユーザーガイド」の「コンソールでのタグの操作」を参照してください。
-
CodeDeploy エージェントは、インスタンスにインストール後、更新、実行されていますか? 詳細については、「CodeDeploy エージェントのオペレーションの管理」を参照してください。インストールされているエージェントのバージョンを確認するには、「CodeDeploy エージェントのバージョンを特定します。」を参照してください。
-
-
アプリケーションとデプロイグループの設定を確認します。
-
アプリケーション設定を確認するには、「CodeDeploy を使用してアプリケーション詳細を表示する」を参照してください。
-
デプロイグループの設定を確認するには、「CodeDeploy を使用したデプロイグループの詳細の表示」を参照してください。
-
-
アプリケーションリビジョンが正しく設定されていることを確認します
-
AppSpec ファイルの形式を確認します。詳細については、「CodeDeploy 用のアプリケーション仕様ファイルをリビジョンに追加」および「CodeDeploy AppSpec ファイルのリファレンス」を参照してください。
-
GitHub レポジトリで Amazon S3 バケットを調べ、アプリケーションリビジョンが予期されている場所にあることを確認します。
-
CodeDeploy アプリケーションリビジョンの詳細を調べ、正しく登録されていることを確認します。詳細については、「CodeDeploy を使用したアプリケーションリビジョン詳細の表示」を参照してください。
-
Amazon S3 からデプロイする場合は、Amazon S3 バケットをチェックし、アプリケーションリビジョンをダウンロードするアクセス許可が CodeDeploy に付与されていることを確認します。バケットポリシーの詳細については、デプロイの前提条件 を参照してください。
-
GitHub からデプロイする場合、GitHub リポジトリをチェックし、アプリケーションリビジョンをダウンロードするアクセス許可が CodeDeploy に付与されていることを確認します。詳細については、「CodeDeploy でデプロイを作成する」および「CodeDeploy のアプリケーションを使用した GitHub の認証」を参照してください。
-
-
サービスロールが正しく設定されているかどうかを確認します。詳細については、「ステップ 2: CodeDeployのサービスのロールを作成する」を参照してください。
-
「CodeDeploy の開始方法」のステップに従って次の操作を行ったことを確認します。
-
適切なアクセス許可を持つユーザーをプロビジョニングしました。
-
AWS CLI をインストールまたはアップグレードして設定する。
-
IAM インスタンスプロファイルとサービスロールを作成する。
詳細については、「AWS CodeDeploy のためのアイデンティティおよびアクセス管理 」を参照してください。
-
-
AWS CLI バージョン 1.6.1 以降を使用していることを確認する。インストールしたバージョンを確認するには、aws --version を呼び出します。
それでも失敗したデプロイをトラブルシューティングできない場合は、このトピックの他の問題を確認します。
CodeDeploy デプロイメントリソースは、一部の AWS リージョンでのみサポートされています。
AWS CLI または CodeDeploy コンソールからアプリケーション、デプロイグループ、インスタンス、またはその他のデプロイリソースが表示されない、またはアクセスできない場合は、「AWS 全般のリファレンス」の「リージョンエンドポイント」にリストされている AWS リージョンのいずれかを参照していることを確認してください。
CodeDeploy のデプロイで使用される EC2 インスタンスと Amazon EC2 Auto Scaling グループは、これらのいずれかの AWS リージョンで起動し、作成する必要があります。
AWS CLI を使用している場合は、aws configure から AWS CLI コマンドを実行します。次に、デフォルトの AWS リージョンを表示および設定できます。
CodeDeploy コンソールを使用している場合は、ナビゲーションバーのリージョンセレクタから、サポートされているいずれかの AWS リージョンを選択します。
重要
中国 (北京) リージョンまたは中国 (寧夏)でサービスを使用するには、そのリージョンのアカウントと認証情報が必要です。他の AWS リージョンのアカウントや認証情報は、北京と寧夏リージョンでは機能せず、その逆もまた同様です。
CodeDeploy リソースキットのバケット名や CodeDeploy エージェントのインストール手順など、中国リージョン向けのいくつかのリソースに関する情報は、今回の「CodeDeploy ユーザーガイド」には含まれていません。
詳細については:
このガイドの手順が CodeDeploy コンソールと一致しない
このガイドの手順は、新しいコンソールデザインで記述されています。古いバージョンのコンソールを使用した場合、古い概念が反映され、本ガイドの基本的な手順がそのまま適用されます。新しいコンソールのヘルプにアクセスするには、情報アイコンを選択します。
必要な IAM ロールを取得できない
AWS CloudFormation スタックの一部として作成された IAM インスタンスプロファイルまたはサービスロールに依存している場合は、スタックを削除すると、すべての IAM ロールも削除されます。これが、IAM ロールが IAM コンソールに表示されなくなり、CodeDeploy が予期どおり動作しなくなる理由と考えられます。この問題を解決するには、削除された IAM ロールを再作成する必要があります。
何らかのテキストエディタを使用して AppSpec ファイルとシェルスクリプトを作成すると、デプロイが失敗する場合がある
テキストエディタによっては、不適合で非表示の文字がファイルに含まれる場合があります。テキストエディタを使用して AppSpec ファイルやシェルスクリプトファイルを作成または変更し、Amazon Linux、Ubuntu Server、または RHEL インスタンスで実行する場合、これらのファイルに依存するデプロイは失敗する可能性があります。CodeDeploy がこれらのファイルをデプロイ中に使用したときに、このような文字が存在すると、トラブルシューティングが困難な AppSpec ファイルの検証エラーにつながり、スクリプトの実行が失敗する可能性があります。
CodeDeploy コンソールのデプロイのイベント詳細ページで、[ログを表示する] を選択します。(または、AWS CLI を使って get-deployment-instance コマンドを呼び出します。) invalid
character、command not found、file not found のようなエラーを探します。
この問題に対処するには、次のことをお勧めします。
-
改行 (
^M文字) などの非表示の文字を AppSpec ファイルとシェルスクリプトファイルに含めるテキストエディタは使用しない。 -
AppSpec ファイルやシェルスクリプトファイルで改行など非表示の文字を表示するテキストエディタを使用して、対象となる可能性のある文字を見つけ、削除できるようにする。このようなタイプのテキストエディタの例については、インターネットで「改行を表示するテキストエディタ」を検索します。
-
Amazon Linux、Ubuntu サーバー、または RHEL インスタンスで動作するテキストエディタを使用して、Amazon Linux、Ubuntu サーバー、または RHEL インスタンスで動作するシェルスクリプトファイルを作成してください。このようなタイプのテキストエディタの例については、インターネットで「Linux シェルスクリプトエディタ」を検索します。
-
Windows または macOS でテキストエディタを使用して、Amazon Linux、Ubuntu Server、 または RHEL インスタンスで実行するシェルスクリプトファイルを作成する場合は、Windows または macOS 形式のテキストを Unix 形式に変換するプログラムまたはユーティリティを使用する。このようなプログラムとユーティリティの例については、インターネットで「DOS から UNIX へ」または「Mac から UNIX へ」を検索します。必ず、ターゲットのオペレーティングシステムで、変換されたシェルスクリプトファイルをテストします。
macOS の Finder を使用してアプリケーションリビジョンをバンドルすると、デプロイが失敗することがある
Mac の Finder グラフィカルユーザーインタフェース (GUI) アプリケーションを使用して、AppSpec ファイルおよび関連ファイルとスクリプトをアプリケーションリビジョンのアーカイブ (.zip) ファイルにバンドル (zip) すると、デプロイが失敗する場合があります。これは、Finder が .zip ファイルに中間の __MACOSX フォルダを作成し、そこにコンポーネントファイルを配置するためです。CodeDeploy はコンポーネントファイルを見つけることができないため、デプロイは失敗します。
この問題に対応するには、AWS CLI を使用して push コマンドを呼び出すことをお勧めします。これにより、コンポーネントファイルは所定の構造に zip 形式で圧縮されます。または、GUI の代わりにターミナルを使用してコンポーネントファイルを zip 圧縮できます。ターミナルでは、中間の __MACOSX フォルダは作成されません。