Aws-lambda-function-in-python

提供:Dev Guides
移動先:案内検索

AWS Lambda – Pythonの関数

この章では、Pythonで簡単なAWS Lambda関数を作成し、詳細に従ってその動作概念を理解します。

AWSでのLambda関数の作成に進む前に、PythonのAWSツールキットサポートが必要です。 この目的のために、以下の手順に従って、添付の対応するスクリーンショットを観察します-

ステップ1

AWSコンソールにログインしてLambda関数を作成し、言語をPythonとして選択します。

Lambda Function Python

ステップ2

次に、[関数を作成]ボタンをクリックして、Pythonで簡単なAWS Lambdaを作成するための詳細を入力します。 このコードは、Pythonを使用してLambdaからメッセージ* Helloを返し、ここに示すように見えます-

関数Pythonの作成

ステップ3

次に、変更を保存し、コードをテストして出力を確認します。 UIのテストボタンを使用してAWSコンソールでテストすると、次の出力とログが表示されます。

AWS_console_Python

ステップ4

これで、任意のエディターまたはPython用IDE内でコードを作成できます。 ここでは、コードの記述にVisual Studioコードを使用しています。 後でファイルを圧縮し、AWSコンソールでアップロードする必要があります。

PythonのIDE。

ここでは、コードを圧縮し、AWSコンソールを使用しています。

ステップ5

次に、以下に示すように、*。ZIPファイル*アップロードオプションを選択します-

ファイルのアップロード

Pythonのハンドラーの詳細

ハンドラーは、関数の名前が後に続くファイルの名前でなければならないことに注意してください。 上記の場合、ファイル名は hellopython.py で、関数の名前は my_handler; なので、ハンドラーは hellopython.my_handler になります。

アップロードが完了して変更が保存されると、AWS Lambdaコンソールのオンラインエディターにzipファイルの詳細が実際に表示されます。 次に、コードをテストして出力とログを確認します。

Pythonハンドラーの詳細

さて、次のサンプルコードを使用してLambda関数の詳細を理解しましょう-

def my_handler(event, context):
   return "aws lambda in python using zip file"

上記のコードでは、関数名my_handlerには、イベントとコンテキストの2つのパラメーターがあります。

Pythonのコンテキストオブジェクト

Contextオブジェクトは、Lambda関数の名前、ミリ秒単位の残り時間、リクエストID、クラウドウォッチグループ名、タイムアウトの詳細などの詳細を提供します。

コンテキストオブジェクトで利用可能なメソッドと属性は、以下の表に示されています-

Sr.No Method Name & Description
1

get_remaining_time_in_millis()

このメソッドは、ラムダ関数が関数を終了するまでの残り時間をミリ秒で示します

Sr.No Attribute & Description
1

function_name

これはawsラムダ関数名を与えます

2

function_version

これは、実行するawsラムダ関数のバージョンを提供します

3

invoked_function_arn

これにより、ARNの詳細が表示されます。

4

memory_limit_in_mb

これは、ラムダ関数の作成中に追加されたメモリ制限を示しています

5

aws_request_id

これにより、awsリクエストIDが得られます。

6

og_group_name

これにより、クラウドウォッチグループの名前が表示されます。

7

log_stream_name

これにより、ログが書き込まれるcloudwatchログストリーム名がわかります。

8

identity

これにより、aws mobile sdkで使用した場合のAmazon Cognito IDプロバイダーに関する詳細が提供されます。 与えられた詳細は次のとおりです-

  • identity.cognito_identity_id *identity.cognito_identity_pool_id
9
  • client_context*

これは、aws mobile sdkで使用した場合のクライアントアプリケーションの詳細です。 与えられた詳細は次のとおりです-

  • client_context.client.installation_id
  • client_context.client.app_title
  • client_context.client.app_version_name
  • client_context.client.app_version_code
  • client_context.client.app_package_name
  • client_context.custom-モバイルクライアントアプリからのカスタム値の辞書があります
  • client_context.env-AWS Mobile SDKからの環境詳細の辞書があります

コンテキストの詳細を出力するPythonの実用的な例を見てみましょう。 以下のコードを確認してください-

def my_handler(event, context):
   print("Log stream name:", context.log_stream_name)
   print("Log group name:",  context.log_group_name)
   print("Request ID:",context.aws_request_id)
   print("Mem. limits(MB):", context.memory_limit_in_mb)
   print("Time remaining (MS):", context.get_remaining_time_in_millis())
   return "aws lambda in python using zip file"

上記のコードの対応する出力は以下のとおりです-

対応する出力

Pythonを使用したロギング

Pythonを使用して情報を記録するには、使用可能なprintまたはlogger機能を使用できます。 上記のコンテキストの例を使用し、inCloudWatchをチェックして、ログが出力されるかどうかを確認します。 次のコードを観察してください-

def my_handler(event, context):
   print("Log stream name:", context.log_stream_name)
   print("Log group name:",  context.log_group_name)
   print("Request ID:",context.aws_request_id)
   print("Mem. limits(MB):", context.memory_limit_in_mb)
   print("Time remaining (MS):", context.get_remaining_time_in_millis())
   return "aws lambda in python using zip file"

CloudWatchでのこのコードの出力は以下のとおりです-

Pythonを使用したロギング

ロガーを使用してログをCloudWatchに出力する方法を理解するには、次の例をご覧ください-

import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_handler(event, context):
   logger.info('Using logger to print messages to cloudwatch logs')
   return "aws lambda in python using zip file"

このための出力は、以下のスクリーンショットに示すようになります-

Cloudwatch Python

Python for Lambda関数のエラー処理

このセクションでは、Pythonでエラーを処理する方法を示す実用的な例を見てみましょう。 ここで与えられたコードの一部を観察します-

def error_handler(event, context):
   raise Exception('Error Occured!')

Pythonでのエラー処理

ログ表示は、ここの画像に示されているとおりです-

Python出力でのエラー処理