チュートリアル:でサーバーレスアプリケーションをビルドしてテストする AWS Lambda - AWS Toolkit for Visual Studio

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル:でサーバーレスアプリケーションをビルドしてテストする AWS Lambda

テンプレートを使用してサーバーレス Lambda アプリケーションを構築できます。 AWS Toolkit for Visual Studio Lambda プロジェクトのテンプレートには、AWS サーバーレスアプリケーション用のテンプレートが含まれています。これは、AWS サーバーレスアプリケーションモデル (SAM) AWS Toolkit for Visual Studio の実装です。AWS このプロジェクトタイプを使用すると、 AWS Lambda 一連の関数を開発し、 AWS 必要なリソースとともにアプリケーション全体としてデプロイできます。これにより、デプロイのオーケストレーションが可能になります AWS CloudFormation 。

の設定に関する前提条件と情報については AWS Toolkit for Visual Studio、「Toolkit for Visual Studio の AWS Lambda テンプレートの使用」を参照してください。 AWS

新しい AWS サーバーレスアプリケーションプロジェクトを作成します

AWS サーバーレスアプリケーションプロジェクトは、サーバーレステンプレートを使用して Lambda 関数を作成します。 AWS CloudFormation AWS CloudFormation テンプレートを使用すると、データベースなどの追加リソースの定義、IAM ロールの追加、複数の関数のデプロイを一度に行うことができます。これは、単一の AWS Lambda 関数の開発とデプロイに重点を置く Lambda プロジェクトとは異なります。

以下の手順では、新しいサーバーレスアプリケーションプロジェクトを作成する方法について説明します。 AWS

  1. Visual Studio から [ファイル] メニューを展開し、[新規] を展開して [プロジェクト] を選択します。

  2. 新規プロジェクト」ダイアログで、「言語」、「プラットフォーム」、「プロジェクトタイプ」の各ドロップダウンボックスが「すべて...」に設定されていることを確認し、「検索aws lambda フィールドに入力します。

  3. AWS Serverless Application with Tests (.NET Core - C#) テンプレートを選択します。

    注記

    結果の上部に [AWS テスト付きサーバーレスアプリケーション (.NET Core-C#)] テンプレートが表示されない場合があります。

  4. [次へ] をクリックして [新規プロジェクトの設定] ダイアログを開きます

  5. 新規プロジェクトの設定」ダイアログで「名前」を入力しServerlessPowertools、残りのフィールドを好みに合わせて入力します。[作成] ボタンを選択して [ブループリントの選択] ダイアログに進みます。

  6. [ブループリントの選択] AWS Lambdaダイアログからブループリント用の Powertools を選択し、次に [完了] を選択して Visual Studio プロジェクトを作成します。

サーバーレスアプリケーションファイルの確認

以下のセクションでは、プロジェクト用に作成された 3 つのサーバーレスアプリケーションファイルについて詳しく説明します。

  1. serverless.template

  2. Functions.cs

  3. aws-lambda-tools-defaults.json

1. サーバーレス. テンプレート

serverless.templateファイルは、 AWS CloudFormation サーバーレス関数やその他のリソースを宣言するためのテンプレートです。 AWS このプロジェクトに含まれるファイルには、Amazon API Gateway HTTP *Get* を通じてオペレーションとして公開される単一の Lambda 関数の宣言が含まれています。このテンプレートを編集して既存の関数をカスタマイズしたり、アプリケーションに必要な関数やその他のリソースを追加したりできます。

次は、serverless.template ファイルの例です。

{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Description": "An AWS Serverless Application.", "Resources": { "Get": { "Type": "AWS::Serverless::Function", "Properties": { "Architectures": [ "x86_64" ], "Handler": "ServerlessPowertools::ServerlessPowertools.Functions::Get", "Runtime": "dotnet8", "CodeUri": "", "MemorySize": 512, "Timeout": 30, "Role": null, "Policies": [ "AWSLambdaBasicExecutionRole" ], "Environment": { "Variables": { "POWERTOOLS_SERVICE_NAME": "ServerlessGreeting", "POWERTOOLS_LOG_LEVEL": "Info", "POWERTOOLS_LOGGER_CASE": "PascalCase", "POWERTOOLS_TRACER_CAPTURE_RESPONSE": true, "POWERTOOLS_TRACER_CAPTURE_ERROR": true, "POWERTOOLS_METRICS_NAMESPACE": "ServerlessGreeting" } }, "Events": { "RootGet": { "Type": "Api", "Properties": { "Path": "/", "Method": "GET" } } } } } }, "Outputs": { "ApiURL": { "Description": "API endpoint URL for Prod environment", "Value": { "Fn::Sub": "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/" } } } }

...AWS:: Serverless::Function...宣言フィールドの多くは Lambda プロジェクトデプロイのフィールドと似ていることに注意してください。Powertools のロギング、メトリックス、トレーシングは、以下の環境変数を使用して設定されます。

  • POWERTOOLS_SERVICE_NAME= ServerlessGreeting

  • POWERTOOLS _LOG_LEVEL=INFO

  • パワーツール_ロガー_ケース= PascalCase

  • PowerTools_TRACER_CAPTURE_RESPONSE=TRUE

  • PowerTools_TRACER_CAPTURE_ERROR=TRUE

  • POWERTOOLS_METRICS_NAMESPACE= ServerlessGreeting

環境変数の定義やその他の詳細については、Powertools for Reference の Web サイトを参照してください。 AWS Lambda

2. Functions.cs

Functions.csは、テンプレートファイルで宣言された 1 つの関数にマップされた C# メソッドを含むクラスファイルです。Lambda 関数は API Gateway HTTP Get からのメソッドに応答します。ファイルの例を以下に示します。Functions.cs

public class Functions { [Logging(LogEvent = true, CorrelationIdPath = CorrelationIdPaths.ApiGatewayRest)] [Metrics(CaptureColdStart = true)] [Tracing(CaptureMode = TracingCaptureMode.ResponseAndError)] public APIGatewayProxyResponse Get(APIGatewayProxyRequest request, ILambdaContext context) { Logger.LogInformation("Get Request"); var greeting = GetGreeting(); var response = new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = greeting, Headers = new Dictionary (string, string) { { "Content-Type", "text/plain" } } }; return response; } [Tracing(SegmentName = "GetGreeting Method")] private static string GetGreeting() { Metrics.AddMetric("GetGreeting_Invocations", 1, MetricUnit.Count); return "Hello Powertools for AWS Lambda (.NET)"; } }

3. aws-lambda-tools-defaults.json

aws-lambda-tools-defaults.jsonVisual Studio AWS 内のデプロイウィザードのデフォルト値と、.NET Core CLI AWS Lambda に追加されるコマンドについて説明します。aws-lambda-tools-defaults.jsonこのプロジェクトに含まれるファイルの例を以下に示します。

{ "profile": "Default", "region": "us-east-1", "configuration": "Release", "s3-prefix": "ServerlessPowertools/", "template": "serverless.template", "template-parameters": "" }

サーバーレスアプリケーションのデプロイ

サーバーレスアプリケーションをデプロイするには、以下の手順を実行します。

  1. ソリューションエクスプローラーから、プロジェクトのコンテキストメニューを開き (右クリック)、[ AWS Lambda に公開] を選択して [ AWS サーバーレスアプリケーションの公開] ダイアログを開きます。

  2. AWS サーバーレスアプリケーションの公開」ダイアログから、「スタック名」 AWS CloudFormation フィールドにスタックコンテナの名前を入力します。

  3. S3 Bucket フィールドで、アプリケーションバンドルのアップロード先となる Amazon S3 バケットを選択するか、[New...] を選択します。 ボタンをクリックし、新しい Amazon S3 バケットの名前を入力します。次に [Publish to Publish] を選択してアプリケーションをデプロイします。

    注記

    AWS CloudFormation スタックと Amazon S3 AWS バケットは同じリージョンに存在する必要があります。プロジェクトの残りの設定はファイルで定義されます。serverless.template

    
                  「 AWS サーバーレスアプリケーションの公開」ダイアログの画像。
  4. 公開プロセス中にスタックビューウィンドウが開き、デプロイが完了すると Status フィールドが表示されます。CREATE_COMPLETE

    
                  Visual Studio のデプロイスタックビューウィンドウの画像。

サーバーレスアプリケーションのテスト

スタックの作成が完了すると、AWS サーバーレス URL を使用してアプリケーションを表示できます。関数やパラメーターを追加せずにこのチュートリアルを完了した場合、 AWS サーバーレス URL にアクセスすると、Web ブラウザーに次のフレーズが表示されます。Hello Powertools for AWS Lambda (.NET)