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

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

Lambdaでストリーミングレスポンスに対応する

# 背景

* Lambdaの関数URLを使用している。

* ストリーミングレスポンスを扱いたい。

# 方法

1. 関数URLの呼び出しモードを`RESPONSE_STREAM`に変更
![Screenshot 2024-06-14 at 12.12.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679785/ceb6d49d-85b4-79c3-75dc-e065f9fcded4.png)

2. 以下の環境変数を指定する。
“`text
AWS_LWA_INVOKE_MODE: RESPONSE_STREAM
“`

以上です。めっちゃ簡単!

# 詳細な状況

LangChainを使用しており、ストリーミングでレスポンスを返したかった。ローカルでは正常にストリーミングでレスポンスを返すが、Lambdaにデプロイすると、意図した挙動になりませんでした😭

補足:Lambdaには、[Lambda Web Adapter](https://aws.amazon.com/jp/build

元記事を表示

[初心者向け] SlackとChatbotとLambdaを使ってChatOpsを実現しよう!

## 概要
Slack(Chatbot)経由でLambdaを使ってChatOpsを実現できるのでその方法について解説します

## 前提
– SlackのワークスペースとChatbotとの連携が完了していること

## ChatOpsとは
Chatツール(Slack、Teamsなど)を通じてシステム開発・運用から一般業務などさまざまな業務の効率化を行う手法のことです
ChatOpsでできることは色々あり、Slackにメッセージを送ることで

– SSOユーザの発行
– SGへIPアドレスを登録
– デプロイ

などさまざまなことを行うことができます
また、Slackのワークフローを組み合わせることでより汎用性が高くなります

## Chatbotの設定
Chatbotの設定を行います
設定名とチャネルIDを設定します

![スクリーンショット 2024-06-29 17.47.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625980/d07ae4f1-c4d9-eb1a-6bcb-c117a7b

元記事を表示

Lambda関数でDockerコンテナ化されたPythonのFastAPIサービスを動かす

# Lambda関数でDockerコンテナ化されたPythonのFastAPIサービスを動かす
* 参考にさせていただいたブログ : https://reffect.co.jp/aws/lambda-docker-fastapi
## ディレクトリを作成する
“`bash
docker -v
mkdir lambda_fastapi
cd lambda_fastapi
“`
## fastAPIサービスを実装する
“`bash
touch app.py
“`
* ~/aws/lambda_fastapi/app.py
“`python
from fastapi import FastAPI
from pydantic import BaseModel
from mangum import Mangum

class Item(BaseModel):
name: str
price: float

app = FastAPI()

@app.get(‘/’)
async def root():
return {“message”: “Hello from l

元記事を表示

サーバーレスベストプラクティスで初めて知ったこと

# はじめに
サーバーレス大好きなエンジニアです!
AWS SUMMIT 2024に行ってきて、たくさんのことを学んできました!
特に「サーバーレス開発のベストプラクティス」の内容が面白かったのでシェアしたいと思います。

# サーバーレスとは
サーバーやインフラの管理を気にすることなくアプリケーションを実行することができる最高の技術です。細かい設定を気にすることなく、すぐに価値を提供できることが魅力です。

# Lambdaのベストプラクティス
ここからAWS SUMMIT 2024の内容に触れていきます。

## TransportではなくTransform
まず、ハッとさせられたのは以下のことです。
>Transport (転送)ではなくTransform(変換)に使⽤する。

今までLambdaをどれだけ転送機能として使ってきたかを考えさせられました。
何でもかんでもLambdaに任せるのではなく、特定の変換処理を行うことに専念させると、より効果的に使うことができます。

## 繋げるLambdaを減らす
複数のLambdaを繋げるのではなく、できるだけシンプルに、独自の処理を

元記事を表示

LocalStack On Docker

以前からLocalStackのPro版を使っていたのですが、忘れっぽいので記事にしたいと思います。今回はDocker上にLocalstack(pro)を立てて、Lambda・SNSを作成し外部端末からLocalstackのSNSトピック宛てメッセージを送ってみたいと思います。Lambda関数は外部メールを送信するようセットしておきます。

<<イメージ図>>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335933/d888c9d8-a3ba-ed65-41c5-3be6698a47ec.png)

# 前提
ホストOS:Ubuntu 22.04.1 LTS
Docker version: 27.0.3, build 7d4bcd8
Docker Compose version: v2.28.1

# 1. Dockerコンテナ構築
まずは任意のディレクトリを作成し、そこにdocker-compose.ymlを準備します。
※マニュアル記載の内容からアドレスのみ変更(ホストOSのIP

元記事を表示

【Node.js】Lambdaから社内環境のSQL Serverに接続する方法

## はじめに
AWS Lambdaから社内環境のSQL Serverへの接続方法について紹介していきます:point_up_tone1:
SQLServerへの接続部分で具体的な値の例が無く、苦戦したのでより具体的に値を記載しようと思います!

## 開発内容
### パッケージのインストール
Node.jsでSQLServerへアクセスするために必要なパッケージをインストールします

“`
npm install mssql
“`
https://github.com/tediousjs/node-mssql

### Lambdaの設定
特定の環境からのみアクセス可とするため、VPCの設定を行います。
Lambdaの設定タブのVPC からVPC、サブネット、セキュリティグループを設定します。

### ソースコード

“`javascript
// パッケージの読み込み
const sql = require(‘mssql’)

// SQL Serverの設定
const config = {
user: ‘sa’,
password: ‘XXXXXXX’, //

元記事を表示

LangServeをAWS Lambdaにデプロイすると、アクセス時にファイルダウンロードになる

# 現象
AWS LambdaにLangServeをデプロイし、アクセスするとなぜかファイルダウンロードになる

![スクリーンショット 2024-07-02 19.43.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58745/9d8be00e-561f-6b3f-08ed-08af423d4b43.png)

# 原因
## ライブラリのインストール漏れ

## CloudWatchでエラーを追う
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58745/db8516f0-876a-d6bc-5935-fef857bfb085.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58745/a19df5d8-8886-bdd1-3142-e37cb347bb87.png)

## requ

元記事を表示

Vue3(S3)とSupabase(AWS Lambda)で作るGoogleアカウント認証サイト

# はじめに

AWS Lambda(node.js)でSupabaseのクライアントを作成し、S3にデプロイしたVue3から使う方法を解説していきます。

また前回の記事でも行ったGoogleをプロバイダーとしてOAuth認証もAWS Lambda越しに操作します。

## この記事について

自分の理解度向上のために作成してますので、だいぶ長いです。Supabaseをサーバーレスで使う一例としてご参考になれば幸いです。

:::note warn
Supabaseに関する記事ですが、公式に則った利用方法ではありません。
実際の利用に関してはしっかりと`Row Level Security`を設定し、アクセスポリシーも設定しセキュリティ対策をしたうえで使うのが正攻法です。
:::

さもないと、怒られます!:flushed:

![caution.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38388/09b567f7-6f55-d827-4382-1b01ae784f1c.png)

こういうとこ

元記事を表示

LambdaでAppStoreの最新レビューを取得してSlackチャンネルに通知する

# はじめに

こんにちは、Gakken LEAP のエンジニアの okamotoです。

AppStoreのレビューを自動で定期的に確認し、新規で投稿されたものがあれば通知を行う仕組みを作成しました。

本記事ではAWS Lambdaでアプリケーションを実行し、Slackのチャンネルに通知するための手順を紹介します。

# 準備するもの

## アプリのレビューを取得するためのURL

`
https://itunes.apple.com/jp/rss/customerreviews/id=[Apple ID]/sortBy=mostRecent/xml
`

※[Apple ID]はレビューを取得したいアプリのAppStoreのURLに「idxxxxxxxx」で記載されています。

## 通知先のSlackチャンネルのURL

### 手順

* 以下のURLにアクセス

1. 「Create an APP」をクリック
![図1.png](https://qiita-image-store.s3.ap-nort

元記事を表示

WSLへのServerlessFrameworkの導入

# 自己紹介

乙井です……。(ヒロシです風)
Gakken LEAPという EdTech の会社で丁稚エンジニアをやっております。
本稿では WSL への ServerlessFramework の導入についてご説明します。
なお前回は[remi で入る PHP アップグレード](https://qiita.com/GleapPost/private/b25bb1f3309e548d976e)という記事を書いたりしています。

# 目次

– [自己紹介](#自己紹介)
– [目次](#目次)
– [前書き](#前書き)
– [前提条件](#前提条件)
– [コマンド](#コマンド)
– [下準備1](#下準備1)
– [Serverless Framework 導入](#serverless-framework-導入)
– [ローカル実行](#ローカル実行)
– [下準備2](#下準備2)
– [デプロイ・リモート実行](#デプロイリモート実行)
– [余談](#余談)
– [★エンジニア募集!★](#エンジニア募集)

元記事を表示

loggingモジュールを使用してLambdaのログをS3に保存する

# はじめに
本記事では、AWS Lambda で logging モジュールを使ったログ出力と、S3バケットへのログファイルアップロードを実施してみます。

# 環境
python : 3.12

# 前提
– S3 バケット(ログを保存する先)
– IAMポリシー設定(Lambda 関数が S3 にアクセスするためのの付与)

# Lambda関数

ログの設定周りを行います。
それぞれ作成したハンドラに対して出力するログレベルを設定します。ログのフォーマットを設定して、時刻、関数名、ログレベル、メッセージを含むようにします。

“`python:utils.py
import logging

def setup_logger(LOG_FILE):
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

# ハンドラの作成
stream_handler = logging.StreamHandler()
file_handler = logging.FileHandle

元記事を表示

【AWS】Lambda(boto3)を使ってDynamoDBへ読み/書き込みを実施

# はじめに
Lambdaを使用してDynamoDBのテーブル読み込みをできますか?
私はSDKを利用して`dynamodb.query`などの関数を使用すればいいと考えていましたが、具体的な実装まで理解できていませんでした。

本記事はLambdaを利用してDynamoDBに対して、
一般的なアクションを実装してみた記事となります。

# 今回試してみる構成
This is Simple構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1764568/e5130438-1325-28b9-9e62-1cf0673118fa.png)

## DynamoDB構成
パーティションキー:Id
ソートキー:Timestanp
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1764568/b67bb6aa-bd6b-a5bf-6032-82cd717b2d41.png)

# 前提
## クラ

元記事を表示

AWSのコスト状況をLINEとDiscordに定期通知させてみる(高額請求回避)

# はじめに
Amazon Kendraの勉強をした後に作成したリソースを消し忘れており、`$262.12` (=42,169.21 円 2024/6/29時点)の請求が来てしまいました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/7389112b-6aa9-eca1-6349-19bb075f1d0d.png)

私がこまめにコストの方を確認していなかったのが悪いのですが、請求アラートの設定もできていなかったため今回請求アラートの設定を行いました。
またこの際に、勉強も兼ねて自分が使っているSNS(LINE、Discord)にAWSのコスト情報を通知する仕組みも実装してみました。
本記事はこれらの内容をまとめたものになります。

# 請求アラートの設定
AWS Billing から請求アラートをドキュメント記載の手順通り設定(AWS Billing > 請求設定 > アラート設定)するだけです。

https://docs.aws.amazon.com/ja_j

元記事を表示

Lambdaでrequestsモジュールを使おうとしたときに発生したエラーと対処法

# はじめに
Lambdaでrequestsモジュールを使おうとしたところ下記のエラーが発生。
エラー対象の備忘録も兼ねて本記事を作成。

“`:error
“Unable to import module ‘lambda_function’: No module named ‘requests'”
“`

# 原因
Layerを追加できてないかったから。

# 環境
– windows
– python 3.12

# やったこと
ローカルでpythonフォルダを作成しライブラリをインストール。
zip化したpythonフォルダをLambdaのLayerに追加する。

## pythonフォルダを作成

フォルダを作成します。

“`
mkdir python
“`

:::note warn

フォルダ名は`python`とすることに注意。
参考:https://soypocket.com/it/aws-lambda-python-error-no-module-named/

:::

## モジュールのインストール

requests モジュールをインストールします

元記事を表示

Aurora PostgreSQL のパスワードを Secrets Mangaer でローテーションさせる際にはまったこと

Aurora PostgreSQL のパスワードを Secrets Mangaer でローテーションさせる際にはまったことをご紹介します。

## 想定の構成

今回は以下のような構成を想定しています。

![スクリーンショット 2024-06-29 15.25.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074001/27d9c359-e009-2bf3-e1e8-d3efd0eb3a3c.png)

ECS から Aurora PostgreSQL にアクセスするためのユーザ名やパスワードなどの認証情報を Secrets Manager に格納しています。また、認証情報は Lambda でローテーションさせます。

## はまったこと

PostgreSQL の接続 URL は”postgresql://【ユーザ名】:【パスワード】@【ホスト名】:【ポート番号】/【データベース名】”という形式です。PostgreSQL のパスワードに[パーセントコーディングの必要な文字](https://

元記事を表示

pythonでDecimal型をintとfloatに変換する

# はじめに
DynamoDBに登録したデータをLambdaで取得して返却しようとしたときに
“Object of type ‘Decimal’ is not JSON serializable”とエラーが出てしまいました。
Dynamo側から取得したデータを見ると数値がDecimal型になっており、Decimal型はjson.dumpsできないみたいです。
今回は整数で表現できるものは整数、実数値は実数値に変換したかったのでそのように処理を追加しました。

# 本題
下記が対象のコードです。
対象のデータを一度整数に変換して変換前のデータと比較して一致した場合、つまり小数点以下が0の場合はint、違う場合はfloatに変換して返却するようにしました。

“`python:main.py
import json
import boto3
from decimal import Decimal

def lambda_handler(event, context):
try:
def decimal_transform(obj):
if

元記事を表示

chiitilerでつくる地図タイルサーバー

# はじめに

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/f96c630b-42d9-96be-59f1-f0e8b8b2b6b9.png)*https://maps.gsi.go.jp/development/siyou.html より引用、地図タイルのイメージ*

地図タイルとは、ズームレベル(≒解像度)別にタイル状に分割された地図データのことです。例えば0/0/0という番地のタイルは`https://cyberjapandata.gsi.go.jp/xyz/std/0/0/0.png`で得られます。整数値3つからタイルの領域が一意になるのが、地図タイルの利点です。

# 地図タイルサーバー

地図タイルの作成方法には、①巨大なデータを事前にタイルに分割しておく方法、②リクエストがあった際にそのタイルを作成する方法の、2つがあります。メジャーなのは前者です。立派なサーバーや難しい実装がなく簡単に作成・配信できるためです。

①は静的タイルなどと呼ばれることがあり、作成

元記事を表示

AWS Lambda関数をGolangで実装し、Github Actionsで構築自動化してみた

## 1. はじめに
この記事では、AWS Lambda関数をGolangで実装し、その更新を手動および自動化する方法について解説します。特に、GitHub Actionsを用いた構築自動化の手法に焦点を当てます。

## 2. AWS Lambdaとは
AWS Lambdaは、イベント駆動型のサーバーレスコンピューティングサービスです。ユーザーはインフラストラクチャを管理することなくコードを実行できます。
https://aws.amazon.com/jp/lambda/

## 3. GolangでのLambda関数実装
### 3.1 Golangの環境構築
※他記事を参考にしてください。

### 3.2 簡単なLambda関数の作成
今回、Lambdaはコンテナイメージで実装しています。

コンテナイメージにする利点や具体的な実装詳細については[エムスリーさんのテックブログ](https://www.m3tech.blog/entry/2023/08/31/110000)を参考にしました。
以下は要点です:
– GolangでのLambda関数作成手順
– AWS Lambd

元記事を表示

Athenaでdouble型(実数型)を取得したら指数表記になってたので変換した話

# はじめに
LambdaとAthenaを使ってデータを取得、返却するプログラムを作りテストをしたところ「0.0003」などの小数が「3.0E-4」などの指数表記で帰ってきていました。
1つのLambdaで指定したテーブルの全列を取得できるような仕様にしており、特定の列をCASTするといったアプローチは取れなかったため指定されたテーブルのスキーマーをもとに取得列を動的に作成するLambdaを作成しました。

# 本題
“`python:main.py

import json
import awswrangler as wr

DATABASE = ‘database_name’
TABLE_NAME = ‘table_name’
OUTPUT_LOCATION=’s3://example’

def lambda_handler(event, context):

try:

# テーブルの列名、型を取得
query = f”””
select
*
from information_sche

元記事を表示

S3とLambda、SESを用いてお問合せフォームを作成した話 3

実は2回で終える予定だったのですが、AWS SUMMITに行った際、AWSのサポーターの方から、「API Gateway使わなくても直接Lambdaの関数たたけるよ^^」と教えていただいたため、確かめることに…

前回までの記事はこちら

https://qiita.com/sakura11054/items/0b5e8603d6d4f92ac746

https://qiita.com/sakura11054/items/a29741cf124ba315d892

https://qiita.com/sakura11054/items/47bba94339cb62f037ef

https://qiita.com/sakura11054/items/678a3b45807999f63b75

# Lambdaの設定

Lambda側の設定は単純です!
前回までで作成したLambda関数を開きます。
設定タブを開くと画像のように関数URLとあるのでこれを開きます。
現状、関数URLなしと表示されているので、関数URLを作成を押下します。

![image.png](https://

元記事を表示

OTHERカテゴリの最新記事