AWS: AWS入門(Lambda編1) - 関数を作成する

###### 実施環境

Microsoft Edge 130.0.2849.68 (64bit)

### 0. 概要

 AWS には、「 Lambda 」というサービスがあります。
 Lambda は、サーバ筐体やプログラム実行環境などの準備について考えることなく、プログラムコードだけを用意して実行することのできるサービスです。
今回はこの Lambda について、関数の作成や削除といった、ごく基本的な操作を行ってみます。

 Lambda を無料枠で利用する場合は、日時にかかわらず 1 か月あたり 100 万回または 320 万秒の実行まで利用できます。
その他にも細かい条件がありますが、詳細は以下の Web サイトを参照してください。

https://aws.amazon.com/jp/lambda/pricing/

なお、最新の操作方法は以下の AWS 公式ドキュメントを参照してください。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/getting-started.html

### 1. ログ書き込み用ロール作成 (事前準備)

 Lambda 関数は CloudWatch へのログ書き込みなどのため、作成時にロールを付与する必要があります。
そのため、 Lambda 関数の作成前にまずは以下の過去記事を参考にロールを作成しておきます。

https://qiita.com/frozencatpisces/items/8bb0ea63b6cc509db023

今回作成したロールの設定は以下の通りです。
なお、ここに記載した以外の設定はデフォルトで作成しました。

|項目|値|
|:-|:-|
|信頼されたエンティティタイプ| AWS のサービス|
|サービスまたはユースケース| Lambda |
|許可ポリシー| AWSLambdaBasicExecutionRole |

:::note info
今回は事前にロールを作成しましたが、 Lambda 関数の作成に使用するユーザが IAM への十分な権限を持っているなら、 Lambda 関数の作成時にロールを一緒に作成することも可能です。
:::

### 2. 関数一覧画面

:::note info
これ以降の操作は、 Lambda の操作に対して権限があるユーザで実行してください。
例えば「 AWSLambda_FullAccess 」というポリシーを付与したユーザを使用すると、 Lambda の機能全体を利用することができます。

![WS000029.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/7ea7d155-2e5f-e19b-86ab-4baba397017f.jpeg "0_0")
:::

まずは、関数一覧画面へ移動しましょう。
 Lambda の画面を開きます。

![WS000030.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/f09f7e3b-96d5-2e20-eeb4-268b6fd2bf4f.jpeg "2_1")

左側メニューから「関数」を選択します。

![WS000031.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/25d5ad78-8e6d-d2cd-bef0-8c467b551959.jpeg "2_2")

関数一覧画面が開きました。

![WS000148.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/cf891ca2-6f09-e298-0029-f6ecc4c0f748.jpeg "2_3")

### 3. 関数作成

関数を作成するには、まず「関数の作成」をクリックします。

![WS000032.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/9a90afc6-ffc3-f589-ab6d-9809d38b8488.jpeg "3_1")

テンプレートから作成することもできますが、今回は「一から作成」を選択します。

![WS000033.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/cc00e2ad-9a09-6d80-45bf-46eb9bf5bf93.jpeg "3_2")

適当な関数名を入力してください。

![WS000034.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/776d4d8b-4525-f81d-a327-b91a7a8f68f9.jpeg "3_3")

ランタイムとアーキテクチャを選択します。
今回、ランタイムは「 Python 3.12 」、アーキテクチャは「 x86_64 」を選択しました。

![WS000035.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/3892a965-012e-fcac-add5-6da9534fb086.jpeg "3_4")

:::note info
「ランタイム ( ランタイムライブラリ ) 」とは各プログラミング言語で書かれたプログラムを動かすためのソフトウェア部品のことを指します。
 Lambda は主に以下の言語、ランタイムをサポートしています。

* JavaScript ( Node.js )
* Python
* Java
* C# ( .NET )
* Ruby
* Go (OS専用ランタイム)
* PowerShell ( .NET )

https://aws.amazon.com/jp/lambda/faqs/

:::

:::note info
アーキテクチャ ( 命令セットアーキテクチャ ) とはコンピュータに指示を出すための言語 ( 機械語 ) の仕様のことです。
どのようなプログラミング言語も、コンピュータが処理する際はこの仕様に従った機械語へ翻訳されます ( コンパイル ) 。
 x86_64 は主にパソコンやサーバーなどで使われる高性能なアーキテクチャで、 arm64 はスマホやタブレットなどでよく用いられるエネルギー効率のよいアーキテクチャです。
:::

「デフォルトの実行ロールの変更」を開き、「既存のロールを使用する」から事前に作成したロールを指定します。

![WS000049.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/58c8fe80-0b9e-e01d-2d6b-4f25730f0601.jpeg "3_5")

:::note info
 IAM の権限が十分にあるなら、ここで新しくロールを作成することも可能です。
:::

その他の細かい設定はデフォルトのままにして、「関数の作成」をクリックします。

![WS000050.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/3e7ce24e-bcc1-d077-4f22-d66dfdb3ca84.jpeg "3_6")

これで、 Lambda 関数が作成できました。

![WS000051.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/f11dbb07-1d70-c7f3-8aaf-5a82ae8c0e6e.jpeg "3_7")

### 4. 関数テスト実行

では、関数を実際に動かしてみましょう。
デフォルトの Lambda 関数には単純なメッセージを返すだけの関数が定義されています。

まずは、「テスト」タブを選択します。

![WS000054.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ce779ddc-f0c4-5fa9-ddae-48ebb4b98a36.jpeg "4_1")

「テスト」をクリックします。

![WS000055.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/04868651-82c5-0f89-7d70-91611fac7d51.jpeg "4_2")

以下のようなメッセージが出たら成功です。

![WS000056.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b4d6abc7-af3a-5536-31f1-f064f692cbb8.jpeg "4_3")

### 5. 関数コード変更

次は、関数のコードを少し書き換えて出力されるメッセージを変えてみましょう。

「コード」タブを選択します。

![WS000053.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/18addc9a-4d0b-da01-6195-06309146cc97.jpeg "5_1")

すると下のほうに、関数のコードが表示されています。
今回はこのコードの7行目、「 Hello from Lambda! 」の文字列を適当に書き換えてみます。

![WS000057.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/76c8dcd6-d187-3e6a-e105-4a6d791d036e.jpeg "5_2")

書き換えたら、「 Deploy 」をクリックして変更を適用します。

![WS000059.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/77a25dda-e2a1-0d48-975a-c8a32f5495a5.jpeg "5_3")

これで、関数のコードが変更されました。

![WS000060.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/96f7b3e0-6d78-c07b-980e-c455450c3b09.jpeg "5_4")

もう一度テスト実行すると、出力されるメッセージが変わっているのがわかります。

![WS000062.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b158c513-296b-8331-ba1b-e61912d2a803.jpeg "5_5")

### 6. 関数削除

関数を削除するには、削除したい関数を関数一覧から選択して「アクション」⇒「削除」をクリックします。

![WS000063.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/6b71201a-77c2-77b1-58f6-911ef6b02ca3.jpeg "6_1")

確認メッセージが表示されるので、「削除」と入力してから「削除」をクリックします。

![WS000064.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b044657b-2c95-798d-f954-f0ed9068e99f.jpeg "6_2")

これで、関数が削除できました。
「閉じる」を押して確認メッセージを閉じます。

![WS000065.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b3e6f052-ffd4-8e41-5734-308473c25bd8.jpeg "6_3")

[戻る](https://qiita.com/frozencatpisces/items/75bf3e19f6328786e336)