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

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

S3にファイルがアップロードされたらLambdaからAutonomous DatabaseのPL/SQLプロシージャを実行してObject Storageにファイルをコピーする

# はじめに

自己学習を兼ねて、Amazon S3にファルがアップロードされたら、それをトリガーにしてLambdaファンクションが起動し、LambdaファンクションがAutonomous Databaseに接続してアップロードされたファイルをAmazon S3からOCI Object Storageに移動するPL/SQLプロシージャを実行するという仕組みを構築してみました。

処理の流れのイメージは以下のようになります。

1. Amazon S3のバケットにファイルをアップロード

2. Amazon S3バケットのオブジェクト作成イベントをLambdaに通知

3. LambdaからAutonomous Databaseにアクセス

4. Amazon S3にアップロードされたファイルをOCI Object Storageに移動するPL/SQLプロシージャをLambdaから実行

5. PL/SQLプロシージャによって、Amazon S3にアップロードされたファイルがOCI Object Storageに移動される

※なお、Python、Lambdaに関して初心者ですので、最低

元記事を表示

AWS Lambdaにレイヤーを追加する

## やること

– ローカル環境でlambda関数で使用するライブラリをインストール
– ライブラリをzip化
– lambda関数にレイヤーを設定

## 環境

– lambda
– Python
– Windows(WSL,ubuntu)

## ライブラリを用意

##### lambda関数で使用するライブラリをインストールする。ここではsqlalchemyとしておく。

ローカル環境でvenv仮想環境を構築して、sqlalchemyをインストール。
“`shell
python -m venv venv
source venv/bin/activate
pip install sqlalchemy
deactivate
“`

ライブラリをzip化
“`shell
# 適当なディレクトリにpythonディレクトを作成
mkdir /home/hoge/tmp/python
# 仮想環境でインストールしたライブラリをコピー
cp -r venv/lib /home/hoge/tmp/python/
# zip化
cd /home/hoge/tmp
zip -r lay

元記事を表示

Lambda で Prisma 使って Migrate する

## やりたいこと

AWS で RDS 作ったけど、テーブル作ったりするのどうしよー
という事で、今回は [Prisma](https://www.prisma.io/) を AWS Lambda に入れて、migrate を実行してみました。

1. ローカルで `prisma migrate dev` を実行して migration ファイルを作成
2. AWS Lambda で `prisma migrate deploy` を実行して Amazon RDS に適応

ということをやろうと思います。こうすることで、

– AWS 上にサーバーを立てることなく DB のテーブル作成が可能
– Prisma の migration ファイルを管理することで、複数人での開発や、他環境への適応も楽

になるはず。
ちなみに、私は Amplify を使って Lambda を作成しました。

## Lambda のコード

RDS のユーザ名、パスワードは Secrets Manager にある前提です。
以下の環境変数の設定が必要です。

– DATABASE_SECRET_ARN: S

元記事を表示

GmailトリガーでAWSのLambdaを起動する

非エンジニアのバックオフィスが頑張るシリーズです。

今回は会社に関係なく個人的なニーズでやってます。今どき個人でもLambda関数のひとつやふたつ、もっているのが常識ですよね🙃
届いたメールでLambdaが起動したらきっと便利なはず!
# やりたいこと
Gmailで特定条件のメールが来たら、Lambdaを起動したい
# 具体的な方針
1. Gmailで特定条件のフィルタを作成しラベルをつける
1. GASでGmail API を叩いてラベルのついたメールがあったらAWS API Gateway を叩く
1. API Gateway から Lambda を起動する
# 作成編
今回は既に問題なく動く Lambda関数があって、デプロイ・テスト完了しているものとします。
## Gmailのフィルタ設定
まずGmailで特定のラベルをつけるフィルタを設定します。(説明割愛)
## API Gateway の準備
今回は単純にAPIを叩くだけで、パラメータ等の引き渡しはしませんので、簡単に作成します。
## API Gateway 作成
「APIを作成」ボタンを押下します。
![image.

元記事を表示

AWS Textractを使用したS3アップロードトリガーの自動テキスト抽出

この記事では、AWS SAMを使用してS3バケットにファイルがアップロードされた際に自動的にAWS Textractを利用してテキストを抽出するLambda関数を作成する方法を説明します。
このテンプレートは以下のリソースを作成します。

S3バケット: ファイルのアップロードをトリガーするための入力バケットです。
バケット名は{AccountId}-{Region}-input-bucketという形式で生成されます。

Lambda関数: S3バケットにファイルがアップロードされるとトリガーされる関数です。
この関数はPython 3.11で動作し、Textractを使用してアップロードされたファイルからテキストを抽出します。

IAMロール: Lambda関数が適切な権限を持つためのロールです。
このロールには、Lambdaの基本実行権限、S3へのフルアクセス権限、Textractへのフルアクセス権限が含まれます。

このテンプレートの構成と実装方法を解説し、最後に、実際に動作確認を行い、S3バケットにファイルをアップロードしてTextractによるテキスト抽出が成功することを

元記事を表示

【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

元記事を表示

OTHERカテゴリの最新記事