Edited at

Lambda@javaでS3オブジェクトをEC2のDBにINSERTするまで:AWS編

More than 1 year has passed since last update.

本記事はS3からLambda(java)経由で、EC2上のDBへデータをINSERTするまでの備忘録です。(2018/09時点)

初投稿なので生暖かい目で見てください。(ご指摘など大歓迎です。コメントお願いします。)

1 : AWS編

2 : Java編[前編]

3 : Java編[後編]

3.5 : Java編[続]


IAMユーザの作成

AWS マネジメントコンソールにログインし、IAMのダッシュボードを開く。

画面左のナビゲーションバーから「ユーザ」を選択。

iam_01.png

画面左上の [ユーザを追加] からS3アクセス用のユーザを作成する。

iam_02.png

後に使用するため、"アクセスの種類"では "プログラムによるアクセス" にチェックを入れておく。

[次のステップ:アクセス権限] でアクセス権限の設定用ページに飛ぶので、右のブロック[既存のポリシーを直接アタッチ]を選択し、

"S3"でポリシーをフィルタリングする。

iam_03.png

いくつかリストアップされるので、今回はフルアクセス(read/wirte)用の権限にチェックを入れる。

境界の設定は行わないので次のステップへ。

確認画面が表示されるので、ユーザ名や管理ポリシーに誤りがないことを確認したら、画面中央下部の[ユーザの作成]でIAMロールを付与されたユーザの作成を完了する。

※ 結果の画面が表示されるので、"アクセスキーID"と"シークレットアクセスキー"をメモしておく。CSVで保存してもOK

iam_04.png


VPCとサブネットの作成

EC2インスタンスを所属させるためのVPCを作成しましょう。

※デフォルトでも問題ないと思いますので、作成をスキップしたい場合は次の手順 "EC2インスタンスの作成" へどうぞ。

VPC コンソールにアクセスします。

画面上部の[VPCの作成]を選択するとポップアップが表示されるので、VPC名(任意)とIPv4 CIDR ブロックを入力。

vpc_01.png

必要なインスタンス数に応じてアドレス範囲を決定しましょう。

VPCを作成したら、VPC内にサブネットを作成します。

画面左のナビゲーションバーから"サブネット"を選択し、上部の[サブネットを作成]をクリック。

サブネット名(任意)を入力し、先ほど作成したVPCを選択し、サブネットを作成。

※アベイラビリティゾーンはここでは解説しないので"指定なし"とします。

※IPv4 CIDR ブロックに関しては、特に別のサブネットを用意する必要が無い場合、VPCと同じものにしてしまいましょう。

subnet_01.png


インターネットゲートウェイの作成とVPCへのアタッチ

次に、作成したEC2インスタンスに外部から接続するためのSSHの入り口を作成。

VPCコンソールのナビゲーションバーから、"インターネットゲートウェイ"を選択。

同じく画面上部から[インターネットゲートウェイの作成]をクリックしゲートウェイを作成する(Nameタグは任意)。

作成しただけのゲートウェイはVPCに紐づいていない(アタッチされていない)ので、

[アクション]->"VPCにアタッチ"から先ほど作成した test_vpcにアタッチする。

gw_01.png

VPCへのアタッチが完了したら、画面左のナビゲーションバーから"ルートテーブル"を選択。

作成したVPC(test_vpc)を選択すると、画面下部にVPCのルート情報の詳細が表示されるので、

[ルート]タブを選択した状態で[編集]をクリックし、ルートの追加を行う。

送信先を 0.0.0.0/0 とし、ターゲットにカーソルを合わせると先ほどのゲートウェイIDが表示されるので、クリック。

rtb_01.png

[保存]をクリックし、編集を確定。

※作成したサブネットが関連づけられていない場合は、別途[サブネットの関連付け]タブから関連付けを行う。

これでVPC領域の設定は完了。


EC2インスタンスの作成

EC2のダッシュボードから[インスタンスの作成]を選択します。

基本的には画面通りポチポチしていくだけですが、今回のスペックは以下の通りです。

インスタンスタイプ:t2.medium

OS
disk
File System
vCPU
Mem

RHEL 7.5
10GB
xfs
2コア
4GB

DB は SQL Server(Express)をインストールしました。


S3バケットの作成

S3のマネジメントコンソールに接続後、画面左上の[+バケットを作成する]をクリック。

ウィザード通りに以下のように進めていく。

S3_01.png

バケット名は一意である必要がある。

今回はウィザードの②、③は全てデフォルトのままで進めます。

S3_04.png

④の確認画面で入力項目に間違いが無いことを確認したら[バケットを作成]をクリック。バケットが正常に作成されていることを確認します。

次に、画面上部の[アップロード]ボタンで適当なファイルをアップロードしてみましょう。

ここでは以下のようなCSVを作成してアップロードしています。


test_people.csv

Id,Name,Age

1001,Dean,28
1002,Sam,25
1003,John,51
1004,Bobby,54
1005,Meg,26

csv_uploaded.png

次回はLambdaファンクションの実行により、このアップロードしたファイルの情報を取得してみたいと思います。


まとめ

(キャプチャ撮り忘れて)EC2の部分が手抜きになってしまいました。m(_ _)m

java編も近日中に掲載予定です。