先週に続きOSS話です。といっても、これも先週の話ですが。
OSSプルリク2018年5本目。🎉
[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
sls create -t aws-go-dep -name lambda-func
で自動生成されたserverless.ymlに、serverless-localstackプラグインの説明にしたがって、pluginsとcustomの部分を追記してある。(自動生成されたコメント部分は省略してある)
[serverless framework+localstack=error]
sls deploy
を実行するとCloudFormationスタックの作成でエラーに。Creating Stack...
のあと、エラーが発生してリトライが何度か走る。
localstack側のエラーを見るとこうある。「Stack with id lambda-func-dev does not exist」。
なるほどー。lambda-func-devというidのスタックがないのかー。でもスタックトレースには(ややこしい)StackNameって書いてあるな……これidじゃなくてnameなんじゃないの?
ということでソースコード確認すると、やはりこれはidではなくnameであるべきだろう、ということで修正してPR。無事マージされましたとさ。
GitHubのlocalstackトップページにContributorとして掲載された!🎉(左下あたり)
[localstackの今後]
公式サイトによれば、 有料のProエディションが登場するらしい。現状、Githubに上がっているバージョンではIAMなどがサポートされておらず、Issueが上がっているが、それらがサポートされた状態となるようだ。
CloudFormationについてもProエディションに含まれるようなので、今回のエラーもProエディションなら回避できたりするのかな?
serverless frameworkとの組み合わせの問題だとすれば、あまり期待はできなそうだけど……。
[まとめ]
小さなエラーメッセージ修正PRでも、世の中のソフトウェアを少しずつ良くして行くぞ!
で、結局localstackにはserverless frameworkからデプロイできないまま(泣)
そちらはいずれ別のブログポストに書きます……。
今日のブログ執筆BGMはこちら。