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

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

SQSとLambdaの「部分的なバッチレスポンス」を試す

## 背景

SQSとLambdaを連携させるアプリケーションにおいて、メッセージ単位でのエラー処理を考える必要があり、Lambda関数に具備されている「[部分的なバッチレスポンス](https://aws.amazon.com/jp/about-aws/whats-new/2021/11/aws-lambda-partial-batch-response-sqs-event-source/)」がどのような仕組みなのかを理解するために実際に触って試した際の記録。

## 検証構成

SQS -> Lambda

## 検証

### SQS

あらかじめ適当な名前でSQSキューを作っておく。今回は標準キューを採用。

### Lambda

– SQSキューからバッチでメッセージをポーリングし、メッセージ本文をログ(CloudWatchLogs)に出力
– 部分的なバッチレスポンスの挙動を確認したいので、特定のメッセージのみ例外を発生させる(バッチで取得した最後の要素で例外を発生させる)
– 例外が発生したメッセージのIDをレスポンスに含める
– 部分的なバッチレスポンスによって、**

元記事を表示

Lambda で awscli を利用する

# はじめに
Lambda でAWS のインスタンスを管理をさせたいとき awscli のインストールが必要になるので、これを利用できるようにする。

# 概要
1. awscli を利用する EC2 のインスタンスと同じ OS を用意する (docker)
1. docker container でawscli をインストールして zip でかためる
1. zip にしたファイルを S3 に置く
1. S3 に置いたファイルをLambda のレイヤーで 指定する
1. Lamda の関数を用意して レイヤーを指定
1. bootstrap, hello.sh を用意(編集)

# awscli を利用して EC2 に接続する Access キーを用意する
“`bash
# cat /var/lib/aws/aws_cli.key
アクセスキー
シークレットキー
ap-northeast-1 (ゾーン)
text
“`

# awscli をインストールする環境 (docker コンテナ) の用意
Amazon Linux 2023 でawscli を動作させたいので、このOSの

元記事を表示

AWS CloudTrailのJSON確認とEventBridgeを活用した詳細なイベントキャプチャ手法

# CloudTrailのJSON確認方法とEventBridgeでのイベントキャプチャ手法
EventBridgeは、AWSサービスやカスタムアプリケーションからのイベントを受け取り、指定したターゲットにルーティングするサービスです。CloudTrailと組み合わせることで、特定のイベントが発生した際に自動的に処理を行えます。
AWSリソースの変更やAPIコールをトリガーとしてEventBridgeで検出する場合、CloudTrailのJSONイベントを使用します。しかし、CloudTrailのコンソール画面での確認だけでは十分でないことがあります。
そこで、より詳細な条件でのイベントキャプチャ方法について解説します

### 使用するリソース
1. CloudTrail
1. Eventbridge
1. Lambda
1. CloudWatch Logs

## Lambdaの作成
Lambda関数内でイベントデータをログに出力することで、どのようなイベントがキャプチャされているかを確認できます。

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

元記事を表示

AWS LambdaとSSMを使用したEC2インスタンスの状態監視とALBの動的切り替え②

## はじめに
このブログ記事では、AWS Lambdaを使用してEC2インスタンスのhttpdサービスの状態を監視し、サービスの状態に応じてALB (Application Load Balancer) のリスナールールを動的に変更する方法を紹介します。

メンテナンスモードや通常モードへの切り替えを自動化することで、システムの可用性を高めることができます。

## 全体のコード
“`py
import boto3

def lambda_handler(event, context):
ec2_client = boto3.client(‘ec2’)
ssm_client = boto3.client(‘ssm’)
elbv2_client = boto3.client(‘elbv2’)

# 監視対象のEC2インスタンスIDリスト
instance_ids = [“i-0458be1d8c980e8ec”, “i-0b27db6a9b067f345”]

# httpdサービスの状態を確認するためのSSM Run Command

元記事を表示

AWS LambdaとSSMを使用したEC2インスタンスの状態監視とALBの動的切り替え①

## はじめに
AWS LambdaとAWS Systems Manager (SSM) を活用し、EC2インスタンスのhttpdサービスの状態を監視して、状態に応じてApplication Load Balancer (ALB) のリスナールールを変更する手法について解説します。

具体的には、httpdサービスが停止している場合にメンテナンス用のSorryページを表示し、少なくとも1台のサービスが稼働している場合は通常のページを表示するように設定します。

## コード紹介
### 全体のコード
以下は、Lambda関数で実装されたコードです。SSM Run Commandを使用してhttpdサービスの状態を確認し、サービスの停止に応じてALBのルールを変更する処理を行います。

“`py
import boto3
import time

def lambda_handler(event, context):
ssm_client = boto3.client(‘ssm’)
elbv2_client = boto3.client(‘elbv2’)

#

元記事を表示

NestJSでログフォーマットを変更してリクエスト単位のIDを共通でログに記録する方法

## ログの標準フォーマット

NestJSの標準で出力されるログは以下のような感じです

“`
[Nest] 227 – 10/09/2024, 2:47:17 PM LOG [NestFactory] Starting Nest application…
“`

ただ、運用を考えると以下の点を変更できるようにしたく思いました。

– プロセスIDの前にある`[Nest]`がいらない
– プロセスIDよりリクエスト単位のIDが欲しい
– AWS Lambda上で実行するならAWSが割り振ったリクエストIDを使いたい
– 余計なスペースは削除したい
– 時間はミリ秒まで出して欲しい
– ログレベルのみでログ監視できるようにしたい

## NestJSのログ拡張方法について

Loggerは一から`LoggerService`で定義されたインターフェースを実装する方法もありますが、基本的な動きは変更せずに処理を少し変更したいような場合は、`ConsoleLogger`クラスを継承して、変更したいメソッドをオーバーライドすることで対応が可能です。

外部ロガーを

元記事を表示

個人的な備忘録:Lambda関数でのいろいろな処理について

## 全体コード
“`py
import boto3

def lambda_handler(event, context):
ec2_client = boto3.client(‘ec2’)
elb_client = boto3.client(‘elbv2’)

# 監視対象のEC2インスタンスのID
instance_ids = [‘i-0123456789abcdef0’, ‘i-0abcdef1234567890’]

# インスタンスの状態を確認
response = ec2_client.describe_instances(InstanceIds=instance_ids)

instances_stopped_count = sum(
1 for reservation in response[‘Reservations’]
for instance in reservation[‘Instances’]
if instance[‘State’][

元記事を表示

Lambda(python)でS3からファイルを取得し、ファイルのマジックナンバーとMIMEを判定する

# やりたいこと
Lambda(python)で事前にS3バケットへアップロードしたファイルを取得し、ファイルの各メタデータであるマジックナンバーとMIMEを取り、ファイル形式を判定したい

# 構築
・S3バケット
・Lambda
・IAMポリシー
・IAMロール

# やり方
Lambda→S3のポリシー
“`
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “VisualEditor0”,
“Effect”: “Allow”,
“Action”: [
“s3:*”
],
“Resource”: “arn:aws:s3:::*”
}
]
}
“`

Lambdaソース
“`
import boto3

def lambda_handler(event, context):
# S3バケットとファイルキーを指定

元記事を表示

Lex Bot の slots の値をLambdaで取得してみる

# はじめに
本記事では、Lexのslotに設定された値を `Code hooks` で呼ばれたLambdaで受け取る処理を実装していきます。

# 環境
– Python:3.12
– Lex:v2

# ゴール
Code hooksで呼ばれたLambdaでLexのslotに設定された値を受け取る

# Lex
本記事では下記のようにslotが1つあるLex Botを想定してます。
何でもよいですが今回は日付入力を想定して、Slot typeを`AMAZON.Date`にしておきます。

– SLots
– Name:get_date
– SLot type:AMAZON.Date
– Prompts:hoge

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/6334777b-8087-6fdf-18f3-0a2447610431.png)

– Sample utterances
– {get_date}

![image.

元記事を表示

AWSのインフラ構築におけるベストプラクティスと代表サービスのご紹介

## はじめに
クラウドコンピューティングが進化し、多くの企業や開発者がAWS(Amazon Web Services)を活用して効率的なインフラを構築しています。

しかし、AWSには無数のサービスや設定項目があり、適切な方法で利用しなければ、セキュリティのリスクやパフォーマンスの低下につながる可能性があります。

この記事ではAWSのベストプラクティスについて説明し、特にインフラ構築に役立つ有名なサービスを5つ紹介します。

AWSを使い始めたばかりの方や、さらなる最適化を目指す方にとって参考になる内容です。

## AWSとは
Amazon Web Services (AWS) は、Amazonが提供するクラウドプラットフォームで、スケーラブルなコンピューティングパワー、ストレージ、データベースサービスなどをオンデマンドで提供しています。

https://aws.amazon.com/jp/what-is-aws/

AWSは、企業が物理的なサーバーやインフラを管理する必要なく、柔軟かつ効率的にITリソースを利用できるように設計されています。

これにより、コストの削減やスピー

元記事を表示

AWS LambdaとAPI Gatewayを使用したGETリクエスト対応のサーバーレスアーキテクチャ構築

## はじめに
AWS LambdaとAPI Gatewayを組み合わせることで、インフラ管理を必要とせず、スケーラブルなWebアプリケーションやAPIを構築することができます。

このアプローチはサーバーレスアーキテクチャとして知られており、イベント駆動型の設計により、コスト効率が高く、管理の負担も軽減されます。

この記事では、Lambda関数とAPI Gatewayを使用して、GETリクエストを処理するシンプルなAPIを構築する手順を紹介します。

## 前提条件
この記事の内容を実施するには、以下の要件が揃っている必要があります。

:::note
**AWSアカウント:**
AWSアカウントを持っていることが前提です。

**AWS CLIの設定:**
ローカル環境からAWSにアクセスし操作できるよう、AWS CLIをセットアップし、認証情報を構成しておいてください。

**LambdaとAPI Gatewayの基本理解:**
両サービスの基本的な機能や操作方法についての理解が前提となります。公式ドキュメントや入門書を参考に、事前に学んでおくとスムーズです。
:::

htt

元記事を表示

AWS LambdaとAPI Gatewayを使用したPOSTリクエスト対応のサーバーレスアーキテクチャ構築

## はじめに
AWS LambdaとAPI Gatewayを組み合わせることで、インフラ管理が不要でスケーラブルなWebアプリケーションやAPIを簡単に構築できます。

イベント駆動型のアーキテクチャを採用することで、システムのスケーリング、コストの最適化、運用負担の軽減などのメリットを享受できます。

この記事では、Lambda関数をAPI Gatewayで公開し、シンプルなAPIを構築するための具体的な手順を解説します。

## 前提条件
この記事の内容を実施するには、以下の要件が揃っている必要があります。

:::note
**AWSアカウント:**
AWSアカウントを持っていることが前提となります。

**AWS CLIの設定:**
ローカル環境からAWSにアクセスし操作できるよう、AWS CLIをセットアップし、認証情報を構成しておいてください。

**LambdaとAPI Gatewayの基本理解:**
両サービスの基本的な機能や操作方法についての理解が前提となります。公式ドキュメントや入門書を参考に、事前に学んでおくとスムーズです。
:::

## 達成したいこと
**

元記事を表示

RDSに初期データを自動で投入する方法

# やりたいこと
アプリケーションの起動時に**自動的**にRDSに初期データを入れたい場合があると思います
やり方は複数あると思いますが、今回はLambdaで実装していきます
また、CloudFormation化して全自動で初期データを投入する方法です

# 構成や条件
## 構成
以下の構成と初期プロセスをCloudFormationで自動化
![構成.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1952885/933a782b-e2dd-ddff-fdc2-c7e1bab0326f.png)

## 条件
– Aurora MySQL
– Lambdaで初期データ投入
– RDSインスタンスの起動を条件にEventBridgeでデータ投入用のLambdaを起動
– Lambda LayerはS3のrds-initバケットにrds-layer.zipとして保存
– Lambdaのソースコードはrds-initバケットにlambda.zipとして保存
– 初期データはrds-initバ

元記事を表示

「AWS Hands-on for Beginners Serverless #3 AWS Lambda と AWS AI Services を組み合わせて作る音声文字起こし & 感情分析パイプライン」をAWS CLIでやってみる

https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Serverless-3-2022-reg-event.html?trk=aws_introduction_page

上記、「AWS Hands-on for Beginners Serverless #3 AWS Lambda と AWS AI Services を組み合わせて作る音声文字起こし & 感情分析パイプライン」 をAWS CLIでやってみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3297641/de799de6-3293-eb51-4710-8764f7f12825.png)
ハンズオンから引用

# 03 S3 トリガーで Lambda ファンクションを起動する
## S3バケット作成
### 変数
“`bash:コマンド
# バケット名
date_var=$(date +%Y%m%d) \
&& echo ${date_var}

元記事を表示

サーバーレスCSV出力・ダウンロードの構成

こんにちは!
普段Web開発や保守をしており、
サーバーレス構成で開発を行ったので、その記事を記載します。

## はじめに
今回は、サーバーレスアーキテクチャを活用した出力システムの構成についてご紹介します。
サーバーレスアーキテクチャは、スケーラビリティとコスト効率が高いため、多くの企業で採用されています。
本記事では、AWSのStep Functions、Lambda、RDS、S3を使用して、データを取得し、CSV形式でS3に保存した後、CloudFrontの署名付きURLでメール送信するシステムの構築について詳しく解説します。

## 構成図
![【資料用】記事用_構成図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415982/bb8a2fff-f6bf-7338-aeae-bdfe38eb87e7.png)

## 各サービスの役割
– Step Functions
– 一連の処理フローをオーケストレーションし、各サービス間の連携を管理します。
– Lambda

元記事を表示

AWS Lambdaで簡単な運勢占いAPIを作ってみた

最近、AWS Lambdaを使って簡単なAPIを作成する方法を学んだので、アウトプットとして運勢占いAPIを作ってみました。サーバーレスで動作するため、コストを抑えつつ簡易的なAPIを作りたいときに便利です。

## どんなAPIか?
このAPIは、リクエストを送るとランダムに次の情報を返してくれる運勢占いです。

https://bx7pag052e.execute-api.us-east-1.amazonaws.com/default/fotuneFunction

– 今日の運勢: 「大吉」「中吉」「凶」など
– ラッキーカラー: 「赤」「青」「緑」などのランダムな色
– ラッキーアイテム: 「使い古した靴下」「かたつむりの置物」「賞味期限切れの大福」など、ユニークで面白いアイテム

## 使用技術
– AWS Lambda: サーバーレスでPython関数を実行
– API Gateway: Lambda関数をHTTPリクエストで呼び出すためのインターフェース
– Python: ランダムな運勢やアイテムを生成するためのスクリプト

## APIの動作サンプル
実際にAPIを叩

元記事を表示

Docker+AWS Lambda+Python(Flask)で簡単にサーバーレスAPIを実装する

# 🛢️ はじめに
ローカルの Docker 環境で AWS Lambda(Serverless Framework)と Python(Flask)でサーバーレス API を実装,デプロイします.非常に簡単にAPIを実装できるので便利です.皆さんも試してはいかがでしょうか.

# 🛢️ 自己紹介
初めまして.趣味でweb開発を勉強している273*(ツナサンド) / Kei.と申します.関西の大学生です.最近はフルスタック開発やツール制作を行なっています.まだまだ初心者です.

# 🛢️ 完成品
以下のリポジトリにテンプレートを用意しましたので,お好きに使ってください!

https://github.com/273Do/Sls-Python-Docker-TPL

# 🛢️ 実装
### 使用ツール
– [Docker](https://www.docker.com/ja-jp/):PCの中に仮想環境を作れるツール.他のプロセスと遮断できるため環境の差をなくすことができる.
– [AWS Lambda](https://aws.amazon.com/jp/lambda/):AWSが提

元記事を表示

Lambdaのエラーログを分別する方法

## AWS LambdaのログをCloudWatch Logs Insightsでエラータイプ別に分析する方法

AWS Lambda関数のログデータを効率的に分析し、エラーをタイプ別にカウントした事があったので備忘に残します。
このような場合に役立つツールが**CloudWatch Logs Insights**です。
Lambda関数が出力するログデータをCloudWatch Logs Insightsを使って分析し、エラーをタイプ別に集計する方法について記載します。

### CloudWatch Logs Insightsとは?

**CloudWatch Logs Insights**は、Amazon CloudWatchのログデータに対してクエリを実行し、迅速に必要な情報を抽出・分析するための強力なツールです。
SQLに似た構文を使い、ログメッセージをフィルタリングしたり、メトリクスを集計したりすることができます。これにより、AWS Lambdaをはじめとするさまざまなサービスのログを効果的に活用できるようになります。

### Lambdaから出るエ

元記事を表示

Amazon EventBridgeを使用したEC2上のApache監視/停止検知から自動再起動までの設定手順

## はじめに
AWS EC2インスタンス内でApache(httpd)のサービスを実行している場合、Apacheが停止することを検知する仕組みを導入することは、システムの可用性を確保する上で重要です。

この記事では、Amazon EventBridgeを活用してApacheのサービス停止を監視する方法について解説します。

Apacheサービスの停止を監視し、迅速な対応を可能にするための設定手順を紹介します。

## 前提条件
:::note
この記事では以下のものが前提となります。

**・EC2インスタンスが稼働中で、Apache(httpd)がインストールされていること。**
**・EC2インスタンスにCloudWatchエージェントがインストールされていること。**
**・AWS CLIが設定されていること。**
:::

## 手順1: CloudWatchエージェントのインストールと設定
まず、EC2インスタンスにCloudWatchエージェントをインストールし、Apacheプロセスを監視できるように設定します。

### CloudWatchエージェントのインストー

元記事を表示

AWS LambdaからAmazon Translateを呼び出してみた

## はじめに
本記事は以下の記事の続編です。

https://qiita.com/uccy/items/aaa0d9931095f6e05ba2

前回はLambdaを単体で動かすところまで実施しましたので、今回は**LambdaからTranslateを呼び出してみます**。

今回のゴール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3848705/0feb7194-d67b-1fd3-63f5-16103f1c76dc.png)

参考にしたハンズオンはこちら。

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

## やってみた
マネジメントコンソールにアクセスし、前回作成したLambda関数(translate-function)のページに行きます。
![image.png](https://qiita-image

元記事を表示

OTHERカテゴリの最新記事