2023年7月5日水曜日

AWS Lambda(3) : Lambdaで2引数の和を計算する関数を作成

 AWS RDSのDBに情報を入れるためのLambda関数を準備します。lamdaはデータの入出力は、json形式で行われます。

[lamdaに渡されるデータ例]

[Lamdaから返すデータ例]

(1) Lambdaで関数を作成します。

関数名:sum-function、ランタイム:python 3.10



Deployボタンを押して、変更を反映させます。
Testを実行します。数値にはクオートは入らないので注意してください。

テストを実行します。

(2) API gatewayを設定しAPI化
API化:あるURL(AWS)にPOSTされたら、実行するようにしていきます。API Gatewayを開いて、REST APIを作成します。


POSTメソッドを作成します。
Lamda実行権限を与える はOKを押します。
APIをデプロイします。


(3) Postmanからテスト
Postmanをインストールしておきます。https://www.postman.com/
試すだけならアカウントは要りません。
Postmanで内容を入れてテストを行います。
値が返ってきていれば、これでAPIが作成できました。数値を変更しても動くことを確認してください。

AWS Lambda(2) : Lambdaを使ってRDSに情報を格納するDB準備

 Lambdaを使って処理した情報をRDSに格納していくために、AWS RDSにDBを立てて準備をしていきます。

(1) RDSにDBサーバを立てておく

AWS Academyの「データベース設定(モジュール中のデモ) : デモンストレーション [Demo] - Amazon RDS」を参考にDBサーバを立てます(MySQL互換性のAurora)。public アクセスを許可し、その後は基本的に指示通りに立てておきます。接続ができるように、セキュリティグループのインバウンドに入っているものを一旦削除して、改めて3306ポートが通るように設定しておくと良さそうです。

(2) AWS CloudShellで接続

ページ上の方から、AWS CloudShellを起動して、DBに接続していきます。接続には、以下のページを参考にします。ライターインスタンスに接続します。

MySQL データベースエンジンを実行している DB インスタンスへの接続

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html

エンドポイントを確認して、コマンドで接続していきます。
[cloudshell-user@ip-10-2-48-179 ~]$ mysql -h エンドポイント名 -P 3306 -u admin -p
無事ログインできると、次の画面になります。

(3) テーブルの作成
ログインしたら、起動時に作成した「database_1」というデータベースがあるかを確認します。

このデータベースの中に、「sumfunction」というテーブルを作成します。
CREATE TABLE sumfunction (
  id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
  data1 double NOT NULL,
  data2 double NOT NULL,
 result double NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

テーブルも作成して、DBの準備ができました。

このテーブルにLambdaから処理した情報を入れていきます。その前に、SQL文でレコードを入れて確認をしてみます。

insert into sumfunction (data1, data2, result) values(2.0, 4.2, 6.2);