ablog

不器用で落着きのない技術者のメモ

Serverless Framework で Hello World

Serverless Framework とは

インストール

  • Serverless Framework のインストール
$ npm install -g serverless

使ってみる

  • github から Lei Xu さんのコードを clone する。
$  git clone https://github.com/komushi/serverless-s3-api.git
  • Offline pluginのインストール
$ cd serverless-s3-api
$ npm install serverless-offline
  • AWSにデプロイ
$ serverless deploy
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
.....
Serverless: Stack create finished...
Serverless: Packaging service...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading function .zip files to S3...
Serverless: Uploading service .zip file to S3 (3.9 KB)...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
...................................................................
Serverless: Stack update finished...
Service Information
service: serverless-s3-api
stage: dev
region: ap-northeast-1
api keys:
  None
endpoints:
  GET - https://2pp***.execute-api.ap-northeast-1.amazonaws.com/dev/{bucket}/{key}
  PUT - https://2pp***.execute-api.ap-northeast-1.amazonaws.com/dev/{bucket}
  POST - https://2pp***.execute-api.ap-northeast-1.amazonaws.com/dev/{bucket}/{key}
functions:
  getObject: serverless-s3-api-dev-getObject
  putObject: serverless-s3-api-dev-putObject
  postObject: serverless-s3-api-dev-postObject
  • S3 にバケット "training-sally-az" を作成し、権限を設定する
    • 自ユーザーでの読み書き権限を設定する

確認

  • IAMユーザーでAWSコンソールにログインし、東京リージョンの Lambda と S3 にデプロイされていることを確認。
  • S3 にファイルを PUT してみる
$ curl -v -H "Content-Type:application/octet-stream" -X POST --data-binary "@./data/doc.pdf" https://2pp***.execute-api.ap-northeast-1.amazonaws.com/dev/training-sally-az/doc.pdf
  • S3 からファイルを GET してみる
$ aws s3 ls training-sally-az 
2017-04-09 16:39:32         51 1491723570984
(中略)
2017-04-09 18:33:15         51 doc.pdf
$ curl -v -H "Accept: application/octet-stream"  https://2pp***.execute-api.ap-northeast-1.amazonaws.com/dev/training-sally-az/doc.pdf -o ./data/doc_dl.pdf

補足

  • IAMユーザーの権限不足のエラーが出たら、AWSコンソールで権限を付与する。