【デプロイ編】.NET6.0でAWS Lambda開発

.NET6.0をRuntimeとしてAWS Lambdaを開発するための基本的な手順と参照するリファレンスについて記載します。 このページでは開発したLambdaをAWS上にデプロイしていきます。

このページでデプロイするLambdaは開発編で作成したものを利用します。

はじめに

実業務ではサーバレスアーキテクチャならAWS SAM、サーバレスのサービス以外も含まれているAWS CDKを使うことが多いです。
ここではAmazon.Lambda.Toolsを使ったデプロイ方法を紹介します。
そのほかの方法はまた別の機会に紹介しようと思います。

AWSへの認証情報を設定する

デプロイするにはAWSへの認証情報を設定する必要があります。
※AWS CLIをインストールしていない方は準備編を参照してインストールしておいてください。

まず、AWS Management Consoleへアクセスしてアクセスキーとシークレットアクセスキーを入手しておいてください。
アクセスキーはIAMのユーザーページから作成できます。

AWS Management Consoleでアクセスキーを作成

アクセスキーとシークレットアクセスキーを入手できたら、ローカルPCのターミナルでaws configureと入力してください。 アクセスキーとシークレットアクセスキーの入力を求められるので、事前に入手したキーを設定してください。

アクセスキーの管理
アクセスキーとシークレットアクセスキーは絶対に他の人に教えないでください。
これらを使えばIAMユーザーに許可されているすべての操作を行うことができてしまいます。
安全に運用するためには、MFAの設定や送信元IPアドレスによる制御、スイッチロールによる一時的な権限の付与などの対策をおすすめします。

これは本番環境に限ったものではなく開発環境、あるいは個人のAWSでも同様です。
個人開発で誤ってGitHubにアクセスキーが含まれたソースコードをpushしたことで数百万円の請求が発生することもあり得ます。

アクセス制限
実運用では、IAMユーザーにはMFAが設定されていると思います。
AWS CLIでMFA認証を必要とする場合はこちらを参考にしてください。

また、IAMユーザー自体のアクセス権限が絞られており、スイッチロールで権限を入手する場合はこちらを参照してください。

デプロイする

デプロイしたいFunctionのcsprojファイルがあるディレクトリで次のコマンドを実行してください。

dotnet restore
dotnet lambda deploy-function

コマンドに続いてFunction NameとIAM Role Nameを聞かれるので任意の名前を入力してください。
すでに存在するFunction Nameを指定した場合は、新しいプログラムで上書きされます。

LambdaにはMemory SizeやTimeoutといった設定が存在します。
これらの設定はaws-lambda-tools-defaults.jsonに定義されたものが採用されます。

aws-lambda-tools-defaults.json

{
  "Information": [
    "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.",
    "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.",
    "dotnet lambda help",
    "All the command line options for the Lambda command can be specified in this file."
  ],
  "profile": "",
  "region": "",
  "configuration": "Release",
  "function-runtime": "dotnet6",
  "function-memory-size": 256,
  "function-timeout": 30,
  "function-handler": "emptysample::emptysample.Function::FunctionHandler"
}

動作確認

AWS Toolkitを使えば開発時に使ったテストツールのようにLambdaを実行できます。

AWS ToolkitでLambdaを実行

以上

次:開発時に見るとよいリファレンス