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

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

【LangChain編】FAQがAIの力でパワーアップ!誰でもナレッジ情報を自由自在に活用できる仕組みをAmazon Bedrock(RAG)+ LangChain + GASで構築

# はじめに
こんにちは!CBcloudのRyoです:grinning:

私の所属するCBcloudでは、物流ラストワンマイルの配送プラットフォーム「ピックゴー」を運用しており、荷物を送りたい方、荷物を届けてくれる方を24時間365日、サービスを通してつなげています!

https://pickgo.town/?utm_source=google&utm_medium=cpc&utm_campaign=brand&utm_id=749340152&utm_term=pickgo&af_pid=google&af_c=brand&gad_source=1&gclid=CjwKCAjwyJqzBhBaEiwAWDRJVBRiSmk6aRJqjngMWLKe1uuwT-EGw6Ktv9Vu7EG8o7545efU0FJaeBoCKuMQAvD_BwE

今回は以前より投稿しているRAGを使ったAI構築のLangchain編となります
Bedrockやナレッジベース・エージェントの説明は前の記事にありますので気になる方はそちらを参照ください

完成品編

https://qiit

元記事を表示

LocalStack に Lambda 関数を作成して実行する

## このエントリについて

– [こちらのエントリ](https://qiita.com/outerlet/items/8199c2f4eb7cbc678f16) と同じく、以前残したメモを供養する目的で書きました
– LocalStack はv3がリリース済みですが、ここに書いたのはv2の使用時に調べた設定やコマンドです。v3のコンテナでも通用することを確認したうえで書いていますが、v3に最適化したわけでないことはご承知おきください
– LocalStack の CloudWatch Logs を使って動作確認していますが、操作は全てCLIでやっています。コンソールなどで確認できるのかも知れませんが、そのあたりは調べきれておらず、割愛させてください
– `aws lambda` のコマンドリファレンスは [こちら](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/index.html “https://awscli.amazonaws.com/v2/documentation/api

元記事を表示

Lambda式の理解

# 関数型インターフェスとLambda
Javaでは変数として関数(処理の実装)を受け取るための変数が用意されています。
関数型インタフェースの用途を理解することでLambda式も理解できるかと思います。

|変数型|サンプル|
|—-|—-|
|String|”abcdefg”|
|Integer|123456|
|関数型インタフェース|x+yの結果を返す関数|

関数型インタフェースについてはjava.util.functionパッケージ内で準備されています。
関数型インタフェースの概要についていくつか説明します。

|関数型インタフェース|メソッド|概要|
|—|—|—|
|Function\|R apply(T t)|入力値Tを受け取り、結果Rを返却|
|Predicate\|boolena test(T t)|入力値Tを受け取り、評価結果booleanを返却|
|Consumer\|void accept(T t)|入力値Tを受け取る|
|Supplier\|T get()|結果Tを返却|

## Function\

元記事を表示

BedrockとPollyを使ってシャドーイングアプリを作ってみた

## はじめに
本記事では、BedrockとPollyを軸にシャドーイングアプリを作成した際の備忘録です。
個人で使用することを想定したアプリであるため、セキュリティ面はあまり考慮していませんのでご了承ください。

## アプリの概要
1. Bedrock先生にシャドーイング用の英文テキストを生成してもらう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1371880/392855d6-2b04-b13f-eaab-5e3bcc5e0394.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1371880/9b8a7fe0-9aa5-c323-2a6a-8173d1725d8e.png)

2. 生成してもらった英文テキストをPolly先生が音声データに変換してもらう
![image.png](https://qiita-image-store.s3.ap-northeast-1.a

元記事を表示

AWS SAMを用いてRemixアプリケーションをLambdaへデプロイする

## はじめに

[aws-lambda-web-adapter](https://github.com/awslabs/aws-lambda-web-adapter)を使って、とても簡単にRemixで作られたアプリケーションをLambdaにデプロイできたのでその手順をまとめました。

完成品はこちらのリポジトリにあります。

https://github.com/monjara/remix-sam-lambda-example

## 必要なもの
– SAM CLI
– Node.js
– Docker

## 階層構造

以下のような階層でプロジェクトを作成します。

“`sh
.
├── remix-app/ # Remixのアプリケーション
│   ├── (Remixのファイル群)
│   ├── Dockerfile # buildしたアプリケーションを実行するためのDockerfile
│   └── run.sh # remix-serveを実行するスクリプト
└── template.yaml # SAMのテンプレートファイル
“`

## Remixプロジェクト

元記事を表示

Lambdaの実行中に、追加データを送ってみる

# この記事について

よくあるLambdaは次の図のような動きをします。
リクエストを投げるとLambdaの処理が始まって、処理が完了すると結果が返ります。

![buffered-response.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233180/ce7aad3b-8911-f739-6139-bda8439d2cf5.png)

この記事では、次の図のようなことをする方法を紹介します。
実行中のLambdaに対して、追加のデータを送信します。

![buffered-response-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233180/7604e9ef-75fe-5792-39e2-b319983f68c5.png)

# 利用する環境

Lambdaの実装言語: TypeScript
ランタイム: Node.js 18.x

# 何が嬉しいのか

双方向通信をするだけならAPI Gatewa

元記事を表示

AWS Lambda にPythonウェブサーバーを立てる最小のDockerfileを書いた

関数URLにアクセスすれば
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118083/3231bf48-ede2-f3f8-7dca-8fb3780a2abb.png)

これが動くなら言語、フレームワーク問わずどんなウェブサーバーも動かせそうですね
“`Dockerfile
FROM public.ecr.aws/lambda/python:3.12
COPY –from=public.ecr.aws/awsguru/aws-lambda-adapter:0.8.3 /lambda-adapter /opt/extensions/lambda-adapter
ENV PORT=8080
RUN printf “\n\
import os, http.server, socketserver\n\
class MyHandler(http.server.SimpleHTTPRequestHandler):\n\
def do_GET(self):\n\
se

元記事を表示

Terraformを使ったLambda関数のコンテナイメージ構築

# はじめに

AWS Lambdaは、サーバーレスでイベント駆動型のコンピューティングサービスです。従来のLambda関数ではzipファイルでコードをアップロードしていましたが、コンテナイメージを使用することで、より柔軟で強力な開発・デプロイが可能になります。
本記事では、Infrastructure as CodeツールであるTerraformを用いて、Lambda関数として実行するコンテナイメージを構築し、AWS環境へデプロイする手順を解説します。

制作したレポジトリはこちらです。

https://github.com/sugiyama404/practice_lambda_docker

参考にしたサイト

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-image.html#python-image-instructions

# 目的

Lambda関数をコンテナイメージで実行することにより、柔軟性とパフォーマンスを向上させることを目指します。

# インフラ構成

![aws.png](https:/

元記事を表示

AWS NAT ゲートウェイ を理解した上で起動&停止 Lambda を用意する

# 実現したいこと
既存のAWSのバックエンドシステムにおいて、コスト削減のため開発環境とステージング環境のNATゲートウェイ(NAT Gateway)を夜間と休日の間は停止させるべく、NATゲートウェイを起動・停止させるLambdaを作成します。

# 待て、まだコードを書こうとするな
「NATゲートウェイ 自動 停止」とかで検索すると少ないながらもいくつか記事が出てきますが、理解せずにそれをまるまるコピペして実行させるだけではうまくいかないことが多いですし、望まないNAT削除をしてしまう可能性があります。
NATゲートウェイ、ルートテーブル、Elastic IPなどが自分の開発しているシステムではどのように設定されていて、どのリソースを操作すれば良いかをちゃんと理解する必要がありました。

こちらは開発していたシステムの構成図を、NATゲートウェイ周りだけを抽出して描いたものです。
手描きでごめんなさい。(手で描いた方が頭に残ると思って。)
これを基にNATゲートウェイ周りを説明します。

![IMG_0214.jpg](https://qiita-image-store.s3.a

元記事を表示

AWS Lambda Layersを自動更新するGitHub Actions

# はじめに

あの若干面倒なAWS LambdaのLayersをGithubActionsで自動更新するプロセスを組みましたので参考にしていただければ!!(備忘録も兼ねて)

また、本記事内ではアクセスキーとシークレットキーを使った認証ではなく、OIDC認証で実施していますので以下の記事を参考にしていただければ問題ないかと思います。

https://qiita.com/frei_aqua/items/c284a1249dac84c881cb

# 前提
– Python
– Pipenv環境
– Lambda関数を作成済み
– Layersも紐づけ済み(設定オプション的に紐づけもコマンドで行けそうか?要検証)

# 本体

お急ぎの方もいるかと思いますので先にymlを貼っておきます。

“`yaml
name: Layer Update

on:
push:
branches:
– main
paths:
– “Pipfile”

env:
REGION_NAME: your-region
FUNCTION_NAME: 対象のf

元記事を表示

AWS Step Functionsでランダムアルファベットに基づくLambda関数の実行

AWS Step Functionsは、分散システムの調整や状態管理を簡単にするための強力なツールです。今回は、Step Functionsを使って、ランダムなアルファベットを生成し、その結果に基づいて異なるLambda関数を実行する方法をご紹介します。このプロセスを通じて、StepFunction の基礎の基礎を学びます。

具体的には、まずランダムなアルファベット「A」、「B」、「C」を生成するLambda関数を呼び出し、その結果に基づいて「A_Process」、「B_Process」、「C_Process」のいずれかのプロセスを実行します。それぞれのプロセスは別々のLambda関数で処理され、最終的に結果を出力するLambda関数が呼び出されます。この一連の流れをStep Functionsでどのように実装するかを詳しく解説します。

### Step Function の構成
完成時の Step Function の構成は以下の通りです。
![stepfunctions_graph (2).png](https://qiita-image-store.s3.ap-northea

元記事を表示

DockerイメージをLambda関数のデプロイパッケージとして使用する

# 手順

## Dockerfileの作成

“`Dockerfile:Dockerfile
# 使用するベースイメージを指定
FROM public.ecr.aws/lambda/python:3.12

# 必要なパッケージをインストール
COPY requirements.txt ./
RUN pip install -r requirements.txt

# Lambda関数のコードをコピー
COPY app.py ./

# Lambda関数のハンドラを指定
CMD [“app.lambda_handler”]
“`

## Lambda関数のコードを作成

“`app.py
def lambda_handler(event, context):
return {
‘statusCode’: 200,
‘body’: ‘Hello from Docker Lambda!’
}
“`

## 必要なパッケージを記載したrequirements.txtの作成

“`requirements.txt
# 例:reques

元記事を表示

不要なリソースの稼働時間、コストを削減する方法

## はじめに
今回は、**不要なリソースの稼働時間、コストを削減する方法**について、整理しました。今回ご紹介する内容を活用すると、毎回、必要な時ににインスタンスを起動したり、停止したりする手間が減るので、アプリケーション開発に集中する事が出来ると思います。

## **想定されるケース**
**開発チームとテストチームは、営業日の営業時間中に作業しますが、本番環境は 24 時間、365日稼働しています。最小限の運用労力でコストを削減するために何をすべきでしょうか?**

## **ソリューション**
最小限の運用労力でコストを削減するために、開発およびテスト環境のリソースを営業時間外に停止し、営業時間中に再起動することが効果的です。これにより、不要なリソースの稼働時間を削減し、コストを削減できます。

営業日の夕方に実行される Amazon EventBridge ルール`StopInstancesRule`を作成します。タグに基づいてインスタンスを停止する AWS Lambda 関数`StopInstancesFunction`を呼び出すようにルールを設定します。営業日の午前中

元記事を表示

未来を先取り!サーバーレスコンピューティングを徹底解説

# はじめに

サーバーレス大好きなエンジニアです!
今日は、最近急上昇中の「サーバーレスコンピューティング」について紹介します!
サーバーレスの実態や使われている事例も含めて書いていきたいと思います!

# 対象読者

– サーバーレスコンピューティングに興味がある方
– 最新の技術トレンドを追いかけたい方
– クラウド技術に関心のある方
– 新しいアーキテクチャの設計を学びたい方

# 目次

1. サーバーレスコンピューティングとは
2. サーバーレス技術の進化とトレンド
3. サーバーレスのメリットとデメリット
4. サーバーレスアーキテクチャの設計方法
5. 実際のケーススタディと成功事例
6. サーバーレスを使用する際のベストプラクティス
7. 今後のサーバーレスの展望

# 1. サーバーレスコンピューティングとは

サーバーレスコンピューティングという言葉を初めて聞いたとき、多くの人は「サーバーが無くなるの?」と驚くかもしれません。でも、実際には「サーバー」そのものがいつもそこにあるのです。サーバーレスコンピューティングとは、クラウドプロバイダーによってサーバー管理が完

元記事を表示

AWS Lambdaを定期的に実行するためにEventBridgeを設定する [Terraformを使用]

## 要約
最終的なソースコード全体は以下のリンクからご確認いただけます。

https://github.com/mochi-yu/qiita-material/tree/main/lambda-with-event-bridge-by-terraform

## 関連記事
Go言語で記述したスクリプトを、**AWSのLambdaにTerraformを用いてデプロイする**機会があり、その過程の試行錯誤を整理して一連の記事にまとめました。

この記事はそのうちの3本目として、GoのスクリプトをAWS EventBridgeから定期実行する構成をデプロイしてみたいと思います。

– [zipファイルを用いてGo言語の処理をAWS Lambdaにデプロイする](https://qiita.com/mochi_2225/items/1b645f87148899f1bc09)
– [Dockerイメージを用いてGo言語の処理をAWS Lambdaにデプロイする](https://qiita.com/mochi_2225/items/000ee604b3a274b6b62d)
– **Even

元記事を表示

AWS LambdaにGo言語のスクリプトをDockerイメージでデプロイする [Terraformを使用]

## 要約
最終的なソースコード全体は以下のリンクからご確認いただけます。

https://github.com/mochi-yu/qiita-material/tree/main/golang-lambda-by-docker-with-terraform

## 関連記事
Go言語で記述したスクリプトを、**AWSのLambdaにTerraformを用いてデプロイする**機会があり、その過程の試行錯誤を整理して一連の記事にまとめました。

この記事はそのうちの2本目として、Dockerイメージを用いてLambdaにスクリプトをデプロイしてみたいと思います。

– [zipファイルを用いてGo言語の処理をAWS Lambdaにデプロイする](https://qiita.com/mochi_2225/items/1b645f87148899f1bc09)
– **Dockerイメージを用いてGo言語の処理をAWS Lambdaにデプロイする**(この記事)
– [EventBridgeからAWS Lambdaを定期実行する処理をデプロイする](https://qiita.com/mo

元記事を表示

AWS LambdaにGo言語のスクリプトをzipファイル形式でデプロイする [Terraformを使用]

## 要約
最終的なソースコード全体は以下のリンクからご確認いただけます。

https://github.com/mochi-yu/qiita-material/tree/main/golang-lambda-by-zip-with-terraform

## 関連記事
Go言語で記述したスクリプトを、**AWSのLambdaにTerraformを用いてデプロイする**機会があり、その過程の試行錯誤を整理して一連の記事にまとめました。

この記事はそのうちの1本目として、zipファイルを用いてLambdaにスクリプトをデプロイしてみたいと思います。

– **zipファイルを用いてGo言語の処理をAWS Lambdaにデプロイする**(この記事)
– [Dockerイメージを用いてGo言語の処理をAWS Lambdaにデプロイする](https://qiita.com/mochi_2225/items/000ee604b3a274b6b62d)
– [EventBridgeからAWS Lambdaを定期実行する処理をデプロイする](https://qiita.com/mochi_22

元記事を表示

EC2 上で docker コンテナを使用した Lambda 関数の開発

EC2(Amazon Linux2) から dockerコンテナを使用して lambda 関数を作成する手順を記録しておきます。
それぞれについて、軽く説明しておきます

## docker
docker の使い方として、以下二つの方法があると思います。今回は docker 環境で開発をしていきます。
1. ローカルで開発して、docker 環境でアプリケーションを動作させる
2. docker 環境で開発して、アプリケーションを docker で動作させる

具体的には、docker とボリュームをマウントした環境で開発を行った後に、Docker image を ECR に Push して、Lambda 関数を作成します。

## 手順
0. EC2 にSSH接続する
1. docker をインストールします
“`
$ sudo yum install -y docker
$ sudo service docker start
$ sudo usermod -a -G docker ec2-user
$ sudo docker info

元記事を表示

ソリューションアーキテクトに求められる視点(14/14) API の使用を制御および制限する方法

## はじめに
ソリューションアーキテクトに求められる視点を整理してみました。

今回は、**API の使用を制御および制限する方法**です。実務や試験で、ご参考にして頂けましたら、幸いです。

## **アーキテクトに求められる視点**
Amazon API Gateway API を作成し、その API を外部の開発チームと共有している。
API は AWS Lambda 関数を使用し、本番ステージにデプロイされている。
API の使用量は特定の時間に急増し、コスト増加の懸念が生じている。
Lambda 関数を作り直すことなく、コストと使用量を制限する必要がある。

## **ソリューション**
API Gateway API キーと使用プランを作成する。使用プランでスロットル制限とクォータを定義する。使用プランを本番ステージと API キーに関連付ける。API キーを外部開発チームと共有する。

:::note info
API キーと使用プランを作成すると、API の使用を制御および制限できます。使用プランでは、スロットリング制限 (1 秒あたりのリクエスト数) とクォータ (

元記事を表示

複数名のGoogleカレンダー予定をAWS Lambdaで取得する

# はじめに
部署やグループ全体のスケジュール調整にはGoogleカレンダーを利用するのが便利ですが、複数のカレンダーを同時に確認するのは手間がかかります。
そこで、GoogleカレンダーAPIを使用して複数人分のスケジュールを取得する方法を紹介します。この処理は主にAWS Lambdaを使用して実装しました。

# 1. GCPでサービスアカウントを用意
まず最初に、GoogleカレンダーAPIを利用するためには、Google Cloudのプロジェクトを作成し、サービスアカウントを設定する必要があります。

このサービスアカウントにドメイン全体の委任を行い、`/auth/calendar.readonly`といったスコープを設定します。※ワークスペースの管理者権限が必要
このサービスアカウントのサービス アカウント キーやWorkload Identity 連携を利用しサービスアカウントの権限でAPIを叩きます。

# 2. 予定を取得するLambda関数
次に、実際に予定を取得する処理をAWS Lambdaで実装します。

実行者のメールアドレスをcredentialのsubjec

元記事を表示

OTHERカテゴリの最新記事