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

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

サーバレスで 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

元記事を表示

Secrets Managerをアカウント間で同期する

# はじめに
こんにちは。1年ぶりの記事です。
サボっていたわけではありません。ただ、生きている喜びを実感していただけです。
素敵やん。

今回担当案件でどうしても実現したい事象がありました。
それはSecrets Managerの値を別アカウントのSecretsManagerに同期したいというものでした。
説明下手でわかりにくい箇所等あるかと思います。ご了承ください。
備忘録程度なので雑ですみません!権限はもっと絞れるはずです!
もっと簡単な方法あるぞ!という意見お待ちしています。

# 前提
AWSアカウントAとAWSアカウントBがあり、それぞれ異なるECサイトを運用しています。
アカウントAにAuroraがあり、そのDB情報等をjsonファイルとしてSecretsManagerに格納しています。
アカウントBはアカウントAのAuroraをクロスアカウントで利用しています。
この度、お客様よりアカウントBにもアカウントAと同期されたSecretsManagerを作成してほしいとの要望がありました。

# 課題
いやいやわざわざSecrets作成しなくても下記の方法でクロスアカウント

元記事を表示

TypeScriptで書いたLambdaを、node_modulesを含めてデプロイする

# したいこと
– TypeScriptで書いたLambdaをnode_modulesを含めてDeployしたい
– 長期使用する前提で、メンテナンスの手数やメンテ時のオペミスリスクを減らしておきたい
– CodeBuildを使用してCI/CDする前提

# 結論
– Build後 dist/内に node_modules を配置した上でzipにして、Deployする形式を採用

## 処理の流れ
### 事前準備
– Lambdaの容量制限を気にして node_modulesの容量を削減するため、処理に必要なモジュール以外は `npm install -D` で devDependencies として入れる
– 処理に必要な内、例外的にaws-sdkは LambdaのNode.jsランタイム内に含まれているので devDependencies 側としてinstallする

### CodeBuildの処理
– `npm ci` で devDependencies込みでnode_modulesを入れる
– Testの実行
– TypeScriptをBuild
– (Build環境

元記事を表示

[AWS] CloudFormation で Lambda の更新が Update complete cleanup in progress から変化しなかった

## 以下の操作をしたら発生

– Control Tower 経由でアカウントを作成(以下、その新しいアカウントでの操作)
– いくつか Lambda関数を手動で作成した
– Lambda の同時実行数をコンソールで操作しようとしたら変更ができなかった
– Lambda の Concurrent executions のクオータが 10 であった
– Lambda の Concurrent executions のクオータを 1000 にするよう申請し変更された
– その後、 CDK で SQS と Lambda のリソースを新しく作成しようとした
– Update complete cleanup in progress から30分以上変化しなかった

## 確認したこと

– CloudTrailを確認するとCloudFormationの一番最後の操作は Lambda関数の同時実行数を変更する操作だった
– 既存の他のLambda関数の同時実行数を見てみると、その数値が10だったものが899などの大きな数値になっていた(原因不明)

## 対応

– 既存の他のLambda関数の

元記事を表示

AWS CloudWatchのLiveTailがLambdaデバッグに便利

最近、でもないけど半年ほど前?に追加されたLiveTailがLambdaのデバッグにめちゃ便利だった話。

## 前置き
直接環境にアクセスできるときはTailコマンドを使ってアプリケーションのログをリアルタイムで見ることはよくあります。それのクラウド版です。
ELB配下で複数台動くマシンのログをリアルタイムで確認するのに少しだけ使っていました。
これはこれで強力です。だって特定のマシンに乗り込んじゃうとロードバランスされた後でどこにログが落ちるかわからないので。
と言ってもそこまでありがたみを感じることなくあんまり使ってませんでした。

## 環境
AWS CloudWatch Logs – LiveTail
Lambda python3.12

## Lambdaのデバッグ
初期のDebugにはprintを使ってResultに表示されるログを確認しながら作業します。
VisualStudioを使ってやるという人、ごめんなさい。ローテクでお話が進みます。
ほとんどこれで事足りるぐらいの比較的軽い処理しか乗せないので大丈夫です。

![スクリーンショット 2024-02-20 1516

元記事を表示

【Node.js】LambdaからDynamoDBのデータを取得する方法

## はじめに
Lambdaを使用してDynamoDBのデータを取得する方法について紹介します:point_up_tone1:
データ取得までの流れは 画面 → API Gateway → Lambda → DynamoDB となっていますが、画面からLambdaを呼び出すところまでは割愛します。

## ソースコード
userIdを条件にして、データを取得するという例を紹介します。

“`javascript
const { DynamoDBClient } = require(‘@aws-sdk/client-dynamodb’);
const { QueryCommand, DynamoDBDocumentClient } = require(‘@aws-sdk/lib-dynamodb’);

const client = new DynamoDBClient({});
const docClient = DynamoDBDocumentClient.from(client);

exports.handler = async(event) => {
// Cloud

元記事を表示

筋トレを継続したい!(AWS Lambda × Python × ChatGPT でLINEbot作成)

# 筋肉ムキムキになりたい!!
1度くらい筋肉には憧れたことはあるだろう…
そしてトレーニングを始める人もいるだろう…
しかし、続かない…
そこで、筋トレを継続するための、**筋トレbot**を作成しました!

# 開発環境
AWS Lambda
Python 3.12

# トレーニングメニュー
トレーニングメニューを自分で考えるのは面倒ですよね。
そこで、ChatGPTにお願いして、トレーニングメニューを考えてもらおう!

![image0 (1).jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682615/74b9ba69-6594-941d-ffde-ac88146299e2.jpeg)

いい感じのメニューを提案してくれましたね。

# 筋トレ後は褒めてもらおう
ただトレーニングをこなしていくだけだと、モチベーションが保てませんよね。
トレーニングが終わった後は、トレーニングしたことを報告して、褒めてもらおう!

![image1.jpeg](https://qiita-i

元記事を表示

AWS SAMの基本的な使い方

# AWS SAMの基本的な使い方

AWSのServerless Application Model(SAM)は、サーバーレスアプリケーションの開発とデプロイを簡単にするフレームワークです。
この記事では、SAMを使用してサーバーレスアプリケーションを開発、テスト、デプロイする基本的なコマンドを紹介します。

## はじめに

AWS SAMは、AWSのサービスを利用してサーバーレスアプリケーションを構築するためのツールです。
SAMを使用することで、Lambda関数、API Gateway、DynamoDBなどのAWSリソースを簡単に定義し、デプロイできます。

## アプリケーションの開発

### アプリケーション初期化
“`
$ sam init
“`

### アプリケーション構築
“`
$ sam build
“`

### アプリケーションをデプロイ
“`
$ sam deploy –guided
“`

### アプリケーション実行
“`
$ sam list endpoints –output json
“`

### Lambda関数とやり取

元記事を表示

gpt-4で英文添削させてWebSocketでstreamレスポンスさせる

## はじめに
– gpt-4を使って英文の添削をさせるアプリを作ったので、その内容と作成手順を記載します
– 英文添削結果はフォーマットを定義し、その通りに回答を返却させています
– AIからの回答はChat-gptと同じようにStreamレスポンスされます

Like this↓
![git_0218.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/754596/df26ea2d-0e35-77b6-525f-2a2e8bf55fbc.gif)

## 目次
1. モチベーション
1. 成果物
1. 構成
1. 作成手順

## 1.モチベーション
私は、英語の日記を毎日書きます。
ネイティブスピーカーの友人に添削してもらっていましたが、それには添削者の稼働が必要です。
一方で、添削者がいない場合は、文法の間違いやスペルミスをしていても気づけません。
なので、生成AIを活用して添削者を作ります。
これによって英語勉強のハードルを下げます。

## 2.成果物
#### アプリ概要
英語のセンテンスが入

元記事を表示

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

こんにちは。ITエンジニアのきゅうです。
今回作成するアプリのシステム構成図です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618971/57c48beb-18ca-4f57-0562-176c1bff3ef4.png)

今までインターフェース部分としてLINEを使用しておりましたが、動かすだけであれば、LambdaにTest機能がありますので、そちらを用いて動かしたいと思います。
ですが、もちろん今までお伝えしていたLINEの設定を行えば、LINEから起動させることももちろん可能です。

# Amazon S3について
では、S3とはなんぞや?という方の為に、簡潔に説明していきましょう!

## Amazon S3について
『Amazon Simple Storage Service』を、略してS3と言います。
要するにストレージサービスのことです。
もっと簡単に言うと、ファイルサーバーですね。
(ちなみにAPサーバは、EC2です。)

勿論無料枠も御座います。
5 GB

元記事を表示

OTHERカテゴリの最新記事