LoginSignup
28
10

More than 5 years have passed since last update.

[Serverless Framework] インストールからデプロイするまで [初心者]

Last updated at Posted at 2018-03-30

概要

n番煎じ? 許してください。
初めてServerless Frameworkを使ったので、それを使ってAWSにLambdaをデプロイするまでのメモ書き。

Serverless Frameworkのインストール

前提

$ node -v
v8.10.0

問題なければServerless Frameworkをインストール

$ npm install -g serverless

完了したら以下のコマンドを叩いてみる

$ serverless

Commands
* You can run commands with "serverless" or the shortcut "sls"
.
.
.
(省略)

エイリアスもあるので以下のコマンドでも同じ

$ sls

Commands
* You can run commands with "serverless" or the shortcut "sls"
.
.
.
(省略)

概要っぽいものがずらっと出てくればOK

そのほか、以下のコマンドでバージョン確認など

$ sls -v
1.26.1

IAMの作成

デプロイするのにアクセスキーIDとシークレットアクセスキーが必要なので、それを作成。
IAMユーザー追加して、「AdministratorAccess」のポリシーを付与。
AWSマネジメントコンソールからぽちぽちしました。

厳密には以下のような状態になってます。

  • グループ作成
  • グループに「AdministratorAccess」のポリシーを付与
  • IAMユーザー作成
  • グループにユーザーを追加

AWSCLI

インストール

作成したIAMユーザーの「アクセスキーID」「シークレットアクセスキー」を設定するために、AWSCLIをインストール。
Homebrewでできる。

$ brew install awscli

完了したら以下のコマンドで確認してみる

$ aws --version
aws-cli/1.14.60 Python/3.6.4 Darwin/16.7.0 botocore/1.9.13

プロファイルの設定

以下のコマンドを叩くと、いろいろ聞かれる

$ aws configure

アクセスキーIDを入力してエンター

AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxxxxxxx

シークレットアクセスキーを入力してエンター

AWS Secret Access Key [None]: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

デフォルトで呼び出しを実行する対象のリージョンを入力してエンター(ap-northeast-1 : 東京)

Default region name [None]: ap-northeast-1

デフォルトの出力形式は空のままエンターでスルー
json、text、tableから選ぶが、指定しなければjsonになる

Default output format [None]:

設定内容はこの2つのファイルに保存されてる

~/.aws/
 ├ config
 └ credentials

また、slsコマンドでも設定できるとのこと
serverless.com : AWS - Config Credentials

上記はdefaultの設定をしているが、名前をつけて複数のプロファイルの設定もできる
AWS Documentation : 名前付きプロファイル

プロジェクト

やっと準備できた...のでプロジェクト作っていく

作成

$ mkdir testProject
$ cd testProject
$ sls create -t aws-python3

-t は どのランタイムかを指定で、以下のようなものを指定する

  • aws-nodejs
  • aws-nodejs-typescript
  • aws-python
  • aws-python3

あとはこっちでオプション一覧確認してみてください
serverless.com : AWS - Create

createを実行すると以下のようなファイルが作成される

./
 ├ .gitignore
 ├ handler.py
 └ serverless.yml

  • handler.py
    • Lambdaファンクション。作成時点では HelloWorld 的な中身になってる。
  • serverless.yml
    • 設定ファイル。ファイルの中身やらリファレンスやら読んで適切に設定しよう。

ローカル実行

ドキュメント見ると、Python、Node、Javaならローカルで実行できるっぽい(2018/03/30 時点)

Currently, invoke local only supports the NodeJs, Python & Java runtimes.

コマンド叩いてみる

$ sls invoke local -f hello

{
    "statusCode": 200,
    "body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": {}}"
}

データも渡せる

$ sls invoke local -f hello -d "hoge"

{
    "statusCode": 200,
    "body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": \"hoge\"}"
}

こんなのも

$ sls invoke local -f hello -d '{"foo":"bar"}'

{
    "statusCode": 200,
    "body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": {\"foo\": \"bar\"}}"
}

jsonファイルも

data.json
{
    "aaaaa": "AAAAA",
    "bbbbb": {
        "ccccc": "CCCCC",
        "ddddd": "DDDDD"
    }
}
$ sls invoke local -f hello -p ./data.json

{
    "statusCode": 200,
    "body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": {\"aaaaa\": \"AAAAA\", \"bbbbb\": {\"ccccc\": \"CCCCC\", \"ddddd\": \"DDDDD\"}}}"
}

デプロイ

$ sls deploy

serverless.ymlに書いた設定でデプロイされる

Lambdaの実行

デプロイしたLambda関数を実行する

$ sls invoke -f hello

こっちもデータ渡せる

$ sls invoke -f hello -d "hoge"
$ sls invoke -f hello -d '{"foo":"bar"}'
$ sls invoke -f hello -p ./data.json

リソースの削除

これだけでデプロイしたリソースを削除してくれる

$ sls remove

ローカルにあるのもいらないなら適当に $ rm -r testProject みたいな感じで消しちゃえばいいと思います

28
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
10