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

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

AWS Lambdaを単体で動かしてみた

## 参考にしたハンズオン
公式で公開されている以下のハンズオンを見ながら自分でやってみました。

https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Serverless-1-2022-confirmation_422.html

このハンズオンのゴールは以下の構成ですが、本記事ではAWS Lambdaを単体で動かしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3848705/a0ef753a-a545-9764-d3df-99f68a0ec025.png)

## やってみる
マネジメントコンソールにアクセスし、Lambdaのページにアクセスします。
「関数の作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3848705/c905d830-ab7f-25c1-710e-f2

元記事を表示

AWS Lambdaでなんちゃってオートスケーリング

現在運用中のELB配下にあるEC2インスタンスの負荷が高くなってきたため、負荷の高い時間帯のみEC2インスタンスを追加してELBに登録させるという処理をLambdaを使って行った際の備忘録です。

※運用中のELBはNLBですが、ALBでもだいたい同じだと思います。

・負荷の高い時間帯になったら:EC2インスタンスの起動>ELBへの登録
・負荷の低い時間帯になったら:ELBから削除>EC2インスタンスの停止

## 1. ポリシーの作成(EC2インスタンスの起動・停止用)
「IAM > ポリシー > ポリシーの作成」に進みます。

サービスからEC2を選択して下記アクションを許可します。
“`
ec2:Describe
ec2:Start
ec2:Stop
“`

“`
ポリシー名:Auto_EC2-Policy
“`
※分かりやすい適当な名前を入力して保存

## 2. ポリシーの作成(ELBへの登録・削除用)
再度「IAM > ポリシー > ポリシーの作成」に進みます。

サービスからELB v2を選択して下記アクションを許可します。
“`
RegisterTarget

元記事を表示

AWS NLBを活用した自動メンテナンスモードの実装: EC2インスタンスの停止時にSorryページを表示する仕組み

## はじめに
本記事では、AWSのNetwork Load Balancer (NLB)を使用して、2台のEC2インスタンスが稼働するサービスにおいて、両方のインスタンスが停止した際に自動的にメンテナンス用の「Sorryページ」を表示する仕組みを解説します。

また、1台でもインスタンスが復旧した際に通常サービスに戻る自動化構成についても紹介します。

このシステムは可用性とメンテナンス性を向上させるために有効ですが、現在は検証を行っていないため、今後自分の環境で実施していく予定です。

## フロー全体の流れ
### 通常時のトラフィックフロー

“`css
クライアント

NLB

通常のターゲットグループ

稼働中のEC2インスタンス (通常サービス)
“`

:::note
**クライアント → NLB**
ユーザーがサービスにアクセスすると、リクエストはNLB(Network Load Balancer)に送信されます。

**NLB → 通常時のターゲットグループ**
NLBは正常に稼働中のEC2インスタンス(通常のターゲットグループ)にト

元記事を表示

Lambdaを使ってDiscordBot(Python)の実行

## はじめに
今回作成したDiscordBot(Python)は、Discordのチャンネルに対してメッセージを書き込むものを作成しました。
また、毎日0:00に書き込んでほしいので、EventBridgeからLambdaを起動して書き込む仕組みにしました。

用途としては、FiveMのガソリンスタンドを経営しており、ガソリンの価格を日々変更したく、一定の範囲のランダム値を投稿するのと、ゲーム内でのX(ツイッター)でポストするためのテンプレート文章をDiscordのチャンネルに投稿するものを作成しました。

## 構成イメージ

EventBridgeからLambdaを起動して、Discrodのチェンネルにメッセージを書き込みます。
【全体の概要構成】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3868301/d03f1b86-7eea-e78d-2707-51147cf2ef6b.png)

【EventBridgeとLambdaの構成】
![image.png](https:

元記事を表示

AWSによる自動メンテナンスページ表示の実現: NLBとLambdaを活用した可用性向上の構成案

## はじめに
実務において、ネットワーク負荷分散(NLB)を利用した構成で、システムが停止した際に自動でメンテナンスページ(Sorryページ)を表示させる必要がありました。

特に、EC2インスタンスが停止した際に、その状態を監視して自動的にSorryページへ切り替えるフローの構築が求められ、EventBridgeやLambdaを利用した動的な制御が必要でした。

今回の記事では、この動作を実現するために行った構成案について、考えましたので、検証前の自分への備忘録として整理していきます。

## 前提知識
基本的なAWSに関する知識は以下になります。

:::note
**NLB (Network Load Balancer):**
通常時、クライアントのリクエストはヘルシーなEC2インスタンスへルーティングされます。

**EC2インスタンス:**
ヘルシーな状態であれば、通常のサービスを提供します。

**EventBridge:**
EC2インスタンスの状態(Unhealthyかどうか)を監視します。すべてのインスタンスがUnhealthyになると、イベントを発生させます。

元記事を表示

cargo-lambda + cargo-lambda-cdkでRustで書いたLambdaをAWSにデプロイするハンズオン記事

## はじめに

LambdaをRustで書く機会がありました。
LambdaはRustを標準でサポートしているわけではないので、通常であればカスタムランタイムを使うことになると思います。
一見大変そう…と感じるかもしれませんが、cargo-lambdaとcargo-lambda-cdkを用いることによって、快適に開発を進められました。

今回の記事では簡単なAPIをハンズオンで実装することでそのtipsをお伝えできればと思っています。
本記事では,POSTすることでDynamoDBにレコード追加をするLambda,
GETすることで作成したレコードの一覧を返すLambdaの2つをcargo-lambda, cargo-lambda-cdkを用いて定義・デプロイしたいと思います。

## cargo-lambda, cargo-lambda-cdkとは?

### cargo-lambdaとは

https://github.com/cargo-lambda/cargo-lambda

ひとことで言ってしまえばRust + Lambda開発のためのcargoのサブコマンドです。

元記事を表示

メール送信LambdaをAmplifyで作成

## メール送信LambdaをAmplifyで作成

Amplify で構築した環境で、DynamoDB の特定のテーブルにレコードが追加された際、Amazon SES を利用してメールを送信するLambda Trigger を作成しました。

### Lambda Triggerを作成する
![a2e5ac8e-02b5-4c74-914f-6839ee7b5cc5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1781492/19dbb63c-19d1-0397-3b1b-405b95912062.png)

`amplify add function` を使ってLambda Trigger を作成します。Cloudformation のテンプレートで、対象のテーブルへの権限は自動生成されます。

“`
“PolicyDocument”: {
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”

元記事を表示

EC2インスタンス停止時にALBをSorryページに切り替える設定手順

## はじめに
AWSで単一のEC2インスタンスを使用している場合、もしそのインスタンスが停止した際には、ALB(Application Load Balancer)の固定レスポンス機能を利用して「Sorryページ」を表示し、起動している場合には通常のページを表示する仕組みを作ることができます。

今回は、Amazon EventBridge、Lambda、ALBを組み合わせて、この自動化を行う手順をご紹介します。

## 1. IAMロールの作成
Lambda関数がELBのリスナールールの変更を行うために必要なIAMロールを設定します。

**手順:**
・AWSマネジメントコンソールにログインします。
・IAMに移動し、ロールの作成をクリックします。
・Lambdaサービス用のロールを作成します。

以下のポリシーをアタッチします。
“`json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [

元記事を表示

2台のEC2インスタンスの状態を自動検知し、ALBのレスポンスを切り替える手順

## はじめに
AWS環境において、2台のEC2インスタンスが停止した際に、ALB(Application Load Balancer)の固定レスポンス機能を使って「Sorryページ」を表示し、1台でも起動している場合は通常のページを表示する仕組みを構築します。

このプロセスでは、Amazon EventBridge、Lambda、ALBを組み合わせて自動化します。

## 1. Amazon EventBridge で EC2 インスタンスの状態を検知
まず、EC2インスタンスが停止したことを検知するために、EventBridgeルールを設定します。

ここでは、「i-0458be1d8c980e8ec」と「i-0b27db6a9b067f345」という2台のEC2インスタンスを監視対象とします。

以下のJSONルールを使って、これらのインスタンスが停止状態に入った時点でEventBridgeがトリガーされるように設定します。

“`json
{
“source”: [“aws.ec2”],
“detail-type”: [“EC2 Instance State-cha

元記事を表示

AWS Step Functionsの実行結果をSlackへ通知する

# はじめに

AWS Step Functionsの実行結果をSlackへ通知する手順について、以下の記事では、Step Functionsの実行結果を取得し、Slackに通知する方法を紹介します。この記事では、SNS(Simple Notification Service)とAWS Lambdaを使ってStep Functionsの実行結果をトリガーし、Slackに通知を送信する流れを説明します。

# 構成
![Untitled Diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1065841/9b1ef79f-827b-10b4-3062-575ed7ba49fa.png)

# 目次

1. [SlackのWebhookURLを取得](#SlackのWebhookURLを取得)
1. [SNSトピックの作成](#SNSトピックの作成)
1. [StepFunctionsの実行結果をSNSへ通知する設定

元記事を表示

Playwright PythonをAWS Lambdaで動かす

たまにPlaywrightをLambdaで動かしたくなりますよね。

すでにいろいろな方が挑戦されているようで、簡単に使えるLambdaレイヤーが公開されているようです。

https://developer.mamezou-tech.com/blogs/2024/07/19/lambda-playwright-container-tips/

ただ、そういうことじゃないんです。自分でやることに意味があるんです。なんとか動作しましたので、ご紹介。

## きっかけ

先日投稿したこちらの記事で、LangChainの「AsyncChromiumLoader」を紹介しました。

https://qiita.com/moritalous/items/44c0cff860f7b5697822

これをLambda化したいなぁと思ったのがきっかけです。(そしてBedrock Agentsから呼び出したい)

AsyncChromiumLoaderは内部でPlaywrightが使われているのですが、先ほど解説した「`chromium.launch`」の呼び出し部分のargsを外部から指定する方

元記事を表示

AWS Lambdaのタイムアウトを検知する (Terraform)

## 概要
– `AWS Lambda` のタイムアウトを検知する実装を解説します
– 実装の `Terraform` コードサンプルを提供します
– `CloudWatchLogs MetricFilter` におけるハックをお伝えします

## AWS Lambdaのタイムアウトを検知する実装
### 想定ケース
以下のように、EventBridge経由でLabmdaを実行するケースを考えます

![architecture](https://raw.githubusercontent.com/RyuyaIshibashi/great-chatgpt-quotes-bot/master/chat_architecture.jpg)

引用:

https://qiita.com/rubita/items/966bcbfd58c6e9368556

### Lambdaの仕様
Lambdaは以下の仕様を持っています
– タイムアウト設定のデフォルト値は 3 秒です
– 最大値の 900 秒 (15 分) まで 1 秒単位で調整できます
– タイムアウトエラーとなった場合、2回までリト

元記事を表示

aws-cli Athena/Lambdaのラッパースクリプトを書いて作業を効率化する

# はじめに

この記事は@ktatさんの[aws-cli のラッパースクリプトを書いて作業を超効率化する](https://qiita.com/ktat/items/6494390dec4b5b9c662b)を見て、AthenaとLambdaのラッパースクリプトを作ってみたものになります。

# 現状

業務上Amazon AthenaやAWS Lambdaをよく使うのですが、「クエリを書いて結果を見たい」「関数を実行させたい」場合に逐一コンソールへ入ってそれを行うのが面倒でした。

また、aws cliも

“`shell:Athenaの場合
# 一々execution idを取得した後、そのステータスを確認し、終了していたらget-query-resultsを実行して結果を得る
$ aws athena start-query-execution –query-string –そのほかの設定
$ aws athena get-query-execution –query-execution-id “start-query-executionで発行されたID”
$ aws

元記事を表示

AWS LambdaにおけるARM64とx86_64の性能比較

## はじめに

AWS Lambdaは、ARM64(Graviton2)とx86_64の2種類のアーキテクチャで動作します。ARM64はモバイル向けや低消費電力が特徴のRISCアーキテクチャで、一方x86_64はサーバー向けに広く使われるCISCアーキテクチャです。

今回は、AWS Lambdaで**ARM64**と**x86_64**のパフォーマンスを、I/Oバウンド処理、CPUバウンド処理、並列処理の観点で比較しました。Pythonを用いたサンプルコードを実行し、メモリサイズごとの処理時間を測定しました。

## サンプルコード

次のPythonコードをAWS LambdaでARM64とx86_64の両方で実行しました。このコードは以下の3種類の処理を行います。

1. **I/Oバウンド処理**: ファイルの読み書きでI/O性能を測定。
2. **CPUバウンド処理**: 浮動小数点演算を大量に行うことでCPUの性能を測定。
3. **並列処理**: スレッドを用いた並列計算のパフォーマンスを測定。

“`python
import time
import math
i

元記事を表示

【AWS,Python】LambdaのログをCloudWatchに残す

下記記事で行っているWEBスクレイピングのlambdaのログをCloudWatchに残します。

https://qiita.com/otaruit/items/837f2eacf69e5917dd1d

# CloudWatchの設定
ロググループ、「ロググループを作成」と進みます。

![Screenshot 2024-09-10 095839.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722467/c6e79306-946c-fd3d-bc79-cfa10382ac80.png)

# ロググループの設定
グループ名、保存期間を設定します。
![Screenshot 2024-09-10 100011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722467/e3402706-3ceb-9704-0f35-b7678ff4b9eb.png)

#
# コード修正

ログを出力させるようにprint()で要

元記事を表示

Azure と AWS の サーバーレス コンピューティングの主要な違いを個人的に比較

Azure Functions と AWS Lambda は、どちらもサーバーレスコンピューティングの主要サービスであり、多くの類似点がありますが、重要な違いも存在します。
この比較では、機能面、性能面、そして特徴的な機能に焦点を当てて両サービスを詳細に比較します。

## 機能面の比較

### サポートするプログラミング言語

– **Azure Functions:** C#, Java, PowerShell, Python, _JavaScript, TypeScript_ [^1]
– **AWS Lambda:** C#, Java, PowerShell, Python, _Go, Ruby_ [^2]

[^1]: https://learn.microsoft.com/ja-jp/azure/azure-functions/supported-languages
[^2]: https://aws.amazon.com/jp/lambda/faqs/

### トリガーとバインド/イベントソース

– **Azure Functions:** Azure の各種サー

元記事を表示

Lambda関数からプライベートサブネットのリソースへアクセスする方法

今回は、Lambda関数からプライベートサブネット内のAWSリソースにアクセスする方法について解説します!
この内容は、実務でもよく使うシーンがあり、さらにAWS認定ソリューションアーキテクト アソシエイト (SAA)の試験範囲にも含まれていますので覚えたい内容です!
よく忘れてしまう内容なので自分なりにまとめました。

結論としては、Lambda関数からプライベートサブネット内のリソースにアクセスするには、Lambda関数にVPCアクセスの設定を行う必要があります。

**LambdaとVPCの関係**
Lambda関数は作成されると、自動的にLambda専用のセキュアなVPCに構成されます。このVPCからはインターネットやパブリックサブネット内のAWSリソースへはアクセスできますが、プライベートサブネット内のリソースには直接アクセスできません。

**プライベートサブネット内のリソースへアクセスするには?**
Lambda関数からプライベートサブネット内のリソースにアクセスさせたい場合、Lambda関数にVPCアクセスの設定を行います。この設定では、アクセスしたいリソースがある

元記事を表示

Lexを使って自動問い合わせ応対しよう!(1)

# はじめに
ヘルプデスクの対応、システムの改修、新しいツールの選定などなど、情シスってやることいっぱいですよね。
パンク気味になるとついつい問い合わせが漏れたり、一次対応が遅れがちになっちゃいます。
そこで!!今回はAmazon Lexを用いて私の代わりに一次対応させるbotを作って業務をじゃんじゃか楽にしちゃおうと思います!!!
今回は第一弾として想定される質問に対して一次応対できるようなbotを作ります!
(備忘録として書いたので過不足あれば教えてください!)

# Amazon Lexとは

Amazon Lexは、音声認識とテキスト理解を組み合わせた対話型AIサービスです。Alexaのような対話型の仕組みをアプリやウェブサイトに組み込むことが出来ます。
主な特徴:
・ユーザーの音声や文字入力を理解
・適切な応答を生成
・タスクを実行(予約受付など)

例えば、ユーザーが「予約したい」と言うと、システムは「何名様ですか?」と聞き返すなど、自然言語で対応します。これにより、カスタマーサービスの自動化や対話型インターフェースの作成が可能になるとのこ

元記事を表示

マイGPTを使って反社調査を行う

## マイGPTとは
英語版では`My GPTs`と表示されますが、本記事では`マイGPT`と表記します。

マイGPTは、OpenAIのChatGPTを使って、誰でも簡単にカスタムチャットボットを作成できるサービスです。プログラミングの知識がなくても作成可能です。

**My GPTs**を利用するには、有料の**ChatGPT Plus**か、それ以上のプランに加入する必要があります:point_up_tone1:
![myGPTpng.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320164/c4eb7f9b-59b4-d5a9-6560-845a6193c0f9.jpeg)

## 早速作ってみよう
お馴染みな[ChatGPT画面](https://chatgpt.com/)の右上からメニューを開いてください、`マイGPT`をクリックしてください。
![2E91FE27-D8F8-4E7A-AA7F-03FE6165331B.jpeg](https://qiita-image-store.s

元記事を表示

RevenueCat WebhookをAWS API Gateway、Rust Lambda、DynamoDBで処理する

RevenueCatは、iOS、Android、Webなど様々なプラットフォームでアプリ内サブスクリプションを簡素化する強力なサブスクリプション管理サービスです。その主要機能の1つは、購入、更新、キャンセルなどのサブスクリプションイベントについてバックエンドに通知するWebhookを送信する能力です。この記事では、AWS API Gateway、AWS Lambda(Rustで実装)、およびストレージ層としてDynamoDBを使用して、RevenueCat Webhookを処理する方法を探ります。

![RevenueCat-Webhooks with AWS.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887819/8af63fd5-705c-983d-48e9-b334c03a9315.jpeg)

## アーキテクチャ概要

アーキテクチャは以下の主要コンポーネントで構成されています:

1. **RevenueCat Webhook**:RevenueCatはWebhookイベント(サブスク

元記事を表示

OTHERカテゴリの最新記事