localstack/localstackにプルリク投げてマージされた話とか

先週に続きOSS話です。といっても、これも先週の話ですが。

OSSプルリク2018年5本目。🎉

 

github.com

[serverless framework + localstack]

AWS Lambdaは安い。安いけど、localstack使ってできればAWS代が浮いていいんじゃん?と思って試してた。(とはいえ、ローカルマシンで実行すればその分、電気代がかかるので実費としては大して変わらないかも)

 

で、serverless frameworkとlocalstackの組み合わせを試していた。

 

serverless.ymlの中身は以下の通り。

service: lambda-func

plugins:
  - serverless-localstack

provider:
  name: aws
  runtime: go1.x

custom:
  localstack:
    stages:
      - local
      - dev
    host: http://localhost
    endpoints:
      S3: http://localhost:4572
      DynamoDB: http://localhost:4570
      CloudFormation: http://localhost:4581
      Elasticsearch: http://localhost:4571
      ES: http://localhost:4578
      SNS: http://localhost:4575
      SQS: http://localhost:4576
      Lambda: http://localhost:4574
      Kinesis: http://localhost:4568

package:
 exclude:
   - ./**
 include:
   - ./bin/**

functions:
  hello:
    handler: bin/hello
  world:
    handler: bin/world

 

github.com

sls create -t aws-go-dep -name lambda-funcで自動生成されたserverless.ymlに、serverless-localstackプラグインの説明にしたがって、pluginsとcustomの部分を追記してある。(自動生成されたコメント部分は省略してある)

 

[serverless framework+localstack=error]

sls deployを実行するとCloudFormationスタックの作成でエラーに。Creating Stack...のあと、エラーが発生してリトライが何度か走る。

f:id:kidani_a:20180914035329p:plain

 

localstack側のエラーを見るとこうある。「Stack with id lambda-func-dev does not exist」。

f:id:kidani_a:20180914035259p:plain

 

なるほどー。lambda-func-devというidのスタックがないのかー。でもスタックトレースには(ややこしい)StackNameって書いてあるな……これidじゃなくてnameなんじゃないの?

 

ということでソースコード確認すると、やはりこれはidではなくnameであるべきだろう、ということで修正してPR。無事マージされましたとさ。 

f:id:kidani_a:20180914034830p:plain

 

github.com

GitHubのlocalstackトップページにContributorとして掲載された!🎉(左下あたり)

f:id:kidani_a:20180917085330p:plain

 

[localstackの今後]

公式サイトによれば、 有料のProエディションが登場するらしい。現状、Githubに上がっているバージョンではIAMなどがサポートされておらず、Issueが上がっているが、それらがサポートされた状態となるようだ。

 

CloudFormationについてもProエディションに含まれるようなので、今回のエラーもProエディションなら回避できたりするのかな?

serverless frameworkとの組み合わせの問題だとすれば、あまり期待はできなそうだけど……。

 

[まとめ]

小さなエラーメッセージ修正PRでも、世の中のソフトウェアを少しずつ良くして行くぞ! 

 

で、結局localstackにはserverless frameworkからデプロイできないまま(泣)

そちらはいずれ別のブログポストに書きます……。

 

今日のブログ執筆BGMはこちら。 

www.youtube.com