本記事はS3からLambda(java)経由で、EC2上のDBへデータをINSERTするまでの備忘録です。(2018/09時点)
初投稿なので生暖かい目で見てください。(ご指摘など大歓迎です。コメントお願いします。)
1 : AWS編
2 : Java編[前編]
3 : Java編[後編]
3.5 : Java編[続]
IAMユーザの作成
AWS マネジメントコンソールにログインし、IAMのダッシュボードを開く。
画面左のナビゲーションバーから「ユーザ」を選択。
画面左上の [ユーザを追加] からS3アクセス用のユーザを作成する。
後に使用するため、"アクセスの種類"では "プログラムによるアクセス" にチェックを入れておく。
[次のステップ:アクセス権限] でアクセス権限の設定用ページに飛ぶので、右のブロック[既存のポリシーを直接アタッチ]を選択し、
"S3"でポリシーをフィルタリングする。
いくつかリストアップされるので、今回はフルアクセス(read/wirte)用の権限にチェックを入れる。
境界の設定は行わないので次のステップへ。
確認画面が表示されるので、ユーザ名や管理ポリシーに誤りがないことを確認したら、画面中央下部の[ユーザの作成]でIAMロールを付与されたユーザの作成を完了する。
※ 結果の画面が表示されるので、"アクセスキーID"と"シークレットアクセスキー"をメモしておく。CSVで保存してもOK
VPCとサブネットの作成
EC2インスタンスを所属させるためのVPCを作成しましょう。
※デフォルトでも問題ないと思いますので、作成をスキップしたい場合は次の手順 "EC2インスタンスの作成" へどうぞ。
VPC コンソールにアクセスします。
画面上部の[VPCの作成]を選択するとポップアップが表示されるので、VPC名(任意)とIPv4 CIDR ブロックを入力。
必要なインスタンス数に応じてアドレス範囲を決定しましょう。
VPCを作成したら、VPC内にサブネットを作成します。
画面左のナビゲーションバーから"サブネット"を選択し、上部の[サブネットを作成]をクリック。
サブネット名(任意)を入力し、先ほど作成したVPCを選択し、サブネットを作成。
※アベイラビリティゾーンはここでは解説しないので"指定なし"とします。
※IPv4 CIDR ブロックに関しては、特に別のサブネットを用意する必要が無い場合、VPCと同じものにしてしまいましょう。
インターネットゲートウェイの作成とVPCへのアタッチ
次に、作成したEC2インスタンスに外部から接続するためのSSHの入り口を作成。
VPCコンソールのナビゲーションバーから、"インターネットゲートウェイ"を選択。
同じく画面上部から[インターネットゲートウェイの作成]をクリックしゲートウェイを作成する(Nameタグは任意)。
作成しただけのゲートウェイはVPCに紐づいていない(アタッチされていない)ので、
[アクション]->"VPCにアタッチ"から先ほど作成した test_vpcにアタッチする。
VPCへのアタッチが完了したら、画面左のナビゲーションバーから"ルートテーブル"を選択。
作成したVPC(test_vpc)を選択すると、画面下部にVPCのルート情報の詳細が表示されるので、
[ルート]タブを選択した状態で[編集]をクリックし、ルートの追加を行う。
送信先を 0.0.0.0/0 とし、ターゲットにカーソルを合わせると先ほどのゲートウェイIDが表示されるので、クリック。
[保存]をクリックし、編集を確定。
※作成したサブネットが関連づけられていない場合は、別途[サブネットの関連付け]タブから関連付けを行う。
これでVPC領域の設定は完了。
EC2インスタンスの作成
EC2のダッシュボードから[インスタンスの作成]を選択します。
基本的には画面通りポチポチしていくだけですが、今回のスペックは以下の通りです。
インスタンスタイプ:t2.medium
OS | disk | File System | vCPU | Mem |
---|---|---|---|---|
RHEL 7.5 | 10GB | xfs | 2コア | 4GB |
DB は SQL Server(Express)をインストールしました。
S3バケットの作成
S3のマネジメントコンソールに接続後、画面左上の[+バケットを作成する]をクリック。
ウィザード通りに以下のように進めていく。
バケット名は一意である必要がある。 今回はウィザードの②、③は全てデフォルトのままで進めます。 ④の確認画面で入力項目に間違いが無いことを確認したら[バケットを作成]をクリック。バケットが正常に作成されていることを確認します。次に、画面上部の[アップロード]ボタンで適当なファイルをアップロードしてみましょう。
ここでは以下のようなCSVを作成してアップロードしています。
Id,Name,Age
1001,Dean,28
1002,Sam,25
1003,John,51
1004,Bobby,54
1005,Meg,26
次回はLambdaファンクションの実行により、このアップロードしたファイルの情報を取得してみたいと思います。
まとめ
~~(キャプチャ撮り忘れて)~~EC2の部分が手抜きになってしまいました。m(_ _)m
java編も近日中に掲載予定です。