1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【AWS】Cloud9でLambdaのデバッグが出来なくなった際の対応(Python)

Last updated at Posted at 2020-11-26

私は今までAWS Cloud9を使用してLambda(Python)をデバッグしていましたが、2020年6月頃からAWS Cloud9がアップデートされているみたいで今まで通りデバッグが出来なくなりました。

どうにかこうにかデバッグ出来るように設定しましたので、対応した事を本記事にアウトプットして残したいと思います。

#事象
ある日突然、Cloud9を新規作成してデバッグしようと思ったら下記のようなメッセージが出てデバッグが出来なくなりました

AWS Lambda preview
Python debugging with the AWS Lambda preview UI requires IKPdb to be installed in your code package. 
For more information see: 
https://docs.aws.amazon.com/console/cloud9/lambda-functions-debug

どうやらCloud9内部がアップグレードされている事が原因みたいです
※デフォルトの設定がPython2.6からPython3.6になっていたり、色々変わっていました

上記対応について全然記事を探せなかったので、この記事が他の人の役に立てたらと思います。

#対応

今回の記事はまとめると下記の作業になります

  1. テスト用のLambdaと、Cloud9を作成
  2. LambdaをCloud9へインポート
  3. 「template.yaml」に「CodeUri: .debug/」を追加
  4. インポートしたLambdaディレクトリに移動
  5. 「pip-3.6 install ikp3db --target .」を実行
  6. 「python -m venv venv」を実行
  7. 「venv/bin/pip3.6 install ikp3db」を実行
  8. Cloud9でデバッグが出来るようになります

## 1. テスト用のLambdaと、Cloud9を作成

※LambdaとCloud9の構築手順は参考サイトが多々ありますので省略しております
WS000000.JPG

##2. LambdaをCloud9へインポート
WS000001.JPG

WS000002.JPG
右側の「λ」をクリックして、作成したテスト用Lambdaをインポートします
※事前に作成したokuhira-test-lambdaを選択しました

##3. 「template.yaml」に「CodeUri: .debug/」を追加
image.png

テスト用Lambda(okuhira-test-lambda)をインポートすると、左側のツリーに「okuhira-test-lambda」フォルダが作成されます
「okuhira-test-lambda」フォルダ内にある「template.yaml」ファイルを開きます
上記の図のように、「CodeUri: .debug/」文言を追加します(※保存を忘れない事)

##4. インポートしたLambdaディレクトリに移動
image.png

下側のターミナルウィンドウで「cd okuhira-test-lambda/」と入力し、Lambdaフォルダへ移動します

##5. 「pip-3.6 install ikp3db --target .」を実行
そのままターミナルウィンドウで「pip-3.6 install ikp3db --target .」を実行します

##6. 「python -m venv venv」を実行
そのままターミナルウィンドウで「python -m venv venv」を実行します

##7. 「venv/bin/pip3.6 install ikp3db」を実行
そのままターミナルウィンドウで「venv/bin/pip3.6 install ikp3db」を実行します

※上記5~7を実行の画像
WS000004.JPG

##8. Cloud9でデバッグが出来るようになります
下記の手順でデバッグ出来るようになります。
WS000006 - コピー.JPG

①lambda_function.pyを開く
②ブレークポイントを設定
③Runをクリック
④下記テストのイベント値を入力

{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

⑤デバッグアイコンをクリック

最後に下記のRunをクリックするとデバッグできるよになりました
WS000007 - コピー.JPG

イミディエイトウィンドウもちゃんと機能しています ヨシ!

#注意点
・インスタンススペックが低いとデバッグ実行時に固まってしまう時があるのですが、諦めずに画面更新、デバッグ実行を押す
・デバッグボタンをクリックする時は、Pythonのファイルをアクティブにする(※重要かも)
・今回はPython3.6の確認です、LambdaがPython3.8が対応したのでそれで作成したいのですが、Python3.8はもう少し調査が必要かも
・またバージョンアップされてしまったら対応方法が変わるかもです・・・

Cloud9のアップグレードに対応していくのは面倒くさいのですが、私の場合はローカルPCに開発環境が依存するよりは良いかなと思っています

※最近、2020年10月頃にAmazonLinux2でCloud9が作成できるようになりました、こちらでもデバッグが出来るようになりましたら記事を作成したいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?