Help us understand the problem. What is going on with this article?

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編も近日中に掲載予定です。

yut0201
毎月お茶が届く会員です。モルモットを2匹飼育中。 情報発信はAWSメインです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away