C#でAWS Lambdaの開発を始めるのにハマったこと
C#でAWS Lambdaの開発を始めるのにハマったことまとめです。
(2019年11月時点の記録です)
はじめに
.NETでAWS Lambda用のコードを開発する用事があったのですが、C#は右も左も分からない所からのスタートで、とにかくハマりまくりました!
普段からC#を使われている方からすると当たり前のことかもなのですが、やはり敷居が高いのか、ウェブ上の情報も少なかったので、困った点などをまとめておきます。
Lambdaのビルド環境を分かってなくてハマる
まだ記憶に新しい、AWS LambdaがC#に対応したニュース、
ですが、ここで注目していただきたいのは、
AWS Lambda が、.NET Core 2.1 をサポート
と、AWS Lambdaは.NET coreに対応していることです。
そう、AWS Lambdaは.NET coreに対応していることを分かっておらず、ハマりました。
.NET coreってなんじゃい
.NETの実装には.NET FrameworkやXamarin/Monoが存在する。.NET Coreはクロスプラットフォームを特徴としてMicrosoftが主導的に開発をおこなっている.NET実装の1つである。
.NET Core - Wikipedia
.NET coreと.NET Frameworkって違うんですね。。。
MSのドキュメントをみると、
次のような場合、サーバー アプリケーションには .NET Core を使用します。
確かに.NET Coreの方がLambdaと相性が良い感じがします。
AWS SDKは.NET Core の非同期の呼び出しのみサポート
.NET Coreにのみ対応している影響は、この点に大きく効いてきます。
以下のドキュメントの.NET Coreのところを確認いただくと、非同期呼び出しにのみ対応していることが分かります。
docs.aws.amazon.com
Classmethodさんの記事でも、その旨が紹介されています。[2]
私の場合、公式ドキュメントを参考にして同期呼び出しの関数を使っていたので、「型または名前空間の名前 'xxxxx' が名前空間 'xxxx' に存在しません (アセンブリ参照があることを確認してください)。」が出たまま右往左往しました。
参考
[1] C# による Lambda 関数のビルドの詳細
docs.aws.amazon.com
[2] Classmethodさんの記事
dev.classmethod.jp
[3] AWS Toolkit for Visual Studioの利用方法
docs.aws.amazon.com