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

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

[Django REST Framework] Lambdaで定期的に実行するバッチ削除処理APIの作成方法を見てみよう!

# 概要
Lambdaで定期的に実行するバッチ削除処理APIの作成方法
# 目的
掲題の方法を説明する

# 使用技術

“`application/pyproject.toml
python = “^3.11.2”
Django = “^4.2.7”
djangorestframework = “^3.14.0”
pytest = “^7.4.3”
pytest-django = “^4.7.0”
“`

# 早速コードを見ていきましょう!
今回の削除する対象はSMS送信履歴とします

“`application/project/serializers.py
from rest_framework import serializers

class DeleteSmsSendHistorySerializer(serializers.Serializer):
“””SMS送信履歴削除用のシリアライザ”””

token = serializers.CharField(max_length=64)

“`

“`application/project/vie

元記事を表示

AWS SAM: 役割と機能をざっくりまとめてみた

こんにちは!Xyeerです
今日は、SAMの役割と機能について説明します。

## 経緯
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3749163/d52c05cc-4442-a7af-270d-dea05d3673fc.png)

現在、上記のようなシステムを使っています。
Lambdaには、[Amazon Elastic Container Registry](https://aws.amazon.com/jp/ecr/)経由でアップロードしています。

**問題点**
・Lambdaにアップロードするまで、システムが問題なく動くかわからない。
・何度もソースコード修正するのに、毎回アップロードして確認するのが手間である。
### →ローカル環境で、Lambdaを使えるようにしたい

そんな思いで色々と調べていたら、サーバレスアプリケーションを簡単に定義、デプロイ、管理できるフレームワークであるSAMに出会いました。

## そもそも AWS SAMって何?
イベント駆動型のサー

元記事を表示

【AWS学習記録5回目】Amazon CloudFrontおよびAWS WAFを用いたアプリを構築してみた

## 概要

https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-CF_WAF-2022-reg-event.html?trk=aws_introduction_page

をもとにAmazon CloudFrontおよびAWS WAFを用いた翻訳アプリを構築してみました
※ハンズオンの内容と全て一致していません

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3747730/72b371b6-1221-f56d-c08b-0e92e5e07328.png)

## CloudFormation
米国東部 (バージニア北部)リージョンに作成
“`waf.yml
AWSTemplateFormatVersion: 2010-09-09
Resources:
#======================
# WebACL
#======================
WebACL:

元記事を表示

AWS Lambdaの実装・運用で知っておきたかったこと

# 目的

AWS Labmdaの本格利用を検討して、調査・検証を行ったので、知見をまとめる。

書いてあること

– 運用関連のこと
– コードの実装関連のこと
– cost関連のこと

# 管理

AWS Lambaの運用周りの私見をまとめる。

コードで管理する前から運用してるものがあるので、それらも管理対象としたければ、
aws cli使うか、スクリプト書いて、自前でCICD組むか、lambrollを使っちゃうのが良さそう。

## AWS SAM

公式ではAWSSAMを使うことを推奨している模様。
https://github.com/aws/serverless-application-model

CloudFormationを利用するので、設定ファイルの書き方が独特で、調べにくいので、学習コストが高い。
既に運用済みのLambdaがあった場合、それをコードで管理できるようにする(terraform import的な)ことができなさそう。

テストコードはない

https://docs.aws.amazon.com/ja_jp/serverless-applica

元記事を表示

【2024年春Ver.】AWS Lambda Layerの作成方法をわかりやすく解説【Python3.12】

1年ぶりにAWS Lambdaでやってみたいことができて、新しいライブラリを入れるためにLayerを作ろうと[自分の過去記事](https://qiita.com/__DASHi__/items/268062f0dba0e93170f2)見ながらAWS Cloud9を久しぶりに開いてみたら、ちょいちょい変わっているところがあって「まあAWSだもんね、そうだよね」と勝手に納得していました。

この記事は、そんなAWS Lambdaを久しぶりに触った私が将来読んでも引っかからずに作業できるよう、AWS Lambda Layerを簡単に作成する方法を解説する備忘録です。

## 1. Lambda Layerとは

まずは、Lambda Layer(”Lambda”はラムダ、”Layer”はレイヤーと読みます)とは何?という話から。

**AWS公式サイトより**

> Lambda レイヤーは、補助的なコードやデータを含む .zip ファイルアーカイブです。レイヤーには通常、ライブラリの依存関係、カスタムランタイム、または設定ファイルが含まれています。(出典:[https://docs.a

元記事を表示

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/)を作成します。複数人での管理を前提とするならメールアドレスで登録しておきましょう。

  • OTHERカテゴリの最新記事