メインコンテンツまでスキップ

デプロイしたサンプルアプリの動作確認方

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