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

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

AWS CDK – Lambda で既設の EFS マウント

# AWS CDK – Lambda で既設の EFS マウント

久しぶりに記事を書きます。
IaCとしてAWS CDKを採用して開発をはじめ、その運用・保守が約2年になろうとしています。
アプリケーションエンジニアを自負していたのに、すっかりインフラエンジニアっぽくなってきました。

当初ローンチから追加で生えてきたマイクロサービスをLambdaで追加していましたが、一部リソースは手動でコンソールから準備して参照するような構成にしていたりして一部ちぐはぐなところがありました。
そういったちぐはぐさは解決するべき課題として残り続けるとして、少しでも良くしようと考えるわけです。

LambdaでEFSをマウントしてファイル操作をあれこれするという処理があって、Lambdaから既に存在するEFSをマウントしてリソース管理するCDKを書く必要がありました。この時思いのほかハマったので記事にしました。
意外とドンピシャの記事がなくて苦労しました。こういった方法がアンチパターンなんでしょうか?
もし同じことでお困りの人がいたら参考にしてください。ネットの波を泳いで

元記事を表示

Amazon SQS→Lambdaトリガー後の非同期処理

# 前回と前々回
https://qiita.com/remonga/items/b865126b580aa79607e2

https://qiita.com/remonga/items/0b0ac02c5e88441039c0

#### EC2 → Amazon EventBridge → Amazon SQS → Lambda
という処理の流れをこれまで構築してきました。
これで時間差で実行したい処理を疎結合気味に実行することができます。

問題はこのLambda以降の流れになります。

## Lambdaについて
SQS → Lambda
のようなAWSサービスをトリガーにしてLambda関数が実行される仕組みのことをイベントソースマッピングといいます。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-concurrency.html

そしてこのイベントソースマッピングによるLambda関数の同時実行数が1000と記述があります。
それ以上のLambdaイベントが失われてしまいますので結構

元記事を表示

AWS SAM CLIでローカルAPIを起動してLambda関数をテストする方法

# はじめに
本記事ではaws sam cliを使用しローカルからLambdaを作成・デプロイする方法を記載します。

# AWS SAM CLIとは?
> The SAM Command Line Interface (CLI) lets you locally build, test, and debug serverless applications defined by AWS SAM templates. SAM CLI provides a Lambda-like execution environment locally and helps you catch issues upfront.

AWS SAM テンプレートで定義されたサーバーレスアプリケーションをローカルでビルド、テスト、デバッグするためのcli ツール。

https://aws.amazon.com/jp/serverless/sam/faqs/

# 環境
– python:Python 3.12.2

# AWS SAM CLIのインストール

下記ページを参考に任意のOSのインストーラをダ

元記事を表示

【AWS】Lambdaから別のLambdaを同期的に呼び出す

# はじめに
本記事ではLambdaから別のLambdaを同期的に呼び出す方法について備忘録も兼ねてまとめたものになります。

# 環境
– python: 3.12

# 関数を呼び出す側のLambda

Lambda > 関数 > 関数の作成から呼び出す側のLambdaを作成します。
今回は名前を`call_lambda`としています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/75b0097e-7a0e-1ed6-86ed-21934d3a4d5a.png)

別のLambda関数を呼び出すのにデフォルトのロールだけだと権限が足りないので追加します。
設定タブ > アクセス権限 > ロール名をクリックしIAMに移ります。
IAM側では許可を追加 > インラインポリシーを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/8c5960

元記事を表示

【AWS】BedrockのClaudeモデルを使用してLambdaからリクエストを送信する方法

# はじめに
本記事は、Amazon BedrockのClaudeモデルを使用してLambda関数からリクエストを送信し、生成されたレスポンスを取得する方法について備忘録も兼ねてまとめたものです。

# 環境
Python 3.12

# 前提
– Bedrockのclaude2.1が使用できる状態であること

# Lambda関数の作成
マネジメントコンソールからLambda関数を作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/4d00c7f2-fb53-94c3-7b43-409c0ef12a99.png)

デフォルトの権限ではIAMポリシーが不足しているため権限を追加します。
今回はBedrockのフルアクセス権限付与しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/73aff17f-d5e0-77cc-4af0-fa5d

元記事を表示

自分で考えるAWSサーバーレスアーキテクチャのハンズオンを作ってみた

# はじめに
あまりAWS触ったことがない人向けに、サーバーレスアーキテクチャの勉強会をすることになりました。

座学だけやっても身につかないことはここ1年で感じていましたし、AWS日本語ハンズオンやQiita/Zennは全体的に説明が丁寧すぎて苦労しないので、独自のハンズオンを作ってみようと思いました。

## この記事の趣旨
そこで本記事では、**初学者が苦労して学ぶ**ハンズオンを目指しています。
自分で調べて、トライ&エラーして知識を学んでいくという感じです。

初学者向けの研修としても、チューターが何人かいればサポートしながら動くものが作れることで、知識だけでなく達成感も得られると思います。

:::note
この記事は勉強会の結果をフィードバックして、更新していきたいと思います。
:::

# ハンズオン要件編
## 要件
今回のハンズオンでは**図書貸出アプリ**を作ります。
イメージしやすいと思いますが、図書館で管理する本を利用者に貸し出す、返却するなどを行います。

基本的な要件は以下とします。

* 利用者は、図書館で扱う本の一覧を取得できる
* 利用者は、貸出

元記事を表示

EventBridge Scheduler→Amazon SQS→Lambda の連携

# 前回
https://qiita.com/remonga/items/b865126b580aa79607e2

前回はEC2上のプログラムからAWS SDKを使って、スケジュールタスクを作るというところまで作りました。!

システムなのでその後、実行したい何かがあるはずです。
次のロジックに繋がる出口の部分をAmazon SQS とLambdaを使って構築しました。

# Amazon SQS

【徹底解説】AWSのメッセージングサービス

基本情報技術者試験で学ぶようなキューという概念だったりFIFOというものが活躍します。

![Screenshot 2024-06-09 213340.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507211/7e502da7-ae78-0d7e-5425-9cbd615f18af.jpeg)

何かプロセスが始まると別完了するまではプロセスの発行元は処理を待つ必要があります。
また、直接的な繋がりが発生してい

元記事を表示

毎日の電気量を通知する仕組みをLambdaで作った

## 目的
最近電気使用料が高くなってますよね?
サイトにログインして、前日使用した電気量を確認することが日課となっていましたが
面倒くさい

バッチ処理で毎日LINEに通知してくれたら楽だし
そういった仕組みのようなものを作ったこともなかったので
勉強になるかな~と思ってそれっぽいものを作ろうと重い腰を上げました
この記事はその備忘録的な感じです

## 構成図
仕組みとしては簡単です

![tokyo-gas.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3785830/39aeb223-3074-8271-7dc2-b34071734be6.png)

## LINE NOTIFYの設定
こちらのサイトのやり方を拝借しました。簡単簡単
https://zenn.dev/protoout/articles/18-line-notify-setup

問題なくテスト通知できました
[ ]で囲われているのはトークン名です
![image.png](https://qiita-image-store.

元記事を表示

terraform で作成した api gateway + lambda をローカル環境で動かす手法

api gateway + lambda の構成を作成したらローカルで動かして動作確認をしたいですよね。
今回は、terraform で作成した上記リソースをローカルで動かす方法をまとめました。
意外と癖が強くて、動くようになるまで苦戦しました。そのあたりについても書いていこうと思います。

# はじめに

AWS は公式で AWS SAM というサーバレス環境構築ツールを提供しています。

https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/what-is-sam.html

こちらは宣言した内容をそのままAWSにデプロイできる上、dockerを使えばローカルで動作させることも可能な優れものです。ただ、リソースを作成するために書くSAMテンプレートはなかなか癖があり、学習コストも少し高めです。
公式もそれを意識しているのか、2年ほど前に terraform で作成したコードからSAMテンプレートを作成してくれるツールが発表されました。

https://aws.ama

元記事を表示

Lambda でコンテナを動かすときのコールドスタート時間を計測する

# はじめに

Lambda でコンテナを使って動かすことができます。このときに、コールドスタートの時間がどれくらいになるか自信がなかったので、手元で簡単に試してみる記事です。コールドスタートの試行回数は数回程度なので、しっかりした検証ではない点を理解したうえで、この記事を活用ください。また、時期によってもパフォーマンスは変わってくると思うのでその点もご留意ください。

# 検証結果

個人的な意見ですが、コールドスタートでも、起動がかなり高速だと思いました。ざっくり以下の 2 パターンの検証です。

– コンテナイメージサイズ : 以下の 2 種類
– 100 MB
– 10,000 MB (約 10 GB)
– コンテナイメージ内のアプリケーション : bash script を実行
– Lambda 関数のメモリ : 1024 MB
– VPC : VPC 外で実行

![image-20240608180505909.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/23

元記事を表示

AWS上で Swift の Lambda を動かしてみる

サーバー系は苦手なのに、必要に迫られて AWS で APIを実装する必要性に迫られた。別に、Node.jsやJavaを使えば、もっと簡単に実装できるかもしれないけれど、やはり Swift での実装にこだわってみた。

## 情報収集

まずは「aws、lambda、swift」くらいで検索してみる。このあたりがトップででてくる。

https://github.com/swift-server/swift-aws-lambda-runtime

https://www.swift.org/blog/AWS-lambda-runtime/

このあたりも気になる。

https://developer.apple.com/videos/play/wwdc2020/10644/

## Projectを作成

“`sh
mkdir mylambda
cd mylambda
“`

次の構造のようにファイルを構成します。

“`
$ tree .
.
├── Package.swift
└── Sources
└── mylambda
└── main.swif

元記事を表示

AWS LambdaでBedrock APIを呼び出す

[link-1]: https://qiita.com/MhalTeddy/items/5fe8d8ace7b48e1fadec “Amazon Bedrock APIの基本”
[link-2]: https://qiita.com/MhalTeddy/items/b8917f72a32ca5d389dc “AWS CLI”
[link-3]: https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html “Lambda Permissions”

## はじめに
生成AIのRAGシステムを構築する前段階として、AWSのLambdaから生成AIモデルを呼び出してみました。
実行ロールの割り当てに引っかかって時間を使ったので、やり方をまとめました。

## Amazon Bedrockの事前準備
まず、AWS CLIをインストールして認証します。
方法は[AWS CLIを使い始めるまで][link-2]に書いています。

次に、Bedrockへのモデルアクセスとトークンの発行を行います。
こちら

元記事を表示

【続】LINEメッセージをAWS Lambdaで送受信してみたお話

## はじめに
業務にてLINE MessagingAPIを利用したLINEでのコミュニケーションツールを作成したので、技術共有と自分の備忘録もかねて書いていきます。
今回は[前回の投稿](https://qiita.com/inacyc_k/items/709f6670d1f0b5ad3677)の追加機能実装となります。以前までのテキストメッセージ以外にも画像の送受信実装を行います。

## 前回の振り返り
前回はLINE公式アカウントを作成し、テキストメッセージの送受信を行いました。
いわゆるこんな感じ。
まずはLINEからユーザーがメッセージを行うと、同じテキストを返信する、というもの。

そしてAPIを叩くことで、テキストメッセージを送信するです。
【メモ】Labmdaの作成済みレイヤー

https://github.com/keithrozario/Klayers?tab=readme-ov-file

一にも二にもここ。

pythonのrequestsライブラリーひとつ、自分のローカル環境でpip install -t . してzipを作って、、ってやるのは大変面倒です。上のgithubでは作成済みのレイヤーが公開されています。その中から選んで、Lambdaのレイヤー設定「ARN を指定」で入力することで、必要なライブラリがセットアップされます。
有名ライブラリしか載っていませんが、かなり重宝します。

元記事を表示

DynamoDBストリームって何?

# はじめに
DynamoDBのストリームについて学ぶ機会があったので、備忘録として記事を書きます。

# DynamoDBストリームとは
DynamoDBストリームとは、DynamoDBの機能の一つで、**テーブルのデータ変更(アイテムの作成、更新、削除)をリアルタイムにキャプチャし、それに基づく処理をトリガーするためのものです**。
DynamoDBストリームを有効にすると、テーブル内のアイテムに対する変更がストリームに記録されます。これにより、変更の内容を順次取得して、様々な用途に利用することができます。
「Stream」の「流れ」という意味の通り、**テーブル内のデータ変更(作成、更新、削除)の連続的な流れをキャプチャし、保存する機能**ということです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2613586/0645c6f1-66b3-381d-f771-6da345c11f69.png)

https://docs.aws.amazon.com/ja_jp/amazo

元記事を表示

ECS タスク定義ファミリーの古いリビジョンを削除

# issue
* タスク定義のリビジョンが溜まりすぎている

# 対策
* ライフサイクルがないようでまたもやLambda出動

# Lambda
“`python:lambda_handler Python3.12
import json
import time
import boto3

def list_all_task_definitions(ecs_client):
paginator = ecs_client.get_paginator(‘list_task_definitions’)
task_definitions = []

for page in paginator.paginate(status=’ACTIVE’):
task_definitions.extend(page[‘taskDefinitionArns’])

return task_definitions

def list_task_definition_revisions(ecs_client, task_definition_family)

元記事を表示

Google Cloud Run と AWS Lambda のコールドスタート時間を言語別に観察してみる

![plot_256.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/95370/1b04e167-0378-dfc1-dd0c-dbaea3b9d6ac.png)

コンテナを**リクエスト処理時間ベースの料金体系**で実行できるサーバレス環境としては、Google の Cloud Run([2019年11月GA](https://cloud.google.com/run/docs/release-notes#November_14_2019))と AWS Lambda([2020年12月にコンテナに対応](https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-container-image-support/))が特に有名でしょう。

これらの環境は、一度起動したコンテナインスタンスをしばらく生かしておき、その後のリクエストに使いまわします。しかし、生きているインスタンスが足りない場合は新たなコンテナの起動から始めるいわゆる「コールドスタート」と

元記事を表示

mockito.MockedStatic を使うときの書き分け 2つ

# はじめに

`mockedStatic` あんまり使ったことがなく、『エラーが何で起きてるか分からん!』と質問されたときに即答できなかったのが悔しかったので備忘。

# もくじ

– [mockito.MockedStatic の書き方2つ](#mockitomockedstatic-の書き方2つ)
– [サンプルコード](#サンプルコード)
– [メソッド参照を使う場合](#メソッド参照を使う場合)
– [ラムダ式を使う場合](#ラムダ式を使う場合)
– [使い分け](#使い分け)
– [参考](#参考)

# 実行環境

– Java8 以降
– JUnit5
– Mockito 4.11.0

“`gradle:build.gradle
dependencies {
testImplementation(‘org.mockito:mockito-core:4.11.0’)
testImplementation(‘org.mockito:mockito-inline:4.11.0’) // 3.4.0以降でないと使えない
}
“`

※ `mo

元記事を表示

AWS SAP対策#3 LambdaからAuroraへの接続をより効率よく行う

AWS SAP試験対策 #3

# 問題(ざっくり)
あるWebアプリケーションは、Lambda関数でAurora MySQLデータベースをクエリします。データベースは複数のリードレプリカで構成されています。アクセスが集中する期間では、アプリケーションのパフォーマンスが低下します。アプリケーションが多くのデータベース接続を行うために遅延が発生している模様です。パフォーマンスを向上させるにはどうすればいいですか?

① ゲートウェイロードバランサーを作成して、Auroraリードレプリカ間で接続を分散する。
② Auroraサーバーレスデータベースクラスターで自動スケーリングを使用する。
③ RDS Proxy接続プールをAuroraデータベースのクラスターエンドポイントに接続する。
④ データベース接続を開くためのLambda関数コードをイベントハンドラーの外に置く。

\*
\*
\*
\*
\*
\*
\*
\*
\*
\*
\*
\*
\*
\*
\*
\*
\*
\*
\*
\*

# 回答
**④ データベース接続を開くためのLambda関数コードをイベントハンドラーの外に置く

元記事を表示

S3 Object Lambdaを利用したOn-Demandイメージ変換サービスの紹介

こんにちは。ムシンサ・コミュニティ開発チームのバックエンドエンジニア、チョ・ユシンです。 今回はAWS S3 Object Lambdaを利用してオンデマンドイメージ変換サービスを構築した事例を共有したいと思います。

### イメージ変換サービスとは?
一般的にサーバーでイメージを提供するためには、オリジナルイメージよりも小さいサイズのイメージを提供する方がサーバーのリソースおよびトラフィックコストを節約できます。最近ではスマートフォンの発展により、スマートフォンのカメライメージのサイズが基本的に10MB前後で保存されるため、100枚のイメージを提供するだけで1Gbpsのネットワーク帯域を占有してしまいます。また、イメージサイズが大きい場合、クライアント側でもイメージをレンダリングするのに時間がかかり、ユーザーエクスペリエンスにも悪影響を与える可能性があります。

従来のイメージ変換および提供方法は、AWSチュートリアルにも記載されているように、S3の保存イベントを通じてリサイズされたイメージを保存し提供する方式です。変換されたイメージがオリジナルイメージと同様にストレージに保存され

元記事を表示

OTHERカテゴリの最新記事