見出し画像

AWSLambdaを使用してRDSからCSVを取得してメール送信

1.はじめに

はじめまして!株式会社TechoesインフラチームのYです!
今年の4月で2年目を迎える初心者のクラウドエンジニアです。
今回からTechoesの採用強化、学習内容のアウトプットを目的としてQiitaで技術ブログを書いていこうと思います。
第1回目として最近学習したAWSLambdaを使ってRDSからCSVを取得してメール送信する手順を投稿します。

2.前提

  • 言語:Python 3.10

  • ライブラリ:pymysql
    ※layerとしてS3に保管

  • RDS:Aurora MySQL

  • RDSの認証情報はSecretManagerから取得

  • メール送信にはSESを使用

3. CFNテンプレート

Lambda関数を作成・管理するテンプレートです。
レイヤーはあらかじめS3に保管しておいたものを使用します。

AWSLambdaを使用してRDSからCSVを取得してメール送信 #Python - Qiita

4. Python

AWSLambdaを使用してRDSからCSVを取得してメール送信 #Python - Qiita

5. 細かい部分の言語化

- LambdaのVPC設定について

RDSはVPC内に配置されるサービス。LambdaはVPC外に配置されるサービス。LambdaからRDSにアクセスするためにはLambdaにVPCを割り当てる必要があるため、ポリシーとLambdaでセキュリティグループと、サブネットの設定が必要。

- メールの構造

メールの構造をMimeMultipartを作成して設定する。
CCの部分はfor文を使うことによってlistの要素が順番に代入され、複数のアドレスに送信できる。

- RDSからのデータ取り出し処理

AWSLambdaを使用してRDSからCSVを取得してメール送信 #Python - Qiita

connectionのcursor()メソッドを使用してデータをSQLに則り処理する。
fetchall()を使用しているので該当するデータをすべて取り出す。

- CSVファイルの保存

取得した値をstringに変換し、カンマを追加。
これをcsv_dataに格納。
ヘッダ行として列の名前を書き込む。
dataの各行の値をCSVファイルに書き込む。

- CSVファイルの添付

メソッドが呼び出されると保存されているcsvファイルをMIME形式で構築してメールに添付する。

6. 最後に

自分では理解しているつもりでも、いざ言語化してみると難しいと感じました。
まだまだ理解が浅い部分もあるので記事に対して気になる点がありましたら教えていただけると幸いです。

以上、株式会社TechoesインフラチームのYでした!

この記事が気に入ったらサポートをしてみませんか?