16
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

serverlessでLambdaのローカル開発環境を整える

Posted at

serverlessフレームワークを使ってローカル環境で作成したNode.jsをLambda関数としてデプロイ

##環境

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.11.6
BuildVersion:	15G1212

$ brew -v
Homebrew 1.1.11
Homebrew/homebrew-core (git revision 0e1e; last commit 2017-03-11)

$ node -v && npm -v
v6.9.2
3.10.9

##やったこと

何はともあれServerlessのインストール

$ npm install serverless -g

AWS CLIのインストール

$ brew install awscli
$ aws
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help
aws: error: too few arguments

AWS CLIの設定
Access Keyで設定する場合

  • 事前にIAMでグループ権限とユーザーに対するグループ追加を行う必要あり
$ aws configure
AWS Access Key ID [None]: ABCABCABCABCABCABC12
AWS Secret Access Key [None]: BCDBCDBCDBCDBCDBCDBCD+123+EFGEFGEFG45678
Default region name [None]: us-east-1
Default output format [None]: json

※AWS リージョンコード一覧
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-regions-availability-zones.html

確認

AWC CLIが使えるかの確認をします。
ここでは、EC2のインスタンス一覧表示コマンドを投げました。
(結果は何もないのでからのjsonが返ってくる。

aws ec2 describe-instances
{
    "Reservations": []
}

##使ってみる

プロジェクト作成

まずはプロジェクトを作成
公式ドキュメントにある、node.jsテンプレートを使用し、プロジェクトを作成

$ serverless create --template aws-nodejs --path serverless-test
Serverless: Generating boilerplate...
Serverless: Generating boilerplate in "/Users/d_ojima/Documents/serverless-test"
 _______                             __
|   _   .-----.----.--.--.-----.----|  .-----.-----.-----.
|   |___|  -__|   _|  |  |  -__|   _|  |  -__|__ --|__ --|
|____   |_____|__|  \___/|_____|__| |__|_____|_____|_____|
|   |   |             The Serverless Application Framework
|       |                           serverless.com, v1.8.0
 -------'

Serverless: Successfully generated boilerplate for template: "aws-nodejs"

それっぽいロゴが表示されます。
テンション上がりますね:watermelon:

内容を確認

$ cd serverless-test/ && tree .
.
├── handler.js
└── serverless.yml

0 directories, 2 files

デプロイ

handler.jsにサンプルが書かれている状態なので、このままデプロイしてみます。

$ serverless deploy -v
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
CloudFormation - CREATE_IN_PROGRESS - AWS::CloudFormation::Stack - serverless-test-dev
CloudFormation - CREATE_IN_PROGRESS - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_IN_PROGRESS - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_COMPLETE - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_COMPLETE - AWS::CloudFormation::Stack - serverless-test-dev
Serverless: Stack create finished...
Serverless: Packaging service...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading service .zip file to S3 (583 B)...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
CloudFormation - CREATE_COMPLETE - AWS::CloudFormation::Stack - serverless-test-dev
CloudFormation - UPDATE_IN_PROGRESS - AWS::CloudFormation::Stack - serverless-test-dev
CloudFormation - CREATE_IN_PROGRESS - AWS::Logs::LogGroup - HelloLogGroup
CloudFormation - CREATE_IN_PROGRESS - AWS::Logs::LogGroup - HelloLogGroup
CloudFormation - CREATE_COMPLETE - AWS::Logs::LogGroup - HelloLogGroup
CloudFormation - CREATE_IN_PROGRESS - AWS::IAM::Role - IamRoleLambdaExecution
CloudFormation - CREATE_IN_PROGRESS - AWS::IAM::Role - IamRoleLambdaExecution
CloudFormation - CREATE_COMPLETE - AWS::IAM::Role - IamRoleLambdaExecution
CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Function - HelloLambdaFunction
CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Function - HelloLambdaFunction
CloudFormation - CREATE_COMPLETE - AWS::Lambda::Function - HelloLambdaFunction
CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Version - HelloLambdaVersionmQpsI2bHdSCO39nFrbUuIDXStzt10M9R68vwOUGdtc
CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Version - HelloLambdaVersionmQpsI2bHdSCO39nFrbUuIDXStzt10M9R68vwOUGdtc
CloudFormation - CREATE_COMPLETE - AWS::Lambda::Version - HelloLambdaVersionmQpsI2bHdSCO39nFrbUuIDXStzt10M9R68vwOUGdtc
CloudFormation - UPDATE_COMPLETE_CLEANUP_IN_PROGRESS - AWS::CloudFormation::Stack - serverless-test-dev
CloudFormation - UPDATE_COMPLETE - AWS::CloudFormation::Stack - serverless-test-dev
Serverless: Stack update finished...
Service Information
service: serverless-test
stage: dev
region: us-east-1
api keys:
  None
endpoints:
  None
functions:
  hello: serverless-test-dev-hello

Stack Outputs
HelloLambdaFunctionQualifiedArn: arn:aws:lambda:us-east-1:932608639237:function:serverless-test-dev-hello:1
ServerlessDeploymentBucketName: serverless-test-dev-serverlessdeploymentbucket-1gve57f768zkr

ブラウザからAWSコンソールを確認すると

serverlessでデプロイしたLambda関数が確認できました:airplane:
スクリーンショット 2017-03-11 18.53.10.png

また、serverlessではCloudFormationの機能を利用しているため、同時にIAMロールS3バケットなども作成されていました。

##雑感

とりあえず環境構築ということで、serverlessの触り中の触りを試してみた。
今後は、外部パッケージを使ったラムダ関数の作成、API Gatewayとの連携などを試してみたい。

16
8
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
16
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?