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

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

lambda関数の基本概念と利用シーン

## はじめに
こちらはlambda関数に関しての備忘録。

## 🦁**結論**🦁
lambda関数は、小規模な匿名関数を一行で定義するための構文。

lambda 引数 : 処理 (引数)
“`py
lambda x: x + 1
“`

:::note info
押さえておくべき点
* 短い処理に使うことでコードの可読性が向上。
* ちょっとした処理を加えたい時に使われる関数。
* 引数は複数指定可能。
:::
***

:::note warn
利用シーン
* 他の関数の引数として直接記述する場合に有用
* sorted()やlist.sort()のkey引数にlambda関数を使うことがある。
* フィルタリングで使われるfilter()関数の引数として、特定の条件に基づいてリストから要素を選択するために使用されます。
* データ変換などで使われるmap()関数の引数として使用し、リストの全ての要素に対して変換を適用します。
* GUIやWebアプリケーション開発において、簡単なイベントハンドラーを定義するのに利用される。
:::
**

元記事を表示

【AWS】 CloudWatch上のMediaLiveのメトリクスをLambdaから取得する際に気をつけること

# 概要
この記事では、 `CloudWatch` 上の `Medialive` のメトリクスを取得する際に気をつけることについて言及しています。リファレンスが少ない、かつ引っ掛け問題のような感じで自分は丸一日費やしたのでその記録を残しておきます。

内容的には
– 「`CloudWatch` のメトリクスを `Lambda` で取得する際に気をつけること」
– 「`MediaLive` のメトリクスを取得する際に気をつけること」

が混ざっていますが、どちらも参考になれば、とても嬉しく思います。

# 前提
`MediaLive` で事前に配信を行い、 `CloudWatch`上で指定の `ChannelId` においてメトリクスが確認できることを前提としておきます。

# 実装
実装は `Lambda` で行います。
`Lambda` でなくても問題ないですが、 `Lambda` で行う場合の注意点をいくつか書いておきます。

:::note warn
**注意点①**
`Lambda` に設定している `Role` に対して、`”cloudwatch:GetMetricSta

元記事を表示

[AWS]Serverless Frameworkを使ってAPI Gateway×Lambda×DynamoDBを使用したWebAPIを構築する

## インフラ構成
WebAPIの作成に当たって今回使用するAWSの各サービスを簡単にまとめてみます。

・API Gateway
HTTPリクエストを受け付けて、他のAWSサービス(Lambda等)にルーティングする機能です。REST APIやWebSocket APIを簡単に作成できます。API Gatewayでは、リクエストのパスやクエリパラメータ、ヘッダー、ボディなどをLambda関数に渡すことができます。
https://aws.amazon.com/jp/api-gateway/

・Lambda
サーバレスコンピューティングのサービスです。コードをアップロードするだけで、イベントやトリガーに応じて自動的に実行されます。サーバの管理やスケーリングを気にする必要がありません。Lambdaは、Node.js、Python、Java、Go、Rubyなどの言語に対応しています
https://aws.amazon.com/jp/lambda/

・DynamoDB
DynamoDBは、NoSQLデータベースのサービスで、高速でスケーラブルなキーバリューストアやドキュメントストアを提

元記事を表示

AWS Lambda(Python)でSQS, ParameterStore, DynamoDBを処理してみた

# AWS Lambda(Python)でSQS, ParameterStore, DynamoDBを処理してみた
最近AWS上のサービスを使ったアプリ開発が増え、バッチなどの業務にLambda、SQSなどを使用したので備忘録として残そうと思います。
本番を想定した設定にはなっておりませんので、ご容赦ください。
Lambda関数で各サービスを使うチュートリアル的なものと思ってください。
今回は仕様的な部分に関してはほぼ記述しておりません、機会があれば別途投稿しようと思います。

## 実施したこと
* Lambda:関数の作成、下記のサービスとの統合
* SQS:キューの作成からメッセージを受信する設定
* ParameterStore:値のセット、Lambda関数で取得
– SDKで取得する方法
– Extensionsで取得する方法(+カスタムレイヤーの作り方)
* DyanamoDBの作成、操作

## Lambda:関数の作成、下記のサービスとの統合
・まずはLambdaの【関数の作成】から作成する
![image.png](https://qiita-image-s

元記事を表示

RustでのAWS Lambda開発完全ガイド

## 概要

この記事はRustでAWS Lambda開発を行うにあたっての全体プロセスのガイドです。RustでLambda関数を実装し、そのコードを実行するためのDockerコンテナイメージを作成します。次にそのイメージを自動でビルドしLambda関数を更新するCI/CDをCodePipelineで構築します。他に複数のLambda関数を一つのクレートで管理し、それらを一括でデプロイする方法についても解説します。

## なぜRustでLambdaを実装するのか?

まず、Rustは素晴らしいプログラミング言語です。静的型付けによってバグの少ないコードを書くことができます。またcargoという洗練されたパッケージマネージャにより、依存関係の解決やビルドを柔軟かつストレスレスに行うことができます。

Rustで処理を実装することで(他の言語と比較して)処理時間を短く、またメモリフットプリントを小さくすることができます。Lambdaは実行時間とメモリ割当量によって課金されるため、コスト面で非常に有利です。

参考:

https://zenn.dev/hinastory/article

元記事を表示

[パート2:実行]S3に保存する前ラムダでサムネイルに画像圧縮の前処理

# 前提

せめてS3・Lambda・IAM権を持っているAWSアカウントそれともIAMアカウント用意

# 概要
こちら記事では詳細な実行を説明させて頂きます。

主な内容が下記のように進めています。

1. バケツ作成
1.1 バケツ作成
2.2 ライフサイクル作成
2. ポロシー・ロール作成
2.1 ポリシー作成
2.2 ロール作成
3. ラムダファンクション作成
3.1 環境作成
3.1.1 初期設定
3.2 ファンクション作成
3.2.1 ロールや処理時間を設定
3.2.2 トリガー設定
3.2.3 環境変数
3.3 ラムダのNode modulesについて
4. テスト行い
4.1 S3アップロード
4.2 結果をチェック
4.3 ログをチェック

## 1. バケツ作成

2つのバケツを作成し、そのうち1つを一時的なバケツとして使用します。この一

元記事を表示

[パート1:概要の設計] S3に保存する前ラムダでサムネイルに画像圧縮の前処理

前の[記事](https://qiita.com/17021084/items/e1078bacc2fbc32d3183)の次に、今回は実践のユーケースを説明させて頂きます。

以下の2つのパートに分かれています。

– パート1:概要の設計(本記事)
– パート2:[詳細な実行](https://qiita.com/17021084/items/0e077c7c85bd5fce657d)

## **概要**

1. 前提
2. 背景
3. 目的
4. 構成・経過
5. 評価
6. その他

## 1.前提

– Node Js 20.xx
– Lambda x86_64
– [sharp](https://sharp.pixelplumbing.com/install) (os linux, cpu x86)
– AWS console 操作ため、管理権があるアカウントは必要

## 2.背景

SNS系アプリでよく見かけるサムネイルです。これらの処理には時間がかかりますが、たまにしか実行されません。メインのサーバーにサムネイル処理を置くと、他のサービスに影響を与える可能性があ

元記事を表示

API超入門!最速で使えるAPIを実装する

# はじめに
こんにちは、ユーゴです。
最近、趣味でクラウドプラットフォームを遊んでいます。AWS, GCP, Azureなど色々と試しており、「こんなことができるのか、すげ〜」という感じです。
今回は、AWSを使用して、「とにかくAPIを自作してみたい!」という方に実装方法を紹介します。

# 結論
1. 「**Lambda**」でバックエンドを作成
2. 「**API Gateway**」でエンドポイントを作成
これだけで、APIを実装できます。しかも、今回はGUI操作で完結します。

# 対象読者
・**サーバーなんもワカランの人**
→ 今回は、サーバーレスで実装できます。AWS偉大。GASのデプロイと似たような感じです(GASでもAPIは作れるけど、APIのためのデプロイという感じではないので、APIを体系的に学習できない)

・**APIはちょっと分かるの人**
→ 「Slack API 叩いてみたことはある」という感じで、なんとなくAPIがどういうものか分かっていれば十分です

# 0. AWSアカウントを作成
今回は、APIを作成するために、AWSを使用して構築していき

元記事を表示

c#+Lambda+API Gatewayで最小構成のRestAPIを作成する方法

直近ではPythonを使ってLambda+serverless framework+APIGatewayでRestAPIを作成していたのですが、そちらのプロジェクトが終わって知見を広めようとバックエンド系の言語を調べていた所、C#の文字を発見!
これまでC#はwindows用のアプリを開発する言語として利用してきたので、バックエンドでも使えることを知ってびっくりしました。

まだまだ初歩も初歩の部分をやっているのですが、初歩の部分のハードルがかなり高くて、自分でも2回目やるときにまた調べなきゃいけないことになりそうだったので、最小のAPIを作成してデプロイするところまでを手順化してみます!

# 環境
windows11
VisualStudio2022Community 17.8.6
.NET6

# まずVisualStudioを変更する
1. VisualStudioInstallerを起動して、変更を選択します。
2. **ASP.NETとWEB開発**にチェックを入れて右下の変更を押します。
3. しばらく待つとVisualStudioが変更されるので、これで完了です!

元記事を表示

サーバレスで Minecraft と外部サービスを連動させてみた話

この記事は2分で読めます。
色々あるので一部ぼやかして書いてます。

# はじめに
AWS の Lambda と API Gateway を使って Minecraft と外部サービスを連携させてごにょごにょ色んなことをやってみた話を簡単にまとめました。
Minecraft は全世界でもっともプレイヤー数の多い人気ゲームですが、アプリ自体は旧世代のアプリケーションなので現代のサービスと連携して有効利用しようと思うとそれなりに工夫が必要になります。Steam や Discord との連携機能も無ければ、Web からのアクセスもできなければ、サーバコンソールからでも Minecraft 専用のコマンドが必要になるという勝手の悪いゲームです。ついでに公式のサーバにはヘルスチェックやトラップも備わっていないので Minecraft サーバは壊れたところで自動では何もできません。
ということで何とかします。

# やったこと
Lambda と API Gateway を使ってバニラの Minecraft を外部サービスと連携させます。プラグインも Mod も要らないので公式のバニラサーバでも実装で

元記事を表示

Prisma + zod を使用したLambdaのファイルサイズ肥大を抑えるために Lambda Layersを利用したメモ

## 概要

[前回](https://qiita.com/hibohiboo/items/ed08b21799dd92bedc3e)に作成したファイルだと、バンドル時にハンドラファイルにスキーマファイルを含めてしまい、サイズが肥大化する問題があった。

今回、Lambda Layersを使用し、スキーマファイルを外だしできるようにする。
[/opt/nodejs/ にレイヤーのパスが通る][*1]ため、そこにスキーマファイルを入れるように設定した。

[ソースコード](https://github.com/hibohiboo/kartagraph-monorepo/tree/e48a851f4eef7dfeb5b7410b8b8432505d816af0/)

## ソースの変更
### Lambdaの定義ファイル
tsconfigを修正し、ソースを直接読みにいっていた部分を、デプロイ後のパスである`/opt/nodejs/`以下のフォルダを見に行くようにする

“`diff:backend/tsconfig.json
“paths”: {
“@kartag

元記事を表示

AWS Lambdaの内部構造

# はじめに
AWS Lambdaは、開発者がサーバーのプロビジョニングや管理を心配することなくコードを実行できるサーバーレスコンピューティングサービスです。
この記事では、Lambdaの仕組みとそのコンポーネントについて詳しく解説し、サーバーレスアーキテクチャがどのように開発のパラダイムを変えているかを探ります。

# AWS Lambdaの概要
AWS Lambdaは、「書いたコードを実行するだけ」のシンプルさで知られています。
開発者はコードを提供するだけで、後はLambdaがスケーラビリティ、実行、およびセキュリティを管理します。
Lambda関数は、トリガーに応じて自動的に実行され、使用した分だけ課金されます。
このモデルは、リソースのオーバープロビジョニングやアンダープロビジョニングを心配する必要がないため、効率的でコスト効果が高いです。

### コンポーネントの深掘り
AWS Lambdaのアーキテクチャは主に二つの大きなコンポーネントに分かれています。
呼び出しリクエストのルーティングとコンピュートインフラストラクチャです。
これらのコンポーネントはLambdaの柔軟

元記事を表示

サーバレスDBのNeonからDBファーストでPrismaを使ってスキーマを作りzodを連携して型解決をしたlambda(Node.js)を作成したメモ

## 概要
[前回は](https://qiita.com/hibohiboo/items/827f0e99afd0597d6425)Neonに繋いでSQLを発行することを試した。
今回は、型を自動的に作成して使用することを試す。

大まかな手順

1. Prismaでスキーマファイルを作成
1. スキーマファイルにzodの連携情報を追記
1. zodファイルをgenerate
1. zodで型解決
1. lambdaから使用

[ソースコード](https://github.com/hibohiboo/kartagraph-monorepo/tree/662909d018ca81a70058a20d4eeb9739edf76284/prisma)

なお、この手順だとバンドルファイルが肥大化する。対応は[Prisma + zod を使用したLambdaのファイルサイズ肥大を抑えるために Lambda Layersを利用したメモ](https://qiita.com/hibohiboo/items/a024126d8b44362405c3)に追記。

## 準備

### ライブラリの

元記事を表示

AWS Lambdaで.NET 6から.NET 8に移行したときにやったこと

# はじめに
 AWS LambdaでLTSである.NET8がランタイムサポートされました。AWS Lambdaでは.NETの以前のLTSである.NET6のランタイムサポートの廃止を2024/11/12に予定しており、廃止後も一定期間は関数の作成と更新が可能ですが、2025/1/11には新規作成がブロックされ、2025/2/11には更新もブロックされるようになります。このためLambdaで.NET6を利用しているユーザーは早期に.NET8に移行する必要があります。

# やったこと

## ターゲットフレームワークの変更
プロジェクトファイルのターゲットフレームワークを変更します。

“`diff_xml:***.csproj
net6.0
+ net8.0
“`

## aws-lambda-tools-defaults.jsonの修正

AWS Toolkit for Visual Studioのテンプレートを使っている場合

元記事を表示

Terraform の external data sourceでbashスクリプトを実行しようとしてハマった

# 環境
– Terraform 1.7.4
– Terragrunt 0.55.1
– hashicorp/aws 5.36.0
– hashicorp/external 2.3.3
– WSL2(Ubuntu)

# 経緯
TerraformでLambda関数をデプロイするためにpnpmのプロジェクトをtfファイルと同一階層に配置し、apply時にトランスパイルや不要ファイルの削除を行いzip化しようとしていた
そのためにexternal data sourceやarchive_file data sourceを利用していたのだが、なぜかbashファイルの実行に失敗するという現象でハマってしまった

# ディレクトリ構成
.
├── bin
│ └── build.sh
├── lambda
│ ├── index.ts
│ ├── jest.config.js
│ ├── node_modules
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── tests
│ │ └── index.spec.ts

元記事を表示

Lambda(Node.js)でSSM パラメータストアの値を取得・更新する

# はじめに
パラメーターストアをNode.jsで扱う系の記事がパッと見つからなかったので「扱ってみた」を書き残します。

難しい事は無いのですが、色んな記事の行ったり来たりや、公式ドキュメントを読むのが面倒な~~私みたいな~~人向けに書いています。
# 手順
1. パラーメータストアを作成する
1. Lambdaを作成する
1. IAMポリシーを追加する
1. Lambdaを実行する

## 1. パラメーターストアを作成する
マネコンの検索窓に「Systems Manager」と入力してSystems Managerに移動する。左ペインの「パラメーターストア」をクリックする。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349281/2a71dd45-74aa-b08e-0c69-1716a48b512c.png)

「パラメータの作成」をクリック。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

ハッカソン参加時の備忘録 ~ 第6回:【Python】AWS LambdaとAWS Rekoginitionを連携させてみよう ~

こんにちは。ITエンジニアのきゅうです。
前回、AWSのLambdaとAWSのS3(ストレージサービス)を連結させるサンプルを備忘録したので、今回は当方が良く使うAWSのAIサービスの一つであり、簡単に画像解析を行うことが出来るサービス『Rekoginition』と連結したいと思います。

今回作成するシステム構成図です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618971/7c64153a-d89e-581e-df58-a8148b63e814.png)

※前回の備忘録に記載した『S3』が登場しております。
 これはRekognitionに読み込ませる画像をS3などに格納しておく必要がある為です。
 ですので、今回の記事では以下の記事の設定がしてあることが前提となります。

https://qiita.com/kyuu2197/items/201d33437ba33665f840

# Amazon Rekoginitionについて
改めて、Rekognitionについて

元記事を表示

AWS CloudFormationでCognitoのサインアップ前トリガーを実施

# はじめに
今回はCognitoでのサインアップ前LambdaトリガーをAWS CloudFormationを用いて構築していきたいと思います。
これにより、Cognitoで登録されるアカウントを制限することが出来たりすることが可能になります。

# 目次
・構成について
・Lambdaの設定項目
・LambdaのCloudFormation作成
・Cognitoの設定項目
・CognitoのCloudFormation作成
・事後確認
・最後に
・参考

# 構成について
CognitoとLambdaのみで構成します。
Lambdaのコードを呼び出すのにS3を利用しますが、特に今回作成する構成に影響は出ないです。
CloudFormationの構成として、初めにLambdaを構築し、その後にCognitoを構築します。

# Lambdaの設定項目
今回はnodejs.18.xを利用し、コードについてはS3から取得してくるようにします。
IAMロールは作成しますが、Cognitoへのアクセスを許可するためのポリシーステートメントはCognitoのIDが必要なためCognitoのCl

元記事を表示

CloudWatch Alarm もしくは EventBridge から SNS に通知した時の内容を整理してみた

# CloudWatch Alarm からの通知

## SNS

次の通り、SNS トピックを用意しておきます。

![スクリーンショット 2024-02-19 11.22.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/7372ab0d-5178-963c-5f0a-a7700b0548bf.png)

## CloudWatch アラーム

CloudWatch アラームで先程作成した SNS を通知の送信先としておきます。

![スクリーンショット 2024-02-19 15.46.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/dd61c57c-afef-5c1c-f7ea-d20cea60684d.png)

![スクリーンショット 2024-02-19 15.46.41.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

AWS+Lambda+API+GOでオウム返しLine Bot

# はじめに
– 「AWSとGoを勉強したい!」ということで、オウム返しをするLine Botを作成しようと思いました。
– AWSを使ったサーバーレスの基本の勉強にもなってよかったです!

# 目標
– 以下の感じでオウム返ししてくれるbotを作成します。
![oumu_kansei.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3525798/a1e1c91b-42f7-49c5-9445-6436b0eeb809.png)

# 全体の構造
– Lineにメッセージを送ると、LINEプラットフォームは設定されたWebhook URLに対してPOSTリクエストを送信する。
– API Gatewayは、このリクエストをトリガーにLambda関数を実行する。
– Lambda関数はGo言語で書かれたコードを実行する。

![line_bot_aws_oumu.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

OTHERカテゴリの最新記事