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

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

【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

元記事を表示

AWS Lambda のソースコードを S3 から取得する技術検証

# やりたいこと

– API 開発を体験できるハンズオンシステムを作る
– ハンズオンの動作環境を提供するだけなので、ソースコードは単一ファイルで良い
– プログラミング初学者を対象にしたいので、なるべく簡単な操作でデプロイしたい
– 開発体験のために、デプロイ時間を極力減らしたい

# 考えた実現方法

– AWS Lambda + Lambda Web Adapter で動かす
– Docker イメージはハンズオンに参加する人全部共通
– ソースコードは S3 にアップロードする
– S3 にアップロードして、Lambda の更新をすると変更が反映される

# 解決するべき問題

– 共通の Docker イメージで環境変数を指定することで関数の動きを変えることが出来るか?

# 作成したもの

start.sh で S3 からファイルをダウンロードして動かす。Lambda は `/tmp` 以外は書き込めないのでその点だけ注意。
これで、Lambda の環境変数に S3 のパスを指定すると任意のプログラムを動かすことが出来る。

“`Dockerfile:Dockerf

元記事を表示

React+ Lambda + Vision APIで日本語文字検出アプリ

## はじめに

画像ファイルの日本語文字認識のデモアプリを制作しました。
日本語のOCRをするにあたって、精度やスピードはVision APIがダントツらしいので実装してみました。

## アプリケーション制作

フロントエンドは、個人的に馴染みのあるReactを選びました。

バックエンドは、拡張性も想定してLambdaを使うことにしました。
ただAmplifyを使ったり、API Gatewayを設置したりすると手間がかかりすぎると思った+後から修正できるはずなので、とりあえず関数URLを設定したLambdaのみを作って、動くところまで実装しています。

### フロントエンドの準備

“` bash:プロジェクトのセットアップ
$ npm create vite@latest
Need to install the following packages:
create-vite@5.0.0
Ok to proceed? (y)
✔ Project name: … vision-api-demo
✔ Select a framework: › React
✔ Select a v

元記事を表示

LINEボットで投稿した画像をAWS S3に保存する

多くの人が、同じことをブログに書かれてますが、自分用の備忘録として残します。

コードはほとんどChatGPT、
AWSの設定はこちらの方のブログを見ながらやりました。

AWS Lambdaを利用したLINEbotハンズオン〜S3に写真保存〜


ありがとうございました。

## 準備

LINE Messaging API の設定
こちらの 「2-2.LINEチャットボット開発前の設定」をご覧ください。

https://qiita.com/tatsuya1970/items/3e41dbeddc0e2d2fb881#2-2line%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%83%9C%E3%83%83%E3%83%88%E9%96%8B%E7%99%BA%E5%89%8D%E3%81%AE%E8%A8%AD%E5%AE%9A

作業ディレクトリを作成
“`
mkdir line-s3
cd line-s3
“`

必要なライブラリをインストールする
“`
pip install line-bot-sdk
pip in

元記事を表示

[ TypeScript / JavaScript ]複数のプロセスを非同期で同時に走らせたい

# はじめに
自分はミロゴスに今年(2023年4月)入社した新卒エンジニアで、TypeScriptを使って開発を行っています。

複数のプロセスを非同期で同時に走らせたいという要求を実現するのに、苦戦をしたのでその実装方法をここで紹介したいと思います。

# 想定する読者
– 複数のプロセスを同時に走らせる非同期処理の実装方法を知りたい方
– 非同期処理に対する例外処理の実装方法が分からない方

# 実行環境
– AWS Lambda
– ランタイム
– Node.js 20.x
– アーキテクチャ
– x86_64

# 今回実装する要求・要件
## 要求
5個のプロセスを同時に走らせたい

## 要件
– 5個のプロセスを同時に走らせる。
– 途中で止まるプロセスがあっても、正常なプロセスは最後まで実行させる。
– 5個全てのプロセスの終了が確認できたとき、途中でエラーが発生したプロセスがあった場合は、どのプロセスが誤りだったかの情報を含め例外を発生させる。

# 実装方法
## 全体のコード
Lambdaを起動すると、関数(hand

元記事を表示

AWS CDKでLambda Function URLsを試したい

# 概要
– AWS CDKでAPI Gateway + Lambdaの構成を作ったことは何度かあったのですが、Lambda Function URLsを試したことがなかったのでやってみました。
– 前提条件
– CDK v2
– Node.js v18.18.2
– TypeScript v5.3.2

# Lambda Function URLs(Lambda 関数 URL)とは
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-urls.html

Lambdaをhttpsから実行するには、API Gateway + Lambdaの構成にしてエンドポイントを作成することがよくありますが、Function URLsではLambdaがエンドポイントを作成してくれます。

### API GatewayとLambda Function URLsの違い
簡単にいうと、API Gatewayの方が複雑な設定ができます。
API Gatewayでできることとして例えば、、
– httpsだけでなくweb

元記事を表示

SORACOM Funkを使って受信データをAmazon S3にCSVで保存する

# はじめに
こちらは[SORACOM Advent Calendar 2023](https://qiita.com/advent-calendar/2023/soracom) 3日目の記事です。

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

昨日(12/2)は @kizawa2020 さんの(まさかの英語の!)会議脱出ボタングローバルバージョン!
あの大きいボタンを持っていないので、試すことはできませんが、Amazon Connectの箇所は参考になりそうなので、後日熟読したいと思います。

# 経緯
先日、[SORACOM Harvestに保存されたデータをAPI経由で取得し、CSVにする方法](https://qiita.com/ozk009/items/c880d234a4b91f4882d0)を紹介しましたが、有識者の方から「そのままCSVで保存すれば?」とアドバイスをいただき、それはそうだということでやってみました。

# お詫び
資料中のAWS等の設定でfunk