AWS Lambda(Python)を使うならのまとめ

## はじめに
AWS Lambda(Python)を使うならやったほうが良いことをまとめてみた。
まだ試していないものも含む。随時更新。

## 公式
* [Operating Lambda: パフォーマンスの最適化 – Part 1](https://aws.amazon.com/jp/blogs/news/operating-lambda-performance-optimization-part-1/)
* [Operating Lambda: パフォーマンスの最適化 – Part 2](https://aws.amazon.com/jp/blogs/news/operating-lambda-performance-optimization-part-2/)
* [Operating Lambda: パフォーマンスの最適化 – Part 3](https://aws.amazon.com/jp/blogs/news/operating-lambda-performance-optimization-part-3/)

## Lambdaを理解
- [AWS Lambdaの裏側をなるだけ詳しく解説してみる](https://www.keisuke69.net/entry/2020/09/29/131203)


## やったほうがよさそうなこと & 関連便利機能
- [（まずはこれ）AWSのアカウント開設後にすべき事をまとめてみた](https://dev.classmethod.jp/articles/after_get_aws_account/)


- [~~Jeffyフレームワークの適用~~ ⇒LambdaではPowertoolsのほうが最適っぽいので削除
~~トレースやロギングの共通処理の実装を簡略化できる。~~](
https://dev.classmethod.jp/cloud/app-fw-for-lamdba-jeffy-released/)

- [AWS Lambda Powertoolsの利用](https://dev.classmethod.jp/articles/aws-lambda-powertools-python/)
Logging、Tracing、Metrics、Utilitiesが利用できる。


- [AWS Lambda Destinationsの適用](https://qiita.com/kojiisd/items/efcb2ac3d5cc176534ba)
Lambdaの実行結果に応じて次の処理を実施することができる。


- [AWS Lambda Layersの適用](https://qiita.com/t_okkan/items/394a15577bd1aad46ec3)
よく使うライブラリを共通化できる。


- [もうわたし苦労しない。。 Pythonの標準ライブラリを使ってマルチプロセス。](https://qiita.com/kenmaro/items/69fdd84e18e793a21790)
- [複数の CPU/GPU にかけて並列化して、エッジでの深層学習の推論を高速化する](https://aws.amazon.com/jp/blogs/news/parallelizing-across-multiple-cpu-gpus-to-speed-up-deep-learning-inference-at-the-edge/)
重い処理を並列処理する。


- [AWS Lambda Power Tuningの適用](https://dev.classmethod.jp/articles/lumigo-cli-powertune-lambda/)
- [Lambdaのメモリ割り当てを自動で最適化！！AWS Lambda Power Tuning](https://dev.classmethod.jp/cloud/aws-lambda-power-tuning/)
メモリ割り当て最適化する。


- [AWS Lambdaのコスト削減](https://dev.classmethod.jp/cloud/aws/lamba-profile-with-qcachegrind/)
プロファイルツールの導入する。


- [Elastic File System](https://qiita.com/nasuvitz/items/02c4d762ebf3a5a32b96)
1つまたは複数の同時実行される Lambda 関数、従来から対応している EC2 と Fargate を跨ってデータ (ファイル) を永続的に保存および共有


- [PythonでAWS Secrets ManagerからAPIキーを取得するときのちょっとしたポイント](https://dev.classmethod.jp/articles/secrets_manager_tips_get_api_key/)


- [Lambda + RDS 接続にRDS Proxyを使ってみた](https://qiita.com/maika_kamada/items/6eb6a40c17b4b8995acb)
RDSを使うなら。

- [VPC 外の Lambda 関数を作らせない！ AWS Lambda に VPC 設定に関する IAM 条件キーが追加されました！](https://dev.classmethod.jp/articles/aws-lambda-provides-iam-condition-keys-vpc-settings/)
「特定のサブネットにのみ関連づけ可能」「特定の SecuriryGroup は指定不可」「 VPC に関連づける場合のみ Lambda 関数の作成可能」の制御が可能になった。


- [Lambdaのランタイムにカスタムランタイム on Amazon Linux2が利用できるようになりました](https://dev.classmethod.jp/articles/lambda-custom-runtime-support-al2/)
カスタムランタイムの実行基盤はAmazon Linux一択だったが、今回からAmazon Linux2の上で任意のコードが実行可能になった


- [Lambdaは無いけど残り続けているCloudWatch Logsのロググループ一覧を取得する](https://dev.classmethod.jp/articles/check-lambda-cloudwatch-logs-different/)
Lambdaを削除したときlogが残りがちなので整理する用


- [Lambdaの性能把握、比較が一瞬で! CloudWatch Lambda InsightsがGAになりました](https://dev.classmethod.jp/articles/cloudwatch-lambda-insights-ga/)
Lambda 関数からの詳細なパフォーマンスメトリクス、ログ、メタデータの収集を開始できる


- [AWS Compute Optimizer で Lambda 関数の最適なメモリサイズがレコメンド可能になりました！](https://dev.classmethod.jp/articles/aws-compute-optimizer-delivers-recommendations-aws-lambda-functions/)

- [AWS Lambdaでのロギングのベストプラクティス](https://qiita.com/Marimari440/items/0c18dac08f267248d694)


# 便利な小ネタ
- [【小ネタ】SlackのスラッシュコマンドからLambdaを実行させる方法](https://dev.classmethod.jp/articles/lambda-api-slack-command/)


## 関連
- pipの最新化(buildspec.ymlに追加）

```
# pipでアップデートがあるパッケージの一覧を表示
pip list -o
# コマンドで一括アップデート
pip list -o | tail -n +3 | awk '{ print $1 }' | xargs pip install -U
```

- [lambdaチューニング記事](https://dev.classmethod.jp/articles/remote-py-2-lambda-tuning/)