Lambda関連のことを調べてみた

Lambda関連のことを調べてみた
目次

[Lambda] アカウント内の versioned artifact と layer の総量は75GB以下に保とう

アカウント内の Lambda の artifact version と layer の総量は75GB以下に保つ必要がある。

## 理由

> The Lambda service stores your function code in an internal S3 bucket that’s private to your account. Each AWS account is allocated 75 GB of storage in each Region. Code storage includes the total storage used by both Lambda functions and layers.
> **If you reach the quota, you receive a CodeStorageExceededException when you attempt to deploy new functions.**

しかしながら、これはソフトリミット。上限を上げることは可能。😅

![image.png](https://qiita-imag

元記事を表示

NestJS on AWS Lambda via API Gateway で ZIP バイナリを返却 

### はじめに
NestJSで実装したAPIを通じてZIPファイルのダウンロード機能を実装した後、Lamda上にデプロイし、API Gateway経由でそのファイルを適切にダウンロード可能にする方法について記述します。

### APIの実装

– NestJSのAPIをlambdaで動かすために [serverless-express](https://github.com/CodeGenieApp/serverless-express)を利用

以下のようにbootstrapを実装し、API Gateway経由でLambdaからZIPをダウンロードできるようにします。

“`
async function bootstrap(): Promise {
const app = await NestFactory.create(AppModule);
 // …
await app.init();
const expressApp = app.getHttpAdapter().getInstance();
return serverlessEx

元記事を表示

CloudWatchアラームの状態変化でLambdaアクションが実行できるようになりました

# ■概要

CloudWatchアラームのステータス変更が起きた際の地味アプデを見かけたので書いてみます。
アラームの状態が変移した際にAWS Lambdaを指定できるというものです。

Amazon CloudWatch alarms adds AWS Lambda as an alarm state change action
https://aws.amazon.com/about-aws/whats-new/2023/12/amazon-cloudwatch-alarms-lambda-change-action/

# ■CloudWatchアラームのアクションについて

cloudWatchアラームを設定する際、閾値に引っかかった時の動作を決定できます。
アクションとして、例えばよく使いそうなものだと、前もってSNSトピックにメールアドレスのリストを設定していて、そのリストにメールを送付する等です。

# ■コンソールからアクションを確認する

実際にコンソールから見てみましょう。
今回は現在設定済みのCPUアラートを編集する形で調べてみます。
アラーム編集の画面にてア

元記事を表示

Lambdaの実行速度を各言語で計測してみた

## はじめに
Javaはコールドスタート時の実行速度が遅いと言うのはよく見聞きしていましたが実際に計測したことはなかったのでやってみました。

## 環境
計測に使うサンプルプログラムを作成するのにAWS SAMを使用しています。
* Windows 10 Pro
* AWS CLI:2.6.2
* AWS SAM CLI:1.105.0

## 準備
計測は次の言語で行いました。
| 言語 | ランタイム | メモリ | コードサイズ | リージョン |
|:-:|:-:|:-:|:-:|:-:|
| Go | provided.al2023 | 128MB | 4.6 MB | ap-northeast-1 |
| Java | java21 | 128MB | 854.6 KB | ap-northeast-1 |
| JavaScript | nodejs20.x | 128MB | 1.3 KB | ap-northeast-1 |
| Python | python3.10 | 128MB | 521.1 KB | ap-northeast-1 |

計測に使用するサン

元記事を表示

【AWS】Lambdaで署名付きURLを作成する実装例【署名付きURL】

## はじめに
以前APIGatewayとLambdaの連携についての記事を投稿しましたが、この構成の使用例として、Lambda関数でのS3ファイルの署名付きURLを生成して返す実装について投稿します。

[APIGateWayとLambdaの連携についての記事]
https://qiita.com/Nana_777/items/0ce03f59045aa04401bc

## 署名付きURLを利用するメリット
### 一時的なアクセス制御
署名付きURLは有効期限を持ち、期限が切れるとアクセスが拒否されます。これにより、一時的にアクセスが必要な場合に、不要にアクセス権を与え続けることを避けることができます。

### 簡単なアクセス管理
署名付きURLを使用することで、AWS Identity and Access Management (IAM) ポリシーの設定が簡略化されます。特定のS3オブジェクトに対するアクセス許可を一時的に発行でき、必要がなくなれば署名付きURLを無効にできます。

### 安全なデータ転送
署名付きURLはHTTPSプロトコルを使用して生成され、データの転

元記事を表示

AWS Lambda

AWS Lambda では、Amazon EventBridgeによってイベントスケジュールに沿ったLambda関数を設定する。

デフォルトのタイムアウトは3秒で、AWS Lambdaのリクエストあたりの最大実行時間は900秒である。

外部の画像識別APIを利用して構成され、処理するデータ容量も大きくないアプリケーションを構築する場合は、画像識別APIを呼び出して解析を実行するLambda関数を作成することで、EC2インスタンスなどのサーバーを用いることなく、コスト効率が良いアプリケーションを構築することが可能である。

## IAMロール

他のAWSリソースと連携するLambda関数を作成する際は、IAMによる実行ロールをLambda関数に設定してアクセス権限を付与することが必要である。

## S3との組み合わせ
Amazon S3 イベント通知機能を使用して、S3 バケットで特定のイベントが発生したときに通知を受け取ることができる。S3イベント通知からLambda を起動して、ファイルを処理することができる。Amazon S3 は、オブジェクトを作成または削除すると

元記事を表示

Rust・AxumのDockerイメージをAWS Lambdaにサクッとデプロイする(Lambda Web Adapter)

先日こんな記事を書きました!

https://qiita.com/nokonoko_1203/items/57fbbdddbf7975a1d803

Rustの「Axum」というWebAPI用のフレームワークを利用して、レイヤードアーキテクチャでTodoアプリを作る記事になります。

その過程でちょっとこだわってDockerfileを作成したので、せっかくなのでこれをAWSのLambdaを使ってサクッとデプロイしてみようと思います!

Lambda Web Adapterという比較的最近リリースされた機能を利用すると、Dockerイメージをほんの数分でデプロイできるので、今回はこちらを利用していきます!

– 参考記事
– [Lambda Web Adapter でウェブアプリを (ほぼ) そのままサーバーレス化する](https://aws.amazon.com/jp/builders-flash/202301/lambda-web-adapter/)

## Dockerfileを作成

僕の書いた記事でも紹介していますが、今回はこちらのリポジトリを使っていきます。

h

元記事を表示

AWS SAMを使ってローカルでLambdaを実装、AWSにデプロイしてみた

## 概要
AWS SAMを使用することでサーバーレスアプリケーションを簡単に実装〜デプロイまですることができたので共有したいと思います。

## 対象者
– AWS SAMに興味がある方
– サーバーレスアプリケーションに興味がある方
– Lambda関数を簡単に実装〜デプロイしたい方

## 環境
– M1 Mac
– VScode
– Docker Desktop

## 目次
– 前提
– やってみた
– 最後に

## 前提
– awsアカウントの発行
– aws cliをインストール
– aws configureでアクセスキーとシークレットキーを設定

## やってみた
簡単なLambda関数を作成し、`sam build`して`sam deploy`していきます。

### AWS SAMの準備
SAMをインストールしていきます

[AWS SAM CLI のインストール – AWS Serverless Application Model ](https://docs.aws.amazon.com/ja_jp/serverless-application-

元記事を表示

[Lambda][FCM]LambdaからFlutterアプリに向けたPush通知を実行する

FCM経由でFlutterアプリにPush通知を送るにあたり、Lambda(それもPython)を使った記事が少ないと感じたので投稿します。

## はじめに

FCMコンソール側の設定・Flutterアプリ側の実装は世の中にHowToが溢れているので割愛します。

https://firebase.google.com/docs/cloud-messaging?hl=ja

https://firebase.google.com/docs/cloud-messaging/flutter/client?hl=ja

LambdaでFirebase Admin SDKを使用した、Push通知送信リクエスト実行方法のみ記載したいと思います。
なんでわざわざLambdaなのかと言われると、単にAWSで他のサービスを利用しているため選択肢に挙がったまでです。

![スクリーンショット 2024-01-05 16.55.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661825/d7be1d85-b85

元記事を表示

EventBridge スケジュールでLambdaを定期実行する

# 目次
1. はじめに
1. CloudWatch ロググループ作成
1. Lambdaを用意する
1. ポリシー、ロールの作成
1. Lambdaの作成
1. EventBridge スケジュールの設定
1. ポリシー、ロールの作成
1. スケジュールの作成
1. 動作確認
1. 最後に

# はじめに
最近、知識をアウトプットできていなかったので、今年からちょこちょこやっていきます!
手始めに簡単なところからということで、最近触れているAWS関連の記事です。
ほかに同じような内容の記事があるかもしれませんが、できるだけ差別化できるように努力しますので、ご容赦ください。

# CloudWatch ロググループ作成
ではでは、早速やっていきましょう。
まずは、Lambdaの動作確認のために、CloudWatch ロググループを作成していきます。
設定は以下です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209767/92d1aafe-7daf

元記事を表示

Appsheet API を Lambda で送信する方法

## はじめに

AppSheetは、ユーザーがコーディング知識なしでカスタムモバイルアプリを作成できるプラットフォームです。

AppSheet APIを使ってAWS Lambda関数からデータを操作する方法について解説します。
この記事では、AppSheetのAPIを使って、AWS Lambda経由でデータを操作する方法に焦点を当てています。
API Keyの取得方法からLambda関数の作成、APIの利用方法までを順を追って説明します。

## もくじ

1. [AppSheet API Key を取得する](#AppSheet-API-Key-を取得する)
2. [Lambda](#Lambda)
– [Lambda Layer を作成する](#Lambda-Layer-を作成する)
– [Lambda 関数を作成する](#Lambda-関数を作成する)
3. [参考](#参考)

## AppSheet API Key を取得する

AppSheet APIを使うには、API Keyを取得する必要があります。
以下の手順でAPI Keyを取得してください。

元記事を表示

S3 から Google Drive へ Lambda を使ってファイルアップロード

# はじめに

この記事では、AWSのLambdaを使用してAmazon S3からGoogle Driveにファイルをアップロードする方法を紹介します。
Google Drive APIを活用することで、プログラム的にドライブ内のファイル操作が可能になります。

# S3 から Google Drive へ Lambda を使ってファイルアップロード

## Google プロジェクトの作成

画面を見ながら操作したい方は、[こちら](https://qiita.com/w2or3w/items/b66a4a8e45e6001a9c46)を参考して作業を進めて下さい。

1. **Google Drive API を有効にする**
– Google Cloud Platformで新しいプロジェクトを作成し、Google Drive APIを有効にします。

2. **Google Cloud でサービスアカウントを作成する**
– Google Cloud Platformでサービスアカウントを作成し、必要な権限を付与します。

3. **サービスアカウントの秘密鍵を作

元記事を表示

【個人開発】草生えてないと怒ってくれるBOTを作った

明けましておめでとうございます。

新年早々少し個人で開発したのでそのアウトプットとして投稿させていただきます。

全てのツールを無料枠で抑えて作ることができるので、個人で開発してデプロイまでしてみたいと思っている人に参考になれば良いなと思います。

## 作ったもの

草(commit)がされていない場合にはその日の夕方に通知を送ってくれるLineのBOTを作りました。

**Githubリンク**

https://github.com/yuta-2001/go-no-commit-notify

## 作成動機

– 新たな年が始まって、より成長できる年にしたく継続を促せるようなものを作りたかった。
– これまで触れていないものを使って何か作ろう、自分の技術の幅を広げようと思ったから。(Goも含めて全て開発で使ったことはなかったです。)

## 使用技術・構成

– AWS Event Bridge (cron)
– AWS Lambda
– Line Notify
– Github GraphQL
– Golang

(コンテナ化(Docker)は図に乗っていますが、現在進行

元記事を表示

AWS SAMでPrismaを使ったAWS Lambdaを動かす

## AWS SAMでLambdaを作成する
まずは、AWS SAM CLIを用いてテンプレート環境を作成します。事前に、AWS SAM CLIのインストールを[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/install-sam-cli.html)に従って行なってください。
準備が完了したら、テンプレートを作成します。
“`sh
sam init
“`
質問には以下のように答えます。
![スクリーンショット 2023-12-26 16.30.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/591069/9a528524-63f0-1fd4-374f-f5478d718feb.png)
以下のようにアプリケーションが生成されたら準備完了です。
![スクリーンショット 2023-12-26 16.30.36.png](https://qiita-image

元記事を表示

SQSにLambdaトリガーを設定してみた

## はじめに
SQSにLambdaトリガーを設定して、SQSがメッセージを受信した時、自動でLambda関数が発火する仕組みを試してみました。

見なくていいですが、気分は前回記事の続き?です。

https://qiita.com/suiwave/items/149822a70b02daa25bd3

## 挙動まとめ
こんな感じの挙動が確認できました。

#### ①正常系
![cap_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/4db3e7f2-f025-635a-815e-344f7917eb6d.png)

キューはメッセージ受信後、メッセージをeventに含めながらlambdaを実行します。
可視性タイムアウト時間内にlambdaが正常終了すると、キューからメッセージが削除されます。

#### ②異常系
![cap_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/

元記事を表示

Lambda環境でのJavaのstaticについて

## 前提
pythonのコードでは関数外のコードは一度しか実行されないという記事を目にしたのでJavaのStaticについても同じ挙動なのか気になり検証した

## 検証
“` java
public class Cache {
private static Integer number = null;

public Cache(){}

public int get(){
if(number != null){
number++;
return number;
} else {
number = 0;
return number;
}
}
}

var cache = new Cache();
logger.info(“1回目の呼び出し cacheの番号: ” + cache.get());
logger.info(“2回目の呼び出し cacheの番号: ” + cache.get());
“`
上記の

元記事を表示

Terraformでlambdaプロキシ統合のAPIを作成する際の注意点

# はじめに
Terraform初心者のため、間違いなどあればコメントで指摘していただけると助かります。

# 結論
API Gatewayとlambdaを組み合わせたAPIを作成するときは、GET APiの場合でもaws_api_gateway_integrationのintegration_http_methodをPOSTとしよう。

“` api.tf
resource “aws_api_gateway_integration” “get_section” {
rest_api_id = aws_api_gateway_rest_api.main.id
resource_id = aws_api_gateway_resource.get_section.id
http_method = aws_api_gateway_method.get_section.http_method
#Lambdaプロキシ統合を使用する場合は、GETメソッド作成時もaws_api_gateway_integration中のintegration_http_methodをPOSTにする必要がある。
i

元記事を表示

LambdaからのLambda呼び出し、Instanaでどう見える?

# はじめに

以前、こちらの記事を投稿しましたが、その後さらにLambdaから別のLambdaを呼び出した際、どの様にInstana側で見えるのか?ちゃんとトレースは追えるのか?を検証する機会があったので記事に起こしました。

https://qiita.com/LgmQue/items/a1e847b9198ffe33846f

:::note warn
前回はPythonでしたが、今回はNode.js(14.x)で試しています。
:::

では早速いきましょう

# 子となるLambdaの準備

## Lambdaの作成

関数名を任意のもの、ランタイムを `Node.js 14.x` に設定し、[関数の作成]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/0b8a1ba2-0d3e-ae55-5d57-e3d5340fde9c.png)

このLambdaが呼び出されるたびランダムに正常/異常のレスポンスおよびログ出力を行うように上書きします。

元記事を表示

DynamoDBをグローバルテーブル構成にしたうえで、DynamoDB StreamsによるLambdaトリガーを実行してみた

# 疑問と検証結果
__疑問:グローバルテーブル構成かつ、DynamoDBトリガーを有効にした場合、更新が同期・伝搬されるリージョン側でもトリガーが作動するのか?__

__結果:更新が同期・伝搬されるリージョン側でもトリガーが作動した。__

# 検証環境の構成
![構成図①.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429161/08a95c12-ac4f-9f26-6c9e-0f6e5c1819a3.png)

__構成概要__
* DynamoDBを更新するためにAPI Gateway + LambdaでAPIを作成
* DynamoDBはグローバルテーブル構成にして、東京リージョンとバージニア北部リージョンで同期
* それぞれのリージョンのDynamoDBの更新をトリガーに実行されるLambda関数を作成

__確認観点__
* 片方のリージョンからのAPI実行(データ更新)で複数のリージョンのDynamoDBトリガーが実行されるか
* 複数リージョンに作成したAPIからのデータ更新が、そ

元記事を表示

ソラカメを使ったデモアプリを作ってみた②後編 Rekognitionによる魚検知

やったこと

環境や全体アーキテクチャについては[前編](“https://qiita.com/ys-betis/items/ad56ae5a5560877fd38c”)を参照。
ソラカメを使ったお魚検知デモアプリにおける、魚の検知部分について記載する。

![スクリーンショット 2023-12-30 14.17.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68086/32727262-ba79-00da-b72d-c60d6b5a9bc9.png)

画像からAWS Rekognitionのラベル検知にて魚を検知させる

S3に保存したソラカメの画像に魚が何匹いるかを数えるため、以下のようなフローを当初検討した。
ただRekognitionのカスタムラベルを使うためにモデルを作る時間もリソースもなかったので、とりあえずRekognitionのデフォルトのラベル検知機能に水槽画像を食わせてみたところ、割といい感じに魚(Fishラベル)が出てきていたので、そのまま使うことにした。

元記事を表示

OTHERカテゴリの最新記事