0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[AWS_33]Lambdaについて

Last updated at Posted at 2022-02-06

##環境
AWS Lambda
Python 3.7

##AWS Lambdaとは

  • サーバレスコンピューティングサービス
    サーバなしでコードを実行できる。
    通常ならサーバのセットアップなどが必要だが、それらが無くてもプログラムを実行できる。

  • FaaSに該当する
    IaaSーPaaSーFaaSーSaaS
    ファンクションをサービス提供する。

サービス ターゲットとなる方式 説明
PaaS リクエストリプライ方式 リクエストごとにアプリケーション全体を起動・終了させる
FaaS イベントドリンブン方式 必要なサービス毎に起動・終了させる
image.png
画像引用:IT media:コレ1枚で分かる「サーバレスとFaaS」
  • コードを実行するインフラに依存せずに実行できる

  • サポートしている言語は、

    • Java
    • Go
    • PowerShell
    • Node.js
    • C#
    • Python
    • Ruby
  • イベントに応じてコードを実行できる
    例:S3バケットにオブジェクトが配置されたら実行する

  • 自動スケーリング
    Lambdaで処理が追いつかなくなったら自動でLambdaを追加するイメージ。

  • エッジロケーションで実行できる
    お客さんに最も近い場所で実行できる。

  • EC2インスタンスに比べてサーバ管理が無い

  • 実行していないアイドリング時の料金がかからない


##他のAWSとどんな連携ができるのか
####APIGateway
APIGatewayにリクエストするとLambdaが実行される。

####S3
S3バケットにオブジェクトが配置されたらLambdaが発動する。

####EventBridge
定期的にLambdaを実行する。
例:毎朝このLambdaの関数を実行したい。

####CloudWatchLogs
Lambda関数を作成すると自動的にCloudWatchと連携がされる。
Lambdaの実行結果は正常に終了したのか、エラーが出たのか、CloudWatchのログで確認が出来る。


##用語
####イベントソース
Lambda関数が実行されるきっかけ。
例:S3,SQS,SNS,EventBridge

####ハンドラ
Lambda側でイベントを受け取る。
デフォルト:ファイル名.関数名


##公式チュートリアル

  • 以下ページで簡単なHello World的な戻り値の出力を試すことができ、操作感を掴むことができる。

    AWS Lambda サーバーレスでコードを実行


    以下の場合は、Pythonを使った実行結果。
    スクリーンショット 2021-08-05 16.33.39.png

  • イベントソースがLambdaに送られ、サンプルコードが実行される様子をイメージで理解するページもある。
    APIゲートウェイやKinesis、S3バケットをクリックするとLambdaを実行できる。
    ダウンロード.gif

##ハンズオン
Lambda関数の作成から実行までの一連の流れを実際に手を動かしてやってみる。

####Lambda関数の作成

  1. Lambda > 関数の作成 をクリックする。
    • 以下のいずれかのオプションを選択して、関数を作成します。: 設計図の使用
    • キーワードによる検索: hello-world-python
  2. 設定をクリックする。
    • 関数名:hello-python(任意)
    • 実行ロール:基本的な Lambda アクセス権限で新しいロールを作成
  3. 関数の作成をクリックする。

####テストイベントの作成

  1. コードタブ > hello-python/lambda_function.pyを開く > Testをクリックする。
    スクリーンショット 2021-08-05 17.37.30.png
    • 新しいテストの作成
    • イベントテンプレート: hello-world
    • イベント名: helloEvent(任意)
    • コード欄

      テストイベントのLambdaに渡される状態を記載。keyがvalueに対応している。
json
{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

2.作成をクリックする。

####Lambda関数をテストする

  1. Testをクリックする。

    結果から分かること...

    • Responseはvalue1

      ソースコードで戻り値をkey1としているため。
    • Duration: 1.57 ms

      実行時間。
    • Billed Duration: 2 ms

      課金時間。
      スクリーンショット 2021-08-05 17.55.13.png
  2. CloudWatchでログの確認する
    Start〜Endまで、コンソール画面で出力されていた内容をCloudWatchでも確認出来る。
    スクリーンショット 2021-08-05 17.53.02.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?