デプロイしたサンプルアプリの動作確認方
AWS CloudFormation でデプロイした参考実装アプリケーションの動作確認をする方法を説明します。
AWS上にデプロイしたDBの初期セットアップ
デプロイ済みの VPC には SSM エージェントがインストール済みの踏み台サーバとVPCエンドポイントがデプロイされています。これらの仕組みを利用し、プライベートサブネット内にあるDBとお手元のローカルの PC をポートフォワーディングすることで、ローカルPCから直接AWS上の DB に接続して初期セットアップを行うことが可能です。
以下のコマンドでポートフォワーディングのためのセッションを作成します。
[ローカルPC ~]aws ssm start-session \
--target i-04b29b0517a8e35c6 \
--document-name AWS-StartPortForwardingSessionToRemoteHost \
--region us-east-1 \
--profile <your AWS profile> \ # ssmが実行可能なポリシーがアタッチされたプロファイルが必要
--parameters "{\"host\":[\"db-postgresql-fhe3vubi7t9v.cluster-chptakso6oan.us-east-1.rds.amazonaws.com\"],\"portNumber\":[\"5432\"],\"localPortNumber\":[\"5432\"]}" # 先ほどデプロイしたDBスタックのライターインスタンスのエンドポイント
ローカル PC からの DB 操作用にpgAdmin をダウンロードしてローカルPCにインストールします。 以下手順でpgAdminを作ってアプリが参照するデータベースとテーブルを作成します。
1. サーバーの登録
2. サーバー名の入力
3. ホストの設定
ポートフォワーディングしているのでHostには 127.0.0.1
もしくは localhost
を入力。AWS CloudFormation のデプロイ時に入力した Username と Password を入力します。Maintenance database は既に入力されている postgres
のままで良いです。
4. Databaseの作成
5. Database名の入力
Database名は好きなものを入れてもらって構いません。例ではmydbと入力してSaveをクリックするとDatabaseが出来上がります。
6. テーブルの作成
作成したmydbを選択してQuery Toolを開きます。そこからサンプルアプリで作るテーブルをつくります。
7. テストデータの作成
QueryからCreate Tableとinsertを実行してダミーのデータを作ってください。
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
country VARCHAR(100),
age INTEGER
);
INSERT INTO users (name, country, age) VALUES
('Alice', 'Japan', 30),
('Bob', 'USA', 25),
('Charlie', 'Germany', 35);
SELECT * FROM users;
以上で、ローカルからDBに接続して、アプリケーションから使用するDatabase, Tableの作成が完了です。
API Gateway + Lambdaアプリケーションの動作確認
CloudFormationのOutputタブでAPIエンドポイントを確認しましょう。
GETメソッドでhttps://<your API ID>.execute-api.us-east-1.amazonaws.com/dev/users?id=1
のようにユーザデータを取得するエンドポイントにPostmanなどでリクエストを実行しましょう。すると以下のようにデータベースに登録されたid=1のユーザーのデータが取得できることが分かります。(なお、実際のアプリでユーザIDにautoincrementされたIDを使うのはセキュリティ上避けましょう。攻撃者にIDが推測されやすくなるためです。アプリ側でuuidなどを生成するようにすることをお勧めします。)
次にユーザのデータをAPIから登録してみましょう。POSTメソッドでhttps://<your API ID>.execute-api.us-east-1.amazonaws.com/dev/users
に以下のようなBodyパラメータを指定してリクエストを送って下さい。
{
"name": "horike",
"country": "Japan",
"age": "41"
}
pgAdminからSELECT文で確認すると正しくデータが出来ていることが分かります。
S3 + Lambdaアプリケーションの動作確認
CloudFormationのOutPutでCSVをアップロードするバケットを確認しましょう。
以下コマンドでテスト用のCSVをアップロードして、pgAdminで確認するとCSVのデータが正しくデータベースに格納されていることが確認できます。
[ec2-user ~]aws s3 cp ./src/sample_users.csv s3://myapp-dev-<アカウントID>-upload-csv