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

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

Terraformを使用したAWS SQSとLambdaの統合

この記事では、AWSのSimple Queue Service(SQS)とLambdaをTerraformを使用して統合する方法について説明します。具体的には、SQSキューからLambda関数をトリガーする設定と、Lambda関数からSQSキューにメッセージを送信する設定に焦点を当てます。

## SQSキューからLambdaをトリガーする

### 必要なリソース

– SQSキュー
– Lambda関数
– IAMロール
– VPC設定(VPC内でLambdaを実行する場合)

### ステップバイステップ

1.SQSキューの作成

“`hcl
resource “aws_sqs_queue” “example_queue” {
name = “example-queue”
}
“`

2.Lambda関数の作成

“`hcl
resource “aws_lambda_function” “example_lambda” {
function_name = “example_lambda_function”

// VPC設定
vpc_config {

元記事を表示

PHP でも AWS Lambda って実行できるんやで 〜 lambroll を添えて 〜

# はじめに

この記事は NE Advent Calendar 2023 7日目の記事です。

# どうして PHP なのか

弊社は PHP をメインに開発を進めております。
Lambda が標準でサポートしている Golang や Python を日常的に使用している人はおらず、Lambda のためだけに新しい言語を導入するのは今後このコードをメンテ出来る人が減ってしまう。

なんとかして PHP で書けないものか…

# 救世主

https://bref.sh/

Bref は PHP を Lambda で実行するための環境を提供してくれるライブラリです。

# 早速使ってみる

### インストール

以下のような composer.json を作って、`composer install` を実行します。

“`composer.json
{
“require”: {
“bref/bref”: “^2.1”
}
}
“`

### 中身を書く

あとは思い思いにプログラムを書いてゆく。

他のライブラリを使う必要がないのであれば c

元記事を表示

AWSで月額ほぼ0円のWebアプリ構築を考える

この記事は、[Supershipグループ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/supership) の7日目の記事になります。

## 番宣
[Supership](https://supership.jp/)ではプロダクト開発やサービス開発に関わる人を絶賛募集しております。
ご興味がある方は以下リンクよりご確認ください。
[Supership株式会社 採用サイト](https://supership.jp/recruit/)
是非ともよろしくお願いいたします。

## はじめに
Supership株式会社の @masahito-suzuki です。
去年の[Advent Calendar](https://qiita.com/masahito-suzuki/items/c2c2f5cb81cbce03f738)で記載した内容に引き続き、今回もAWS Lambdaでの関数URLに関しての記載をしたいと思います。

昨今、AWSなどのクラウドインフラ環境で、1ドル150円(2023/11現在)と、これま

元記事を表示

GitHub ProjectsのデータをGitHub APIを使って取得し、Redashに入れて分析した

この記事は 「CCoEクリスマス!クラウド技術を活用して組織をカイゼンした事例を投稿しよう! by KINTOテクノロジーズ Advent Calendar 2023」 の7日目の記事になります

https://qiita.com/advent-calendar/2023/kinto-technlogies

# Github Projectsとは

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/learning-about-projects/quickstart-for-projects

GitHub ProjectsはGitHubのIssue管理やPull Requestなどとも透過的に管理ができるカンバン形式でのタスク管理をすることができます。

GitHub Projectsには2つのバージョンが有り、以前のバージョンのclassic と 最新のバージョンのProjectV2があります。

新しいProjectsは大幅に刷新されていて、多機能でありながら非常に使いやすくなってい

元記事を表示

Infrastructure from Codeに入門してみた

Infrastructure from Code(IfC)とAmptについて少し学習したので、整理して書きたいと思います。

# きっかけ
ServerlessDays Tokyo2023のAWS Eric JohnsonのセッションでIfCという単語を初めて聞いたのですが、中身について触れなかったので何なのか分からなかったのとIaCと何が違うのか気になったためです。

https://tokyo.serverlessdays.io/

# Infrastructure from Codeとは何か
アプリケーションコードから必要なクラウドリソースを推測して、自動でアプリケーションの基盤となるインフラストラクチャをクラウドにプロビジョニングするアプリケーション構築のプロセス。

例えば、アプリケーションコード内にAPIのGETやPOSTが書かれていれば、CDNにAPIサーバが必要だと推測して、AWSならCloudFrontにAPI Gateway、Lambdaのリソースを自動でプロビジョニングしてくれるようです。

# 背景
サーバーレスアーキテクチャの開発ではクラウドリソースのプロビジ

元記事を表示

AWS Integrated Application Test Kit (IATK) を使ってみよう

## みんな、テストやってる?
えっ、まさかサーバーレスだからってテストサボってないですよね???
イベント駆動で非同期だからってえいやでデプロイしてないですよね???
それ t_wxxx の前でも同じこと言えn(以下略

皆さん、サーバーレスでもテストは重要です。
非同期だろうがイベント駆動だろうが、テストから逃げることは許されません。
**逃げちゃダメだ**。

ただ、一言で「テスト」と言ってもその手法やスコープ、目的は様々です。
まずは本題に入る前に少し「テスト」そのものに関する考え方をおさらいしておきましょう。

## 何をどうテストするか?

以下のような図を見たことがある人は多いと思います。
そうです、いわゆる**テストピラミッド**というやつです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618749/10eb4f7e-d813-a61a-a56c-80c39983c130.png)

テストには、**ユニットテスト(単体テスト)** や **統合テスト(結合テスト

元記事を表示

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でミドルウェアパターンを適用した

## はじめに

この記事は [フリュー Advent Calendar 2023](https://qiita.com/advent-calendar/2023/furyu) の6日目の記事となります
サーバレスアーキテクチャでアプリのバックエンドを開発しています。
今回AWS Lambda環境でTypeScriptを用いてミドルウェアパターンを実装したのでどうしてそうしたかったのかどう実装したのか紹介します。

## 問題

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

“`typescript:イメージ
export const lambdaHandler = async (event: APIGatewayProxyEvent): Promise => {
if (isUnderMaintenance()) {

元記事を表示

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に飛ばして処理は完了となります。

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

元記事を表示

OTHERカテゴリの最新記事