基本AWS LambdaDocker イメージの作成 - AWS Toolkit for Visual Studio

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

基本AWS LambdaDocker イメージの作成

Toolkit for Visual Studio を使用して、Lambda 関数を Docker イメージとしてデプロイできます。Dockerを使用すると、ランタイムをより詳細に制御できます。たとえば、.NET 5.0のようなカスタムランタイムを選択できます。Dockerイメージは、他のコンテナイメージと同じ方法でデプロイします。このチュートリアルでは、密接に模倣しますチュートリアル: 基本的な Lambda プロジェクトに2つの違いがあります。

  • Dockerfile がプロジェクトに含まれています

  • 変更されたパブリッシュ設定

Lambda コンテナイメージの詳細については、Lambda デプロイパッケージ()AWS Lambda開発者ガイド

前提条件およびセットアップの詳細については、AWS Toolkit for Visual Studio「」を参照してください。の使用AWS LambdaのテンプレートAWS Toolkit for Visual Studio

Visual Studio の .NET Core Lambda プロジェクトを作成する

組み込みの Lambda Visual Studio ブループリントにより、プロジェクトの迅速な初期化が可能になります。ブループリントは、機能をすばやく実証するためのファイルと関数の既製セットであり、後で変更するための適切な開始点を提供します。

Visual Studio .NET Core Lambda プロジェクトを作成するには

  1. Visual Studio を開き、[File (ファイル)] メニューで [New (新規)] を選択し、[Project (プロジェクト)] を選択します。

  2. 次のいずれかを行ってください。

    • Visual Studio 2017 では、[新しいプロジェクトダイアログボックスでインストール済みを拡張します。Visual C#] で、[AWS Lambda ] で、AWS Lambdaプロジェクト (.NET Core-C#))テンプレートを選択し、[OK

    • Visual Studio 2019 では、[新しいプロジェクト] ダイアログボックスで、[言語,プラットフォーム, およびプロジェクトタイプドロップダウンボックスが [すべて] に設定され、aws lambda()検索field. 次に、AWS Lambdaプロジェクト (.NET Core-C#))テンプレートを選択し、

  3. 次のいずれかを行ってください。

    • Visual Studio 2017 では、名前「」と入力します。AWSLambdaDockerで、目的のファイルロケーション[] を選択して [] を選択します。OK

    • Visual Studio 2019 では、名前「」と入力します。AWSLambdaDockerで、目的のファイルロケーション[] を選択して [] を選択します。作成

  4. リポジトリの []ブループリントの設定[] ページで [] を選択します。.NET 5 (コンテナイメージ)ブループリントを選択し、完了をクリックして Visual Studio プロジェクトを作成します。これでプロジェクトの構造とコードを確認できるようになりました。

プロジェクトファイルを確認する

レビューするプロジェクトファイルは 3 つあります。Dockerfile,aws-lambda-tools-defaults.json, およびFunction.cs

次のコードはDockerfileを選択します。これは、選択したブループリントを使用して作成されます。これは 3 つのアクションを実行します。

: から

このイメージで使用する基本イメージを確立します。この基本イメージは、.NET ランタイム、Lambda ランタイム、および Lambda .NET プロセスのエントリポイントを提供するシェルスクリプトを提供します。

ワークディレクトリ

イメージの内部作業ディレクトリを/var/task

COPY

ビルドプロセスから生成されたファイルを、ローカルの場所からイメージの作業ディレクトリにコピーします。

FROM ecr.aws/lambda/dotnet:5.0 WORKDIR /var/task # This COPY command copies the .NET Lambda project's build artifacts from the host machine into the image. # The source of the COPY should match where the .NET Lambda project publishes its build artifacts. If the Lambda function is being built # with the AWS .NET Lambda Tooling, the `--docker-host-build-output-dir` switch controls where the .NET Lambda project # will be built. The .NET Lambda project templates default to having `--docker-host-build-output-dir` # set in the aws-lambda-tools-defaults.json file to "bin/Release/net5.0/linux-x64/publish". # # Alternatively Docker multi-stage build could be used to build the .NET Lambda project inside the image. # For more information on this approach checkout the project's README.md file. COPY "bin/Release/net5.0/linux-x64/publish" .

Dockerfileをさらにカスタマイズするには、次のようにすることもできます。

  • ENTRYPOINT: ベースイメージには既にENTRYPOINTです。これは、イメージの起動時に実行される起動プロセスです。独自のものを指定したい場合は、その基本エントリポイントをオーバーライドします。

  • CMD:CMD指示AWS実行するカスタムコード。カスタムメソッドの完全修飾名が必要です。この行は、Dockerfileに直接含めるか、パブリッシュプロセス中に指定する必要があります。

# Example of alternative way to specify the Lambda target method rather than during the publish process. CMD [ "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler"]

検証するaws-lambda-tools-defaults.jsonファイルを開きます。

  • フィールドdocker-host-build-output-dirの命令と相関するビルドプロセスの出力ディレクトリを設定します。Dockerfile

  • フィールドimage-commandはメソッドの完全修飾名であり、Lambda 関数を実行するコードです。構文は次のとおりです。{Assembly}::{Namespace}.{ClassName}::{MethodName}。 詳細については、「」を参照してください。ハンドラー署名。の設定image-commandは、後で Visual Studio の [パブリッシュ] ウィザードでこの値を事前に設定します。

{ "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": "default", "region": "us-east-2", "configuration": "Release", "package-type": "image", "function-memory-size": 256, "function-timeout": 30, "image-command": "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler", "docker-host-build-output-dir": "./bin/Release/net5.0/linux-x64/publish" }

検証するFunction.csファイルを開きます。Function.csは C# 関数を Lambda 関数としてエクスポーズできるように定義します。-FunctionHandlerは Lambda 関数の実行時に実行される Lambda 機能です。このプロジェクトでは、1 つの関数が定義されています。FunctionHandlerを呼び出します。これは、入力テキストに対してtouPPer()を呼び出します。

これでプロジェクトを Lambda に発行できるようになりました。

Lambda に発行する

ビルドプロセスによって生成された Docker イメージは、Amazon Elastic Container Registry (Amazon ECR) にアップロードされます。Amazon ECR は、フルマネージド型の Docker コンテナレジストリで、Docker コンテナイメージを保存、管理、デプロイするために使用されます。Amazon ECR はイメージをホストし、呼び出されると Lambda がプログラムされた Lambda 機能を提供するために参照します。

関数を Lambda に発行するには

  1. Eclipseソリューションエクスプローラー] プロジェクトのコンテキスト (右クリック) メニューを開き、[への発行AWS Lambda

  2. リポジトリの []Lambda 関数をアップロード] ページで以下の操作を実行します。

    
                  画像ベースの Lambda 関数を公開するためのアップロード画面AWS
    1. を使用する場合パッケージタイプ,Imageが自動的にパッケージタイプは、公開ウィザードがDockerfileプロジェクト内で。

    2. を使用する場合関数名に Lambda インスタンスの表示名を入力します。この名前は、AWSVisual Studio で Visual Studio と、AWS Management Console。

    3. を使用する場合説明で、インスタンスとともに表示するテキストをAWS Management Console。

    4. を使用する場合[イメージ] コマンドに、Lambda 関数で実行するメソッドの完全修飾パスを入力します。AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler

      注記

      ここに入力したメソッド名は、Dockerfile内のCMD命令を上書きします。Entering[イメージ] コマンドは、Dockerfileが含まれます。CMDLambda 関数の起動方法を指示します。

    5. を使用する場合イメージRepoに、新規または既存の Amazon Elastic Container Registry の名前を入力します。ビルドプロセスが作成する Docker イメージがこのレジストリにアップロードされます。公開されている Lambda 定義は、その Amazon ECR イメージを参照します。

    6. を使用する場合イメージタグに、リポジトリ内のイメージに関連付ける Docker タグを入力します。

    7. [Next] を選択します。

  3. リポジトリの []アドバンストファンクション詳細ページ,ロール名アカウントに関連付けられているロールを選択します。このロールは、関数内のコードによって行われるAmazon Web Services 呼び出しに、一時的な認証情報を提供するために使用されます。ロールがない場合には、[] を選択します。[] に基づいて [] 新しいロールAWS Managed Microsoft ADポリシー[] を選択してから、AWSLambdaBasicExecutionRole

    注記

    アカウントには IAM ListPolicies アクションを実行できるアクセス許可が、またはロール名リストが空になります。

  4. [Upload (アップロード)] を選択します。

    -アップロード機能ページは、関数のアップロード中に表示されます。次に、公開プロセスは、設定パラメータに基づいてイメージを構築し、必要に応じて Amazon ECR リポジトリを作成し、イメージをリポジトリにアップロードし、そのイメージを使用してそのリポジトリを参照する Lambda を作成します。

    関数がアップロードされると、関数ページが開き、新しい Lambda 関数の設定が表示されます。

  5. Lambda 関数を手動で呼び出すには、テスト関数タブでhello image based lambdaをリクエストのフリーテキスト入力フィールドに入力し、呼び出し。大文字に変換されたテキストはレスポンス

    
                  パブリッシュされた [関数] ビューページの [関数のテスト] タブには、Lambda メソッドを手動で呼び出すボタンがあります。
  6. リポジトリを表示するには、[] ダイアログボックスのAWSExplorerAmazon Elastic Container Service] で、[リポジトリ

    再度開くことができます。関数:] ビューにあるデプロイ済みインスタンスをダブルクリックすると、AWSExplorerAWS Lambdaノード

    重要

    もしあなたのAWSエクスプローラウィンドウが開いていません。表示->AWSExplorer

  7. 追加の Image 固有の設定オプション (設定タブ このタブでは、ENTRYPOINT,CMD, およびWORKDIRDockerfile内で指定されている可能性があります。説明は、アップロード/公開中に入力した説明です(存在する場合)。

クリーンアップ

この例で引き続き開発を行わない場合は、デプロイされた関数と ECR イメージを削除して、アカウント内の未使用のリソースに対して請求が発生しないようにしてください。

  • 関数を削除するには、AWSExplorerAWS Lambdaノード

  • リポジトリは、AWSExplorerAmazon Elastic Container Service->リポジトリ

次のステップ

Lambda イメージの作成およびテストについては、Lambda でのコンテナーイメージの使用

コンテナーイメージのデプロイ、アクセス許可、および構成設定のオーバーライドについては、関数の設定