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

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

スマートロック sesame を line から開閉してみた

## この記事について
この記事は Akatsuki Games Advent Calendar 2023 の8日目の記事です。
Advent Calendar の7日目はなかひこくんの
[Terraform で CloudRun + Identity-Aware Proxy をやっていく 2023](https://hackerslab.aktsk.jp/2023/12/07/105429) でした。
記事内にある基盤は本当にお世話になっていて、自分もクライアントの立場から貢献をしていきたいところです…!

## 作るきっかけ

自分は 自宅のドア と アパートのエントランスドア(この規模では珍しい気がする)を開ける解錠ボタン にスマートロックのsesameを使用しています。
また、wifiモジュールを使用してbluetooth圏外からも操作できるようにしています。
ただ操作はsesame公式のアプリを使用していたのですが、wifi経由だと反応しない場合が何回かあり家に入りたいのに入れない!という状況があったためより使いやすい手段を探す事にしました。

## 使用するもの

– l

元記事を表示

業務用の生成系AI Slack botをAWSでさっと作ってみる

# 概要
こちらは [AWS for Games Advent Calendar 2023](https://qiita.com/advent-calendar/2023/aws-for-games) の 8 日目の記事です。

**「仕事で困った時、ChatGPTみたいなAIに聞きたい!」**

とはいえ、ChatGPTに業務データを読ませるのはセキュリティ的に許容されないことが多いかと思います。
そこで!セキュリティをちゃんとして(くれてるAWSを使って)ツールを作ろうと思います。

**普段AIに触らない普通のエンジニアがいろんな資料を頼りに作りながら書いた記事です。**

:::note info
細かいステップに分けて確認しながら実装したので、なぞってもらえれば理解しながら bot を作成できると(いいなって)思います。
コードは微妙なのでリファクタお願いしますmm
:::

# 調査
まずどんなサービスがあるのか調べてみました。

## 生成系 AI = Bedrock
[Bedrock](https://aws.amazon.com/jp/bedrock/) がおすすめみ

元記事を表示

Lambdaの管理をCDKに移行している話

# はじめに

今回の話は、筆者の私が SRE として Lambda、DynamoDB、API-Gateway 等を用いた、よくある構成の自社内のサーバレスなアプリケーションを、より開発・管理しやすい形への変更を目指している、という話になります。

## 対象となるアプリについて

– 「通知系の基盤」「ある一機能で用いられている処理基盤」を Lambda、DynamoDB、API-Gateway 等を用いて構築しているアプリが、自社内に複数個ある状態です。(事前検証やインフラの構築はSREチームが担当し、Lambda コードの開発は開発チームが担当)
– ただ、どのアプリケーションも、一度構築してからは予期しないエラーやランタイムのバージョンアップ対応を除いては、基本的に「作ってそのまま」な状態でした。

### 運用について

Lambda 関連の運用フローは元々以下の状態でした。

– Lambda の開発方法は、アプリによっては開発用 Lambda のコードをそのまま編集し、動作確認
– ステージング環境や本番環境への展開は、開発用 Lambda のコードをそのままコピペし張り

元記事を表示

New RelicでQOL爆上げした陰でLambdaがタイムアウトしていた話

# はじめに
この記事は[ディップ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/dip-dev)の8日目の投稿です。

皆さんはNew Relicを使っていますか?
ディップでは各プロダクトへのNew Relic導入を進めています。
New Relicは開発から運用、またセキュリティといったアプリケーションに関わる各種メトリクスやパフォーマンスを確認することができる非常に便利なプラットフォームです。
特にダッシュボードは以下のように高い自由度で作り込めるので ~~気がついたら半日過ぎているなんてこともザラ~~ QOLが爆上がりします。

“`plantuml
@startuml

footer 1リクエストあたりの処理時間や、SQSからのメッセージ受信数、モード毎の処理件数などいろいろ作り込める。楽しい。
title

元記事を表示

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)の6日目の記事です
連投になりますが頑張ります

# 概要

今のプロジェクトで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が動くようにするために、具体

元記事を表示

OTHERカテゴリの最新記事