Lambdaでデータを蓄積する前に、保存先を用意しておこう
Lambdaでは、取得した為替データや履歴データをS3へ保存して蓄積していく使い方をよくします。
このとき大事なのは、Lambdaが保存するためのS3バケットを先に作っておくこと です。
Lambdaは「保存処理をする側」であり、保存先そのものが自動で必ず作られるわけではありません。
そのため、まずは 受け皿になるS3バケットを事前に作成 しておく必要があります。
今回は、AWSコンソールからS3バケットを作成する手順 をまとめます。
まず結論
S3バケットは先に作っておく
通常は次の流れになります。
- S3バケットを作成する
- Lambda側でそのバケット名を指定する
- Lambdaが実行されるたびに、そのバケットへデータを保存する
つまり、S3は保存庫、Lambdaはその中にデータを入れていく処理 です。
1. S3の「バケットを作成」を開く
AWSマネジメントコンソールで Amazon S3 を開き、
「バケットを作成」 を選びます。
ここで新しい保存先を作っていきます。
2. 一般的な設定を入力する
最初に、バケットの基本情報を設定します。
AWSリージョン
Lambdaと同じリージョンにしておくとわかりやすいです。
アジアパシフィック(東京)ap-northeast-1 になっています。
Lambdaも東京リージョンで動かしているなら、S3も同じ東京にしておくのが管理しやすいです。
バケットタイプ
通常は 「汎用」 を選べば大丈夫です。
バケット名
ここには、他の人と重複しない名前を入れます。
S3のバケット名はグローバルで一意である必要があります。
たとえば次のような名前がわかりやすいです。
fx-mizuho-pairsmizuho-pair-monitor-datamizuho-pair-monitor-apne1
すでに使われている名前だと作成できないので、その場合は少し名前を変えます。
3. オブジェクト所有者は「ACL無効」でOK
次に オブジェクト所有者 の設定があります。
ここは通常、「ACL 無効(推奨)」 のままで大丈夫です。
この設定にしておくと、バケット内のオブジェクト管理がシンプルになります。
個人検証やLambdaからの保存用途では、このままで進めるのがわかりやすいです。
4. パブリックアクセスはブロックしたままにする
「このバケットのブロックパブリックアクセス設定」 では、
「パブリックアクセスをすべてブロック」 をオンのままにしておきます。
通常は一般公開するものではありません。
そのため、外部公開しない設定のまま にしておくのが安全です。
特別な理由がない限り、ここは変更しなくて大丈夫です。
5. バージョニングは最初は無効でもOK
バケットのバージョニング は、同じファイルの過去版も保存できる機能です。
最初の構築段階では、無効のままでもOK です。
まずはシンプルに保存できる状態を作ることを優先します。
あとから
- 上書きミスに備えたい
- 過去版を残したい
という運用にしたくなったら、有効化を検討すれば十分です。
6. タグは必要ならあとで追加する
タグ・オプション は、リソース管理用のメモのようなものです。
たとえば、
- Project = pair-monitor
- Env = dev
のように付けることもできますが、最初は空欄でも問題ありません。
7. デフォルト暗号化はSSE-S3でOK
デフォルトの暗号化 では、
「Amazon S3 マネージドキーを使用したサーバー側の暗号化(SSE-S3)」 を選んでおけば十分です。
これで、保存されるオブジェクトが自動的に暗号化されます。
最初から高度なKMS設定まで入れなくても、
まずは SSE-S3 で始めるとシンプルです。
バケットキー
画面のように 有効 でも問題ありません。
8. オブジェクトロックは無効でOK
オブジェクトロック は、保存したデータを削除・上書きしにくくする特殊な機能です。
まずは 無効 で大丈夫です。
ここを有効にすると運用が重くなることがあるため、最初はシンプルにしておくのがおすすめです。
9. 「バケットを作成」を押す
最後に右下の 「バケットを作成」 を押せば完了です。
これで、Lambdaがデータを保存するための受け皿ができました。
作成後にやること
Lambda側でこのバケット名を使う
S3バケットを作成しただけでは、まだLambdaはその保存先を知りません。
そのため、次にLambda側で このバケット名を指定 します。
よくある形としては、
- Lambdaの環境変数にバケット名を入れる
- コード内でバケット名を設定する
のどちらかです。
つまり、
S3を作る → Lambdaにその名前を教える → 実行時に保存される
という流れです。