🥨

Wing (Winglang) で API Gateway + Lambda を構築してみる

2023/08/31に公開

Winglangを試してみました

Winglangを使って、はろーわーるどなAPIをAPI Gateway+Lambdaで作ってみました。

Winglang

https://www.winglang.io/

書いたコード

https://github.com/k-ibaraki/aws-lambda-apigw-sample/tree/main/Wing/ibaraki-wing-sample-api

Wing (Winglang)とは?

クラウド指向言語 (Cloud Oriented Language)らしいです。
AWSやAzureやGoogle Cloudのクラウドリソースを定義したり、Lambdaのコードを書いたりできるみたいです。
TypeScriptっぽい感じですが微妙に違います。
AWS CDKの作者が開発しているらしいです。

書いてみた

https://github.com/k-ibaraki/aws-lambda-apigw-sample/blob/main/Wing/ibaraki-wing-sample-api/ibaraki-sample-api-gateway.w

これだけのコードでAPI Gateway + Lambdaが定義できる。すごい!

ローカルで確認してみた

wing it ibaraki-sample-api-gateway.w

ローカルで構成の確認が出来て、APIの実行も確認できる。すごい!

デプロイしてみる

Wingそのままだとdeploy出来ないので、terraformに変換する必要があります。
cliのオプションでCDKもありますが試したらエラーになりました。たぶん現状はterrafromだけだと思われます。残念。

wing compile --target tf-aws ibaraki-sample-api-gateway.w
cd target/ibaraki-sample-api-gateway.tfaws

export AWS_REGION="ap-northeast-1"
export AWS_PROFILE="{profile}"
terraform init
terraform apply

確認してみる

動いた!

破棄する

terraform destroy

最後に

  • 可能性を感じる
  • ローカルPCで構成や動作の確認できるのがとても良い
  • コード量が短く書けるのが良い
    • 反面、ブラックボックス部分が多くて怖い
  • 言語がTypeScriptっぽいけど違うので混乱する
  • まだ対応しているリソースが少ないので、今後に期待

Discussion