Visual StudioのAWS Serverlessテンプレートを使ってLambdaの環境を作る

12月にAWS LambdaがC#でも使えるようになって、Serverlessでも1.4.0からC#用のテンプレートが提供されましたが、プロジェクトファイルは別で準備しないといけなかったり、ちょっと不便でした。

ところが、AWS SDKでServerless用のプロジェクトテンプレートが提供されていましたので、改めて使ってみました。

プロジェクトの作成

Visual Studioを立ち上げてプロジェクトの新規作成から「AWS Serverless Application(.NET Core)」を作成します(プロジェクト名はAWSServerlessとします)。

f:id:ohke:20170120002943j:plain:w450

肝はserverless.templateで、デプロイするLambdaの設定値やトリガとなるイベントなどを定義します。
サンプルではAPI GatewayでのGetリクエストをトリガとする1個のLambdaが定義されています。

{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Transform" : "AWS::Serverless-2016-10-31",
  "Description" : "An AWS Serverless Application.",

  "Resources" : {

    "Get" : {
      "Type" : "AWS::Serverless::Function",
      "Properties": {
        "Handler": "AWSServerless::AWSServerless.Functions::Get",
        "Runtime": "dotnetcore1.0",
        "CodeUri": "",
        "MemorySize": 256,
        "Timeout": 30,
        "Role": null,
        "Policies": [ "AWSLambdaBasicExecutionRole" ],
        "Events": {
          "PutResource": {
            "Type": "Api",
            "Properties": {
              "Path": "/",
              "Method": "GET"
            }
          }
        }
      }
    }

  },

  "Outputs" : {
  }
}

デプロイ

AWSServerlessプロジェクトを右クリックして、「Publish AWS Lambda...」をクリックするとデプロイ用の画面が開きます。

f:id:ohke:20170120003416j:plain:w450

試しにtest-stackと適当に決めてPublishすると、Visual Studio上でCloudFormationと同じようなウィンドウが表示され、たちまちS3へのアップロード、IAMの設定、LambdaとAPI Gatewayの作成とそれらの紐付けが行われます。

f:id:ohke:20170120003115j:plain

test-stackの作成が完了し、URLにブラウザからアクセスしてみると、Hello AWS Serverlessと表示されます。

AWSコンソールからtest-stackを作成できたことを確認できます。

f:id:ohke:20170120003200j:plain:w450

まとめ

サンプルそのままとは言え、Visual Studio内で完結してノーエラーで環境構築ができたので、個人的にはかなり驚きました。
CloudWatch、DynamoDB、Kinesisともそのうち連携させてみたいと思います。