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

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

AWSのStepFunctionsを利用してLambdaを動的並列処理させる方法

# 概要

前処理にて終了パラメータ個数分Lambdaを並列処理実行させることを実装するにはどうしたらいいかと調べつつできたのでメモしておく。

例えば、前処理にてS3へPUTしたファイルの複数のパスを後続へ渡し、各Lambdaがそれぞれの1つのファイルパスを受け取り処理をしたい場合に有効である。
今回はこちらを例にして説明する。

# StepFunctionsのワークフロー
![スクリーンショット (334) (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355599/65b14f3f-b04e-8e0e-4e58-e23ea5717645.png)
イメージは先ほども言ったが、

①Lambda Invokeで分割した複数ファイルをS3へPUTしたKeyをパラメータで後続に渡す

②並列処理を実行するパラメータをそれぞれLambda Invoke_2に渡す

③Lambda Invoke_2の処理を実行する

# 実装方法

## 1. test_Invokeの作成

“`python

元記事を表示

AWSのStepFunctionsにおけるInvokeで後続処理への値の引き渡し及び新規パラメータを追加する方法

# はじめに

StepfFunctionsのInvokeを知用し、LambdaA→LambdaBへとパラメータを渡す際に、Aの戻り値以外にも新たなパラメータを追加してLambdaBに渡したい事案が発生した。
その際にどうやるべきかを学んだのでここにまとめる。

# ステートマシーン構成図
構成は以下の図の通り。
LambdaA(=Lambda Invoke)、LambdaB(=Lambda Invoke 2)として説明する
![スクリーンショット (359) (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355599/c6143788-5d7d-c4c7-ec04-2d613e2a98b2.png)

# ソースコード

[Lambda Invoke]

“`python
import json

def lambda_handler(event, context):
# TODO implement
return {
‘statusCode’: 200,

元記事を表示

LambdaLayerから独自ライブラリを呼び出す際のTips

# はじめに

ご無沙汰しております。うらさくと申します
この記事は[TechCommit Advent Calendar 2023](https://adventar.org/calendars/8839)の7日目の記事です
連投になりますが頑張ります

# 概要

今のプロジェクトでLambda関数からLambdaLayerを呼び出す際、「LambdaLayerにはないけどLambda関数側にあるライブラリを呼び出せないか?」という要求がありました

そもそもなぜこんな事になっているかというと、Lambda関数+Layerで250MB制限を超えてしまったため、[こちら](https://yassanabc.com/2022/03/15/%E3%80%90lambda%E3%80%91efs%E3%82%92%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%80%90%E5%AE%B9%E9%87%8F%E5%88%B6%E9%99%90%E5%9B%9E%E9%81%BF%E3%8

元記事を表示

Lambda環境のTypescriptでミドルウェアパターンを適用した

## はじめに

サーバレスアーキテクチャでアプリのバックエンドを開発しています。
今回AWS Lambda環境でTypescriptを用いてミドルウェアパターンを実装したのでどうしてそうしたかったのかどう実装したのか紹介します。

## 問題

APIのコアの処理をする前にアプリのバージョンチェックやメンテナンスチェックなどをしています。
このチェックはほぼどのAPIでも共通処理となっています。
チェック処理が増えるとその分責務が曖昧になったり、同一コードが増えるなど課題があると思っていました。

“`typescript:イメージ
export const lambdaHandler = async (event: APIGatewayProxyEvent): Promise => {
if (isUnderMaintenance()) {
return MaintenanceResponse;
}
if (!isSupportedAppVersion()) {
return U

元記事を表示

AWS Lambdaレイヤーをローカル環境で構築する方法(Python)

# AWS Lambdaレイヤーをローカル環境で構築する方法(Python)

## はじめに
この記事では、Pythonを用いてAWS Lambdaレイヤーを作成し、ローカルでのLambda環境のコンテナを構築し、そこでレイヤーを作成してS3にプッシュする方法について説明します。

## 目次
1.AWS Lambdaレイヤーとは
2.前提条件
3.ローカルでのLambda環境の構築
4.Lambdaレイヤーの作成
5.LambdaレイヤーのS3へのプッシュ
6.Lambda関数でのレイヤーの利用
7.おまけ

## 1.AWS Lambdaレイヤーとは
AWS Lambda Layerは、Lambda環境下おいて共有ライブラリ、依存関係、その他のカスタムランタイムコンポーネントを管理するための機能になります。これらの共有コンポーネントをLambda関数から分離することにより、コードの管理と再利用を容易にすることができ、効率的な開発を実現することができます。

## 2.前提条件
AWS Lambdaレイヤーを構築する際には、Lambdaと同じランタイム環境での構築が必要となります。

元記事を表示

aws lambdaカスタムランタイムでGoを動かす

# aws lambdaでGo
アドベントカレンダー5日目です。
Goはaws lambdaで正式にサポートされていましたが、Amazon Linux AMI のメンテナンスサポートが 2023 年 12 月 31 日に終了するに伴い、Go 用ランタイムもサポートが終了してしまいます。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-golang.html

そのため、これからは`provided.al2`イメージ上に作成する必要があります。

## Dockerfile作成
“`bash
touch app/day5/Dockerfile
touch app/day5/main.go
“`
`day5`を独立したモジュールとしたいため、初期化しておきます。
“`bash
cd app/day5
got mod init github.com/shuyaeer/learn-go/app/day5
“`

Dockerfileです。ビルドしたバイナリを`provided:al2`上で実行しています。
“`do

元記事を表示

【AWS】CloudWatch LogsのS3連携をCloudFormationでIaC化する

[NTTテクノクロス Advent Calendar 2023 ](https://qiita.com/advent-calendar/2023/ntt-tx) シリーズ2 “5日目”の記事です。

こんにちは。NTTテクノクロスの増田です。
本記事ではCloudWatch LogsのS3連携についてご紹介します。

## はじめに
私は今年度入社したのですが、数か月、業務でAWSに触れた中で大変だったCloudWatch LogsのS3連携の構築作業をご紹介いたします。(このようなブログの執筆自体、初めてです。)

## S3に転送する理由
ログはCloudWatch Logsで保管、管理できるのですが、S3に保管した方がコストを低く抑えることができます。また、転送したログを他のサービスを用いて、各種データの分析等に利用することもできます。

## 構成
作成するアーキテクチャはこのような図になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3626189/47dcf774-5

元記事を表示

Amazon Comprehend + Lambda + Slack でお手軽に感情分析をする

# はじめに

はじめまして。オークファン入社歴三年目になりました、 @aucfan-0540 です。業務では主に AWS を用いたインフラ環境の構築等に携わっています。アドベントカレンダーを書くのは三回目です。今までは以下のような記事を書いてきました。

* 無限にホメてくれる VSCode Power Mode で自己肯定感を爆上げする
* とにかく誰かに褒めてもらいたいんだ、という熱い思いから制作しました。
* Zabbix をバージョンアップしたらメンテナンスの設定を間違えて関係各所をざわつかせてしまった話
* 今でも Zabbix のアラームが鳴り響くと「また何かやっちゃいましたか?」となります。

今回は `Amazon Comprehend + Lambda + Slack`

元記事を表示

S3へのアップロードをLambdaで検知してslackに通知する

## 概要
業務フローの最適化を目指してS3へのアップロードを検知してslackに知らせるシステムを構築してみようと思います。イメージはこんな感じ。
![名称未設定ファイル.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254217/7cf271d3-8eb4-5ae4-6336-80415f7d2e20.png)

## 前提条件
– Awsアカウントを作成済みであること(自由に触れる)
– S3のバケットが用意してあること
– slackアカウントを持っていること

## Lambda環境の用意
こちらにまとめてあるので割愛

https://qiita.com/nero-15/items/7a4b6e1b9a273c68159b

## トリガーを設定する
これは編集画面ですが、新規作成もほぼ一緒です。s3のバケットの特定のディレクトリにアップロードされた際にLambdaが動くように設定
![スクリーンショット 2023-08-18 0.42.22.png](https://qiit

元記事を表示

【psycopg2】AWS LambdaでPythonを動かすときに、モジュールインポートに失敗する原因についてまとめてみた

# はじめに
AWS LambdaでPythonを用いてコーディングする際に、Lambdaに標準で入っていないモジュールについてはレイヤーを作成して、動くようにする方法がメジャーかなと思います。
一方で、「**(Windows OSの)ローカル上で作成したレイヤーだとインポート時にエラーが出てしまって困っている**」みたいなケースが散見されているなと感じました。

特に、よくあるケースとしては、psycopg2のモジュールインポート時において、
“`bash
[ERROR] Runtime.ImportModuleError: Unable to import module ‘lambda_function’: No module named ‘psycopg2._psycopg’
“`
というようなエラーが出てしまうというケースです。私自身、これに頭を悩ませていました。

# この記事の目的

この記事では、**上記のエラーが起きる根本の原因であるDLLをざっくり理解し、処理の流れを明らかにすること**を目的としています。
もちろん、実際にLambdaが動くようにするために、具体

元記事を表示

AWS Lambda+EventBridgeを利用した時間起動の自動処理

## はじめに
稼働時間外にシステムへアクセスがあったユーザに対して、稼働時間外であることを伝えるページを表示させるため、AWS Lambda+EventBridgeにて自動化してみました。

今回のケースに限らず、他の処理自動化にも流用することができると思います。

## 環境
– macOS Sonoma 14.1
– terraform 1.5.2

## 目次
– イメージ図
– ELBリスナールールの作成
– Lambdaの設定
– Lambda関数の作成
– iamロールの設定
– EventBridgeの設定
– EventBridgeの作成
– targetの設定
– lambda permissionの設定
– 補足

## イメージ図
対象システムにはELBを配置しているため、ELBリスナールールにて稼働時間外メッセージ表示、管理を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3314945/d48cbfad-574

元記事を表示

Rubyにおける無名関数とバリデーション

※この記事は「RUNTEQ Advent Calendar 2023」の4日目を担当した記事です。

# はじめに

Rubyにおける無名関数について学習したところ、他言語と比較してとても使い勝手が良く、様々な場所で利用できると感じたので、私なりに理解したことを記事にしました。

誤りがございましたがご指摘をお願いいたします。

### 今回説明すること

– 無名関数についての基本と無名関数のメリット
– Rubyで使用されている無名関数4種類
– 無名関数のバリデーションでの活用法

### 前提として
無名関数に関しては、言語によって様々な呼び方がなされています。
無名関数、ラムダ式、匿名関数、lambdaといった呼び方がありますが、この記事の中では、無名関数は広義の意味で使用しており、lambdaやProcに関しては個々の機能を含めた意味合いで使用しております。

# 無名関数とは?
無名関数は、その名の通り「名前のない関数」のことです。

普段私たちが関数やメソッドを使用する際には、その名前を記載して関数やメソッドの処理を呼び出します。

Rubyの簡単なメソッドでは、”p

元記事を表示

Workload Identity連携を使用してLambdaからスプレッドシートにアクセスする

株式会社iCAREの[タケ](https://twitter.com/take_paolo)です。
これは[iCARE Dev Advent Calendar 2023](https://qiita.com/advent-calendar/2023/icare)の4日目の記事です。

# はじめに
AWS Lambdaを使用してMetabase(BIツール)のAPI経由で取得したデータをスプレッドシートに書き出す仕組みを構築しました。この記事では、その際に実施した作業と参考にした記事を列挙し、備忘録としてまとめています。

また、今回のようにLambdaからスプレッドシートにアクセスする場合は、認証情報としてサービスアカウントキーを用いる必要があるのですが、Workload Identity連携を用いた場合キーレスでアクセスできるらしく、そちらを試しました。

# 参考記事
https://zenn.dev/enish/articles/95999c20c435a3

https://dev.classmethod.jp/articles/call-google-apis-from-a

元記事を表示

毎朝Lambdaで加工した画像をSlackに飛ばす(コスト0)

- アドベントカレンダー4日目を担当します、体脂肪率8%マンです。
- 今回は、全無料でAWS上で画像を加工して毎日決まった時間にSlackに飛ばすシステムを構築したので共有します。
- このシステムは毎日動いていますが、1ヵ月でかかる料金は0円です。

## 目次
1. どんなシステムを作ったか
1. 背景
1. つまづいたポイント
1. ソースコード
1. Slack通知とInstagram投稿リスト
1. おわりに

## どんなシステムを作ったか

### 何するシステム?
まず、毎朝7時に、EventBridgeがLambdaを起動して、Lambdaがローカルに保存している画像を加工します。具体的には、画像に対してLambda起動時の日付と任意のIndexを描画します。このとき、任意のIndexはDynamodbから取得を行い、日毎にインクリメントする形をとっています(つまり、12/1に125である場合、12/2は126のIndex番号を付与することが可能である)。画像を加工後、Slackに飛ばして処理は完了となります。

### 使用技術と役割
アーキテクチャ内に含まれるも

元記事を表示

CodeBuildの失敗ビルドを自動的にLambdaで再試行する

この記事では、AWS CodeBuildで失敗したビルドを自動的に再試行する例をご紹介します。実務で必要になり、LambdaとEventBridgeで実装したものです。

なお、実務で適用したビルドプロジェクトには、下記のような特徴があります。

– 毎日早朝にビルドが始まるようスケジューリングしている
– 開始から完了まで数十分かかる
– たまに失敗するが、根本的な修正はすぐには難しい
– 連続して失敗することもある
– 再試行が翌営業日になっても大きな問題はない

以下、上記の前提を念頭にご覧ください。

# EventBridgeで失敗を検知する

さて、まずは、CodeBuildのビルド失敗をEventBridgeで検知します。

EventBridgeルールで、イベントパターンを下記のように指定すると、ビルドプロジェクト `project-name` のビルド失敗が検知できます。

“`json
{
“source”: [“aws.codebuild”],
“detail-type”: [“CodeBuild Build State Change”],
“d

元記事を表示

SNS + SQS + Lambdaのファンアウト構成でサムネイルを作成する

# やりたいこと
画像がS3にアップロードされたときに、SNS + SQSのファンアウト構成でサイズ毎のサムネイル画像を並列処理で作成する。

![スクリーンショット 2023-12-04 3.08.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2736970/7b139a57-c4a2-afd3-cbea-bfbf0c556d72.png)

# SNSトピックを作成
`fanout-test` というトピックを作成します。
![スクリーンショット 2023-11-19 17.01.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2736970/81fe443f-4dac-6f44-aa84-5576302bfe52.png)

# SQSを作成
`fanout-test-small` というSQSキューを作成し、`fanout-test`トピックにサブスクライブします。
![スクリーンショット 2023-

元記事を表示

S3 Glacierの状態を確認してみた。

# 1. はじめに

2年目に突入したエンジニアをしているものです。

**ARIのアドベンドカレンダ3日目の記事となります!**

https://qiita.com/advent-calendar/2023/ari-group

昨年に引き続き、今年も参加することになりましたので備忘録を、、
最近初めてS3 Glacierを扱う機会がありましたのでその時の経験と考え方と気づきをまとめます。

# 2. S3 Glacierとは

> Amazon S3 Glacier ストレージクラス は、データアーカイブ専用に設計されており、クラウドで最高のパフォーマンス、最高の検索の柔軟性、最低のコストのアーカイブストレージを提供します。さまざまなアクセスパターンやストレージ期間に最適化された 3 種類のアーカイブストレージクラスから選択できるようになりました。

https://aws.amazon.com/jp/s3/storage-classes/glacier/

AWSについて勉強すると名前だけは知っている状態になるS3 Glacier。
主にアーカイブ用に長期間ファイルを置くのに向

元記事を表示

画像を別の形式に変換するクソアプリ

[クソアプリ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/kuso-app) 1日目の記事です。

アドベントカレンダーの記事投稿を終わらせた俺にかわせない攻撃は無い

# 前置き
おはようございます。DE-TEIUです。
冬の季語でおなじみのクソアプリアドベントカレンダーの時間です。

## 過去にアドベントカレンダー用に作ったクソアプリ
– [p5.jsで作ったダメなソリティア](https://qiita.com/de_teiu_tkg/items/c938fbb52218185659e7)
– [絶対に作業できない作業用BGMサイト](https://qiita.com/de_teiu_tkg/items/6ebcef3550507258edaf)
– [社会に一石を投じるクソアプリ開発](https://qiita.com/de_teiu_tkg/items/e82870eca1f265807dbe)
– [鼻毛が生えるカメラアプリ](https://qiita.com/de_teiu_tkg/it

元記事を表示

【AWS】CodeCommitのプルリクエストをSlack通知する【開発支援】

## 初めに
過去の記事(https://qiita.com/Nana_777/items/a1c082dc9f2507cb1290)
ではSlackへのStepFunctionsのアラート通知を記事にしたが、今回はCodeCommitのプルリクエストをSlackへ通知する方法を記事にした。
複数のチームで開発を行っていたり、コードのマージの申請と承認の担当者が異なる場合にプルリクエストを出された後にそのことの共有が忘れられていつまでもマージされないなどの問題が発生するため、その対策としても有効になる。

## 使うAWSサービス
・AWS CodeCommit
・Amazon SNS
・AWS Lambda

## アーキテクチャ図
![CodeCommit-SNS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/a75a6a7c-27ee-6627-31a7-6ea3977d9eea.png)

## 構築手順
1.AWS Lambda関数の作成
・SNSトピックからメッセージを作成

元記事を表示

Notionの利用情報をSlackに定期送信したいんだ! – AWS CDK, Amazon EventBridge, AWS Lambdaでつくるバッチ処理アプリケーション –

今回初めてQiitaで技術記事を書いてみます!!
皆様、お手柔らかに頂けますと幸いです。

# はじめに

本記事は `プロもくチャット Adevent Calendar 2023` の 10 日目です!!

https://qiita.com/advent-calendar/2023/puromoku

# この記事のゴール
– ローカル環境にて `AWS CLI` コマンドを実行できるようになります
– ローカル環境にて `AWS CDK` コマンドを実行できるようになります
– `AWS CDK` コマンドによって AWS 環境に各種リソースを作成できるようになります
– `AWS SDK` を用いて AWS のリソースを操作できるようになります
– Notion の特定データベースに対して実行したクエリ結果を Slack に投稿できるようになります

# 前提条件
– 利用端末 : `MacBook Air` `Apple M1` `macOS Sonoma 14.1.1`
– 使用言語 : `TypeScript`
– 実行環境 : `Node.js v20.10.0

元記事を表示

OTHERカテゴリの最新記事