App Engine のクイックスタート

このクイックスタートでは、Stackdriver Error Reporting の概要と、以下の方法について説明します。

  • Cloud Shell を使用して Python App Engine アプリケーションをデプロイする。
  • Error Reporting を使用してアプリケーションのエラーを表示する。
  • 通知を送信するように Error Reporting を構成する。

Google Cloud Platform Console の 3 分間のインタラクティブなチュートリアルをご覧ください
(リンク先のページで右側にある [次へ] ボタンをクリックしてください)。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. GCP Console で [リソースの管理] ページに移動し、既存のプロジェクトを選択するか、新しいプロジェクトを作成します。

    [リソースの管理] ページに移動

  3. プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

  4. プロジェクトの Cloud Shell を開きます。起動中は、プロジェクトのダッシュボードの下部に「接続しています」というメッセージが表示されます。

    Cloud Shell を開く

はじめに

このセクションでは、アプリケーションをダウンロードして App Engine にデプロイします。

  1. GitHub プロジェクト python-docs-samples からアプリケーションをダウンロードして構成します。

    1. Cloud Shell にプロジェクトのクローンを作成します。

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples
      

      Git からは次のようなメッセージが返されます。

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples
      Cloning into 'python-docs-samples'...
      
    2. 隔離された Python 環境を作成して有効にします。

      cd python-docs-samples/appengine/standard_python37/hello_world
      virtualenv env -p python3
      source env/bin/activate
      
    3. 依存関係をインストールします。

      pip install -r requirements.txt
      
  2. アプリケーションのインストールと構成が成功したことを確認します。

    1. アプリケーションを実行します。

      python main.py
      
    2. ローカル ウェブページでアプリケーションを表示するには、Cloud Shell に表示されているリンクをクリックします。ウェブページには「Hello World!」と表示されます。

    3. 実行中のアプリケーションを停止するには、Cloud Shell で Ctrl-C キーを押します。

  3. アプリケーションを App Engine にアップロードします。

    gcloud app deploy
    

    デプロイのリージョンを選択するよう求めるプロンプトが表示されたら、近くのリージョンを選択します。続行を確認するメッセージが表示されたら、「Y」と入力します。しばらくすると、アップロードが完了します。

  4. Cloud Shell で次のコマンドを実行して、ブラウザでアプリケーションを表示します。

    gcloud app browse
    

    Cloud SDK でブラウザを検出できない場合は、上記のコマンドを実行すると、エラー メッセージとリンクが表示されます。表示されたリンクをクリックしてください。「Hello, World!」というメッセージ がブラウザに表示されます。

エラーを発生させる

次の手順では、Error Reporting で捕捉して表示するエラーを作成します。

  1. main.py を編集して、

    return 'Hello World!`
    

    を次のように変更します。

    return 'Hello World!' + 1000
    

    このように変更して実行すると、文字列と整数を連結することは不正な処理であるため、Python TypeError 例外が発生します。

  2. 変更したアプリケーションを App Engine にアップロードします。

    gcloud app deploy
    
  3. 実行中のアプリケーションが含まれるブラウザタブに戻り、ページを再読み込みします。上記の変更により、ページでは「Hello, World!」とは表示されず、エラー メッセージが表示されます。

    Internal Server Error
    The server encountered an internal error and was unable to complete your
    request. Either the server is overloaded or there is an error in the
    application.
    

    このメッセージが表示されない場合は、しばらく待ってからもう一度再読み込みしてください。新しいバージョンが有効になるまでに、しばらく時間がかかる場合があります。

Error Reporting でのエラー表示

ウェブページに表示されるエラー メッセージは、問題を解決するのに十分な詳細情報を提供しないため、あまり役には立ちません。Error Reporting を使用すると、エラーやその発生回数に関する詳細な情報を取得できます。

  1. Error Reporting に移動します。

    Error Reporting に移動

    Error Reporting ダッシュボードには、検出された各エラーの概要と各エラーの発生数が表示されます。Error Reporting のデフォルトでは、エラーリストが 5 秒ごとに自動で再読み込みされますが、すぐに再読み込みを適用するには [自動再読み込み] をクリックします。

    このクイックスタートでは、ダッシュボードに "TypeError: can only concatenate str (not "int") to str" という説明付きの 1 つのエラーが表示されます。エラーが表示されない場合は、しばらく待ってからページを更新してください。

  2. ブラウザでアプリケーションを再読み込みして、同じエラーを再度生成します。

    新しいエラーのスタック トレースは最初のエラーに似ているので、Error Reporting はそれらをまとめて処理し、[発生回数] の数値と時間のグラフを更新します。

  3. エラーに関して提供されるすべての情報(ソースコードへのリンクなど)を含むエラー詳細ページを表示するには、エラー名をクリックします。

通知の構成

新しい種類のエラーが発生したときに通知を送信するように Error Reporting を構成できます。この場合、既存のエラーと同じエラーが新たに発生しても通知は送信されません。

  1. Error Reporting に移動します。

    Error Reporting に移動

  2. メール通知を有効にするには、その他アイコン more_vert をクリックし、プルダウン リストから [プロジェクトで新しいエラーが検出されたときの通知をオンにする] を選択します。

  3. main.py で、

     return 'Hello World!` + 1000
    

    を次のように変更します。

     return 'Hello World!'.punctuate()
    

    このように変更して実行すると、属性 punctuate() が存在しないため、Python AttributeError 例外が発生します。

  4. 変更されたファイルを App Engine にアップロードします。

     gcloud app deploy
    
  5. ブラウザでアプリケーションを再読み込みして、新しいエラーを生成します。

    • ブラウザには「Internal Server Error」というメッセージが表示されます。

    • Error Reporting ダッシュボードには、"AttributeError: 'str' object has no attribute 'punctuate' という説明付きのエラーが表示されます。

    • メールには新しい Stackdriver 通知が含まれており、エラーに関する詳細情報が記載されています。次のような情報が含まれています。

      • プロジェクト ID
      • エラーの説明(この場合は "AttributeError: 'str' object has no attribute 'punctuate' が含まれる)
      • サービス
      • アプリケーションのバージョン

クリーンアップ

このチュートリアルで使用したリソースについて GCP アカウントに課金されないようにするには:

  1. GCP Console で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Stackdriver Error Reporting ドキュメント