KAROUSHI -Japanese Engineer Blog-

KAROUSHI -Japanese Engineer Blog-

Web、ネットワーク構築関連で仕事している、器用貧乏エンジニア。最近はAWS関連の勉強をしています。

API Gateway, Lambda, S3を使用して、ファイルを取得する処理をノンサーバで実装する~その1~

AWS流行ってるね!ノンサーバって響きがかっこいいー!でも何したらいいか分からん! 
という感じなエンジニアです。(笑)
今回は3回に分けて

API Gateway→イベントキャッチしてlambdaからS3オブジェクトを取得する処理を実行

を実装してみます。

s3の設定

S3に新しいバケットを作成する

まずはS3に新しいバケットを作成します。
サービスから[S3]を押下します。

f:id:jainders:20160602204935j:plain

 

[バケットを作成]を押下します。

f:id:jainders:20160602204956j:plain

以下を設定して[作成]を押下します。
バケット名:teset.test.test.3(任意)※1 
リージョン:Oregon(任意)※2

※1 バケット名は一意に設定する必要があります。他ユーザが既に作成しているバケットは作ることができません。
※2 リージョンにより料金設定が異なります。

f:id:jainders:20160602205024j:plain


これで新しいバケットが作成されました。

バケットにポリシーを設定する

では次にバケットポリシーを設定して、オブジェクトを取得できるようにしましょう。
以下のようにバケット名が一覧で表示されているので、バケット名[test.test.test.3]を押下します。

f:id:jainders:20160602205025j:plain

右上にある[プロパティ]を押下すると、右からウィンドウが出てきます。
[アクセス許可][バケットポリシーの追加]を押下します。

f:id:jainders:20160602205026j:plain

バケットポリシーエディターがポップアップして表示されるので以下を追記して[保存]を押下します。

バケットポリシー

{
  "Version": "2012-10-17",
  "Statement": [
  {
    "Sid": "AddPerm",
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::test.test.test.3/*"
  }
  ]
}

f:id:jainders:20160602205028j:plain

これでバケットポリシーの設定は完了です。
今回設定したポリシーは

test.test.test.3配下に存在するオブジェクトの取得をすべて許可する

という設定です。

S3にファイルをアップロードする

では最後にオブジェクトをアップロードします。
まずはindex.htmlを作成します。
以下の内容のindex.htmlを作成してください。

index.html

<html>
<body>
  <p>Hello</p>
</body>
</html>

左上の[アップロード]を押下すると、アップロード画面がポップアップして表示されます。

f:id:jainders:20160602205029j:plain

ドラッグ&ドロップか、[ファイルを追加する]を押してindex.htmlを選択し、[アップロードの開始]を押下します。

f:id:jainders:20160602205030j:plain

右側に転送ステータスが表示され「完了」と表示されると、左側の一覧に表示されます。
これでオブジェクト(index.html)のアップロードは完了です。

f:id:jainders:20160602205032j:plain

S3の設定は以上です。

 

今回S3にアップロードしたindex.htmlをlambdaからアクセスして取得できるようにします。

 lamdaの設定は次回。

koboldtodragon.hatenablog.com