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

私は今まで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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536501/4fd92d59-f08a-3ecb-afac-c9a47b360bdc.jpeg)

##2. LambdaをCloud9へインポート
![WS000001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536501/07c708ed-9a00-732b-2586-fad5694cfa87.jpeg)

![WS000002.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536501/8101119b-43c4-1e02-6976-5e8e112d72aa.jpeg)
右側の「λ」をクリックして、作成したテスト用Lambdaをインポートします
※事前に作成したokuhira-test-lambdaを選択しました

##3. 「template.yaml」に「CodeUri: .debug/」を追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682071/30d1f330-58c7-b761-6a4e-3921db61a0b3.png)


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

##4. インポートしたLambdaディレクトリに移動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682071/f3e30024-16b7-67cf-8fb0-92db24c8d839.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536501/4b85e548-5622-cd4c-a63a-1becdb670916.jpeg)


##8. Cloud9でデバッグが出来るようになります
下記の手順でデバッグ出来るようになります。
![WS000006 - コピー.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536501/acc3c028-305a-3fae-e0db-0956d3d40845.jpeg)

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

```
{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}
```
⑤デバッグアイコンをクリック


最後に下記のRunをクリックするとデバッグできるよになりました
![WS000007 - コピー.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536501/6a1f4326-502c-bcdb-1beb-d33977b12a09.jpeg)

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

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

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

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