10 Python


websitepython 3.8で書かれたハンドラを使ってバックエンドダイナモにデータをプッシュする機能を使用します.
AWSラムダは、サーバーをプロビジョニングまたは管理せずにコードを実行し、ワークロードを意識したクラスタスケーリングロジックを作成し、イベント集約を維持したり、ランタイムを管理するServerless Computeサービスです.

アムスラムダ



To create the function, I went in to the lambda console and clicked create.

Then I named the function and specified the lambda handler runtime: Python 3.8 for my use case.



一旦それが完了したならば、私は以前私がDynamoDBへのアクセスのためにセットアップをした役割を割り当てて、機能をつくりました.

ゲートウェイトリガー


それからAPI APIゲートウェイトリガーを追加し、全てのAPIコール()でラムダ関数をトリガーしました.

政策


リソースベースのポリシーはこのようになります.

アプリ。パイ


ここでは、ラムダ関数で使用されるPythonコード.

The handler imports the modules json and boto3.

  • import the json utility package since we will be working with a JSON object.
  • import the AWS SDK (for Python the package name is boto3).
  • import two packages to help us with dates and date formatting.

                            import json
                            import boto3
                            from time import gmtime, strftime
  • create a DynamoDB object using the AWS SDK.

                            dynamodb = boto3.resource('dynamodb',region_name='ap-south-1')
  • use the DynamoDB object to select our table.

                 table = dynamodb.Table('komlalebuTable')
  • store the current time in a human readable format in a variable.

               now = strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
  • define the handler function that the Lambda service will use as an entry point.

                            def lambda_handler(event, 
                            context):
  • extract values from the event object we got from the Lambda service and store in a variable.

                         try:
                         event = json.loads(event['body'])
                         visitor = event['visitorCount'] +' '+ 
                         event['visitorResponse']
lambdaおよびvisitorCountvisitorResponseのJavaScript関数(.)から取得され、callAPI変数に連結されます.
  • write visitor and time to the DynamoDB table using the object we instantiated and save response in a variable using response method.

                        response = table.put_item(
                        Item={
                            'id': visitor,
                            'LatestGreetingTime':now
                             })
                       except:
                       visitor = 'request error'
  • return a properly formatted JSON object. This code is used for testing later (read more).

                      return {
                      'statusCode': 200,
                      }

AWS :: Serverless ::関数


これは、手動での作業方法で、最終的なアプリケーションはvisitorテンプレートで定義されているSAMテンプレートで定義されています.関数名はtemplate.ymlです.

  • CodeUri - Has the handler code location in repository.
    CodeUri: komla_function/

  • Handler - Defines the handler name.


  Handler: app.lambda_handler
  • Runtime - Defines the language used during runtime.

  Runtime: python3.8
  • Policies - Defines the access policy for the function.

  Policies:
  # Give DynamoDB Full Access to your Lambda Function
  - AmazonDynamoDBFullAccess
  • Function created in Lambda on SAM deploy.


  • Configuring test event from lambda console.

KomlalebuFunctionコードをテストします.
  • ダイナモもテーブルで更新されました.

  • また、ラムダ関数はセットアップおよび配備されました.

    雑多な

    更新


    私も、訪問者カウンタのために統計を結合して、訪問者統計HTML表をセットします.
  • が好きです- DynamoDB Passedに基づく記録を取り戻すバックエンドテーブルの上でテーブルスキャンを実行する別々のAPIとラムダ機能(komlalikesFunction)をセットアップしなければなりませんでした.FilterExpressionsをクリックすることに関して、ユーザーは訪問カウントに加えられる文字列likeを有するダイナモテーブルのデータを記憶する.しかし、これはスタンドアロンとして行われ、したがってSAMテンプレートでは行われませんでした.

  • 文字列YESを含むプライマリキーidでテーブルをスキャンし、結果カウントを返します.この関数は、ページが読み込まれるたびに別々のAPIによって呼び出されます.yes

  • は好まれません--私はDynamoDB komlalikesFunctionに基づく記録を取り戻すバックエンドテーブルの上でテーブルスキャンを実行する別々のAPIとラムダ機能(komladislikesFunction)をセットアップしなければなりませんでした.FilterExpressionsをクリックすることに関して、ユーザーは訪問カウントに加えられる文字列dislikeを有するダイナモテーブルのデータを記憶する.しかし、これはスタンドアロンとして行われ、したがってSAMテンプレートでは行われませんでした.

  • 文字列NOを含むプライマリキーidでテーブルをスキャンし、結果カウントを返します.この関数は、ページが読み込まれるたびに別々のAPIによって呼び出されます.NO