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

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

LambdaでBedrockのClaude 3を呼び出してみた

[Supership](https://supership.jp/)の名畑です。[プリティーリズム・レインボーライブ10周年展](https://www.0101.co.jp/086/event/detail.html?article_seq=123730&article_type=sto)おめでとうございます。とても楽しい展示でした。

## はじめに

[Anthropic](https://www.anthropic.com/)がリリースした[Claude 3](https://www.anthropic.com/news/claude-3-family)が話題です。

– [Anthropic、AIチャット「Claude 3」を3サイズで 日本語力も向上 – ITmedia NEWS](https://www.itmedia.co.jp/news/articles/2403/05/news089.html)
– [GPT-4超えをアピールするClaude-3がAIで初めてIQ100超えを達成したという報告 – GIGAZINE](https://gigazine.net/new

元記事を表示

S3・SQS・Lambdaで自動マスタリングアプリを作る

# 概要

今回は、AWSのSQS・Lambdaを練習も兼ねて触ってみようということで自動マスタリングアプリを開発しました。
ちなみにマスタリングとは、音楽制作の最終工程であり、最終的に配信やCDプレスするために音質を整える作業のことです。

※ファイルをS3にアップロード・ダウンロードするUI等は実装しません。

# 音圧爆上げくんとは

AIを使用したマスタリングを、オンラインで自動的に行なってくれるサービスです。
以前は有料機能もあったようですが、2024年3月17日現在は無料で使えます。

APIが提供されており、今回使用させていただきました。

https://bakuage.com/

https://qiita.com/bakuage/items/5e383be930477ca6f148

実装には、こちらのチュートリアルが役立ちます。

https://github.com/ai-mastering/tutorial-go

# 成果物

今回開発したアプリの使い方の説明です。

### 1. 音声ファイルをS3バケットに配置する

元記事を表示

AWS Lambda + Pythonで簡易LINEBOT作ってみた

## 作った経緯
LINEBOTを作ったら便利なのではという機会があったので、とりあえず簡易版を作ることにした。

最初はAzureBotService + C#でやっていたがテストBotのデプロイがうまくいかなかったため、AWSLambda + Pythonに変更

## 前提
LINE DevelopersでWebhookを利用できるBotを作成している。

## やったこと
### AWS Lambdaで関数を作成する
1. AWSコンソールに飛び、Lambdaを検索する
1. 「関数を作成」をクリックする
1. 適切な関数名を設定
1. ランタイムでPythonを選択
1. 「関数の作成」をクリックする
1. 画面が戻った後、求めているBOTのコードを記述する

#### これで関数の作成は完了!

コードの複雑度によっては、ライブラリのインストールが必要ですが今回は標準のみなので省きます。
### API Gatewayの追加
1. トリガーを追加する
1. API Gatewayを選択する
1. Create a new APIを選択する
1. HTTP APIを選択する

元記事を表示

会話の記憶を持つLINEチャットbotをAWS Lambda+DynamoDBで実装する【Python3】【GPT-4】

周回遅れも甚だしいネタですが、OpenAI APIを使ってチャットbotを実装しようとする時、会話の記憶を持たせたい(何もしないとステートレスな会話になる)というのはよくあるユースケースだと思います。

AWS上でLambdaとDynamoDBを使い、会話の記憶を持たせたLINEチャットボットを実装したので、自分への備忘録的に記事を残しておきます。

## 仕様
– 会話を記憶する数は5往復(10メッセージ)とするが、適宜変更もできるようにする
– 会話履歴を記憶させる媒体としてAWS DynamoDBとする
– DynamoDBへは1ユーザー1レコードとし、保存対象の会話をJSONで1フィールドにまとめて保存する

### 会話履歴の保存数を5往復とした理由
会話履歴の保存数を多く(長く)すればするほど、理論的には文脈の理解度は上がるはずですが、パラメータを弄りながらテストしていると、あまり古い会話を覚えておいても文脈理解にはかえって邪魔になることが分かりました。
また、当然のことながら記憶しておく履歴が長いほどTokenの消費量も多くなるため、コスト的にも不利になります。
今回は、

元記事を表示

Chaliceってなに? ー> Lambda関数をお手軽に作れるライブラリ

## イントロダクション

このブログでは、AWSのChaliceを使用してPythonサーバレスAPIを作成する方法について詳しく説明します。Chaliceは、AWS Lambda関数の作成やAPI Gatewayの設定など、サーバレスアプリケーションの構築を容易にするPythonフレームワークです。

## Chaliceとは何か?

Chaliceは、AWSが提供するPython用のマイクロフレームワークで、サーバーレスアプリケーションを簡単に作成できます。Chaliceを使用すると、AWS Lambda関数の作成やAPI Gatewayの設定などが簡単に行えます。また、Chaliceは、Pythonのデコレータを使用してルーティングを設定するなど、Pythonらしい書き方が可能なため、Python開発者にとってはとても使いやすいツールです。

[Documentation — AWS Chalice](https://aws.github.io/chalice/)

## ChaliceでのPythonサーバレスAPIの作成

ChaliceはCLI(Command Line

元記事を表示

AWS Lambdaで翻訳APIをつくってみた

# TL,DR
Lambda関数からGoogle Cloud Translation APIをコールして、単語を翻訳するAPIを作りました。
Pythonコードです。
Lambda関数はChaliceを使うことで、簡単にAWSにデプロイすることができます。

# 出来ること

こんな感じで、エンドポイントのクエリパラメータに翻訳対象のテキストと翻訳先言語を指定すると

“`
https://xxxxxx.amazonaws.com/api/?word=Hello+World!&target_language=fr
“`

翻訳結果が返ってきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2526943/2defd514-566c-4787-5900-f241101a1cec.png)

# 作り方

## GCPの準備

1. プロジェクトの登録
1. APIの有効化
1. サービスアカウントの作成、キーのダウンロードー>JSONファイル

## ChaliceでAPI化

元記事を表示

CodePipelineの最後にCloudFrontのキャッシュを自動で削除する

# これは何?
S3の静的サイトホスティングとCodePipelineを組み合わせてWebサイトを公開しているのですが、今まではCloudFrontのキャッシュ削除を手動で実施していました。

今回、そのキャッシュ削除を自動化したのでその際に実施したことをまとめた記事です。

# 構成
以下の構成でWebサイトを公開しています。
![20240317_165731.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/601535/2718f394-2ef8-5f42-4cad-2a0535ab7ab4.jpeg)

– S3の静的サイトホスティングを利用
– CMSは導入しておらず、ソースコードはCodeCommitで管理
– CodeCommitでブランチをマージするとパイプライン処理が起動し、S3へのデプロイが実行される
– S3へのデプロイ完了後、LambdaがCloudFrontのキャッシュを削除しに行く
– ↑赤枠の部分であり、今回の実装内容です
– パイプライン処理の開始/終了時にはAWS

元記事を表示

Claude 3とAWS CDKを使い爆速でAWSの検証が出来る環境を手に入れよう!

## はじめに

– 今回は、今話題の [Claude 3](https://claude.ai/) で[AWS CDK](https://aws.amazon.com/jp/cdk/)というAWSインフラのプロビジョニングツールを使い、簡易的なメール通知の仕組みを作成しました。
– 基本的にはClaudeに尋ねながら構築を行っており、AWS CDKの最初のセットアップ以外はコードをほとんど書いていません。
– なので、AWS CDKに馴染みが無い方でも、最初のセットアップさえ出来れば、Claudeを活用しながら、どなたでもAWS CDKをご活用頂けるのではと考えております。

## 技術要素の紹介

### Claude 3

2024年3月4日に発表されたAnthropic社の最新モデルの生成AIです。

https://qiita.com/minorun365/items/e6f3aa71f5e1bdf21139

– 特に驚いたのは「マルチモーダル」対応という事で、画像やPDFの分析もしてくれます。
– [anthropic.com](https://www.anthropic

元記事を表示

AWS Lambdaを使ってLLMの推論結果を段階的に表示する

# LLMの業務利用
LLMを使ったサービスが世の中に数多く登場し、実際に活用している方も多くいらっしゃるのではないでしょうか?
個人で利用する場合は好きなサービスを自由に使えますが、業務で使う場合は情報流出のリスク等の観点から自由に使えないことがほとんどかと思います。
業務で使う場合は、情報流出防止の観点で入力データが学習データとして利用されないことが前提条件になるでしょう。
その場合は、これらのリスクをクリアしたサービスを使うか、自身で環境を構築するかの2択になってくるかと思います。

自身で環境構築を行う際に、意外なハードルになるのがLLMの推論結果を段階的に表示する部分だったりします。
利用するモデルや入出力のデータの量にもよりますが、LLMの出力が完了するまでに分単位の時間がかかることも珍しくありません。
出力が完了するまで、LLMの出力結果が一切表示されない実装をしてしまうと、利用者は何も表示されない画面を見ながら待ち続ける必要があります。これではユーザ体験が非常に悪くなります。
LLMは段階的に出力を行う仕組みになっているため、その出力結果を段階的に画面に表示することで、

元記事を表示

【Lambda】S3イベント通知におけるオブジェクトキーのエンコードに関する注意点と解決策

# 背景
AWSを使用している開発者にとって、S3のイベント通知を処理するLambda関数は一般的なユースケースです。

しかし、オブジェクトキーに半角スペースが含まれている場合、S3はこれをプラス記号にエンコードして通知を送信します。
このエンコードにより、Lambda関数にはエンコード後のオブジェクトキー名が渡され、開発者が予期しない問題に直面する可能性があります。

例えば、S3のイベント通知で起動するLambda関数で、イベントデータからオブジェクトキーを取得し、何らかの処理をするとします。
Lambdaにはエンコード後のキー名が渡されるので、開発者はオブジェクトキーを適切に処理することができず、期待しない動作が発生する可能性があります。
(S3から当該キーのダウンロードに失敗する、など)

# 解決策
この問題を解決するためには、オブジェクトキーをLambda関数内で適切にデコードする必要があります。

Pythonの場合、urllib.parse.unquote_plus関数を使用して、エンコードされたオブジェクトキーをデコードすることができます。
このメソッドを使用する

元記事を表示

AWS LambdaでLINE⇒Slackにメッセージ連携したメモ

Lambda関数でLINEのメッセージを受信してSlackに通知する手順をまとめておきます。
自分用メモ。

## 前提
– 開発環境:Cloud9
– OS:Amazon Linux 2023
– Pythonバージョン:3.10

## Slack側準備
### 動作環境作成
自分が管理者権限を持つワークスペースと投稿先のチャンネルを作成しておきます。
改めて説明することは特にない。

### Slackアプリの作成
外部からSlackにアクセスするため、窓口となるアプリを作成します。
[Slack の bot を自作する(AWS Lambda + API Gateway)](https://qiita.com/landwarrior/items/dfac36a1aadac9ab0cd5#slack-app-%E3%82%92%E4%BD%9C%E6%88%90)記載の手順を参考にSlack Appを作成しました。が、今回はLINE⇒Slack連携なのでApp作成後は「Event Subscriptions」の設定は不要です。

### Webhookの追加
App作成後、左メニュ

元記事を表示

LINE NotifyとAWSを用いた定期自動送信の実装

# 1. はじめに
 LINE Notify APIを使ってメッセージを送信するPythonプログラムを作成しました.さらに,AWSを用いてそのプログラムを自動で定期実行できるようにしました.駆け出しエンジニアの私でも1日で0から作成することができたので,ぜひ参考にしてみてください.

 プログラムはGitubにも公開しています.https://github.com/vivy-phtela/line_notify

# 2. 開発のきっかけ
 アルバイトリーダーの私はLINEグループに定期的にシフト提出のリマインドを送信する必要があるのですが,いつも忘れてしまいます…これをどうにか自動化できないかと考えていたところ,LINE Notifyを見つけました.

# 3. LINE Notifyでトークンを取得
 LINE NotifyとはLINE公式が提供しているAPIで,連携するとLINE Notifyという公式アカウントを介して通知を送ることができます.公式ドキュメントは[こちら.](https://notify-bot.line.me/doc/ja/)
### STEP1:

元記事を表示

【Go, AWS】低予算APIサーバー構築を最初から最後まで【Golang, Lambda, DynamoDB, API Gateway, Cognito】

:::note
* `Go` -> `Python`差し替え編
* クライアント(`Vue.js`)編

執筆中です。
:::

:::note warn
価格・安全性など重要事項は随時ご自分で調べ、自己責任で作業をしてください。
筆者はいかなる損害について責任を負いかねます。
:::

## はじめに
低予算(規模が十分小さければ無料)で[REST APIサーバー](https://qiita.com/masato44gm/items/dffb8281536ad321fb08)を作りましょう。

DBあるよ!

## 概要
まず、低予算で推奨されるのが [**サーバーレス**](https://business.ntt-east.co.jp/content/cloudsolution/column-414.html) です。
厳密性を無視して簡単に言うと、 **常時待機するのではなく、必要な時だけ動作するサーバー** というイメージです。低予算でいける理由がこれでわかりますね。

思ったよりやること、というよりかは扱わないといけない機能が多いです。

![AWS_Rest.drawi

元記事を表示

Lambda(AWS Lambda)について

# はじめに
こんにちは!開発部のMです。
今回はサーバーレスサービスの一つである「Lambda」についてご紹介します。

# Lambdaとは
FaaSサービスの一つです。本来、アプリケーションを開発するためには自社内でサーバを準備しなければなりません。しかし、FaaSではインターネットを介してサーバを利用できるため、サーバレスな開発が実現します。
これはアプリ開発者によるサーバ管理が不要、存在を意識する必要がないということであり、サーバがなくてもアプリ開発ができるという意味ではありません。

# AWS Lambdaの特徴
AWS Lambdaでは、まず実行したいアプリケーションコードをLambda関数で開発し、Lambda上にデプロイします。するとアプリケーションが実行可能になります。

### サポート言語
Java、Go、PowerShell、Node.js、C#、Python、Rubyなど
その他のプログラミング言語を使用できるようにするための Runtime API も提供されています。

### 処理のトリガー
*  **ファイル処理:** Amazon Simple

元記事を表示

LambdaにLine BOTを作ったメモ

Cloud9環境でLambda(Python)にLine Botを作る手順をまとめておきます。
例によって自分用。

ちなみに自動応答や一斉配信、リッチメニュー等は公式アカウントの機能で実現できます。今回はSlackとの連携やデータ収集機能を追加する予定なのでLambdaで実装しました。

## 前提
– OS:Amazon Linux 2023
– Pythonバージョン:3.10
– [LINE Messaging API](https://developers.line.biz/ja/services/messaging-api/)

## LINE側準備
### LINE公式アカウント作成
まずは[LINE公式アカウント](https://www.lycbiz.com/jp/service/line-official-account/)を作成します。複数人での管理を前提とするならメールアドレスで登録しておきましょう。
Lambda Node.js serverlessを使うほどでもないちょっとした関数を書きたいときのDocker環境を作ってみた

## 概要

Lambdaにて小規模なコードを記載したい場合にちょっと楽できるようなDocker環境を作ってみました。

## 発端

小規模な処理(例えばSESのバウンス情報をSNSからLambdaを経由してSlack通知したい場合)をLambdaで使いたい場合、下記のようなジレンマがある。
– Lambdaのブラウザのエディタで書くのはなんかテンションが上がらない、普段から慣れてるエディタを使いたい。。。
– serverlessだとリッチ過ぎる、学習コストもかかる。。。
– 慣れてるエディタで書こうとしてローカルPCのNode.jsを使って書くと、複数の開発者がいる場合バージョン合わせが大変。。。

Dockerならこの辺を一挙に解決できるのではと思い今回環境を作ってみました。

## 御託はいい、早くその環境をよこせ

もちろんどうぞ!
↓こちらから取得いただけます。完全にフリーで利用いただけます。おそらく利用方法はREADMEを呼んでいただければ大丈夫だと思います!

https://github.com/miriwo0104/nodejs_20_lambda_local_d

元記事を表示

SES→SNS→Lambdaでバウンスが行われたときに、Lambdaのテストで使えるイベントJSON

## 概要

SESで送ったメールがバウンスし、SNSのトピックを通じ、サブスクしているLambdaを動かして何かしらの動作を行いたい場合にLambdaのテストのイベントJSONに記載して使う事のできるイベントJSONの内容を考えたので記載しておく。

## 内容

下記にイベントJSONの内容を記載しておく。

“`json
{
“Records”: [
{
“EventVersion”: “1.0”,
“EventSubscriptionArn”: “arn:aws:sns:EXAMPLE”,
“EventSource”: “aws:sns”,
“Sns”: {
“SignatureVersion”: “1”,
“Timestamp”: “1970-01-01T00:00:00.000Z”,
“Signature”: “EXAMPLE”,
“SigningCertUrl”: “EXAMPLE”,
“MessageId”: “95df01b4-

元記事を表示

AWS Lambda の alias と $LATEST をそろそろ理解する

Lambda の function versionについて、流石にそろそろ理解する。

## Function version のまとめ

– `$LATEST`
– version 4
– version 3
– version 2 <- alias `dev` とか - version 1 ここで、`$LATEST`をpublishすると、、、 - `$LATEST` (現在 versinon5 との差分はなし) - version 5 - version 4 - version 3 - version 2 <- alias `dev` は変更なし - version 1 🌟🌟🌟 **`$LATEST` は aliasではない!** なお、Lambdaをfunction versionを指定せずに呼び出すと、`$LATEST`が呼び出される。 ## Provisoined concurrency について alias (e.g. `dev`)の指定は可能。 ![image.png](https://qiita-image-store.s3.ap-northeast-

元記事を表示

Lambdaを使ってs3のzipファイルを解凍してみた話(更新中)

サーバー上のアクセルログを毎日zip化してs3に投げてます。(アクセスログ以外、いくつ他のファイルも同じzipファイルに保存されます。)
普段このアクセルログを使わないので、それでも問題ないですが、3月一度このアクセルログに対して履歴分析を行います。
zip化されたので、直接分析できないです。毎回s3からzipファイルをs3からダウンロードして、ローカルで解凍して、必要なファイルだけを洗い出し、またs3にアップロードします。結構時間かかりますね…

なので、今回Lambdaを使ってzipファイルの一括処理を行いました。

# アクセル権限
Lambda関数を作成時、実行ロールが聞かされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617964/cb1188c2-7b1f-a13d-a56e-82ebb25cc384.png)

プロジェクトに既に適切なロールがありますので、それを使いました。
もし、まだ使えるロールがない場合、「AWS ポリシーテンプレートから新しいロールを作成」

元記事を表示

lambda ローカルPC(Mac)で作成したNode.jsのプロジェクトファイルをzip化してアップロードする方法

## 概要

ローカルPCで作成したランタイムNode.jsのプロジェクトファイルをzip化し、lambdaの処理に反映する方法を簡単にまとめる。

## 前提

ローカルPCでnpmコマンドが実行できること。
筆者はローカルPCのNode.jsのバージョン管理はVoltaを使用しており、Volta導入段階でnpmコマンドは実行できるようになった。
また、ランタイムはNode.js 20を使う。

## 方法

1. 任意の場所にプロジェクトファイルを格納するディレクトリを作成する。

“`
mkdir notice_slack_function
cd notice_slack_function
“`

1. 下記を実行してローカルのNode.jsのバージョンを20系にする。

“`
node -v
volta install node@20
node -v
volta list
“`

1. 下記を実行してNode.jsのプロジェクトを初期化する。(`-y`オプションは初期化時に問われる質問にデフ

元記事を表示

OTHERカテゴリの最新記事