Lambda関連のことを調べてみた2023年01月22日

Lambda関連のことを調べてみた2023年01月22日
目次

APIGateway + Lambda + DynamoDB を利用したサーバレス構築ハンズオン

## はじめに
普段DynamoDBをあまり使用しないので、CFnの練習がてら構築していきたいと思います。
[前回のブログ](https://cloud5.jp/lambda-dynamodb-serverless/)では、CLIからDynamoDBに値を渡していましたが、いっそのことフロント画面から送り保存すれば、より学習が捗るかと思いまして着手してみました。

といってもフロント画面などさっぱりなので、前回に引き続き学習教本として、[AWS Lambda実践ガイド 第2版 著:大澤文孝](https://www.amazon.co.jp/AWS-Lambda%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E7%AC%AC2%E7%89%88-impress-gear/dp/4295013307/ref=asc_df_4295013307/?tag=jpgo-22&linkCode=df0&hvadid=553954433678&hvpos=&hvnetw=g&hvrand=2164190274868650654&hvpone=&hvp

元記事を表示

GPT-3.5 × AWS Lambda × Amazon DynamoDB × Amazon API Gatewayを使ったSlackのチャットボットをPythonで実装する

## 概要

Slack上でGPT-3.5を使用することができるBotを実装しました。GPT-3.5は今話題のChat GPTの基となるプロダクトであり、APIを用いて使用することができます。また、APIを使用すればファインチューニングが可能となるため、その強みを活かしたBotを実装しました。([ファインチューニング](https://en.wikipedia.org/wiki/Fine-tuning)とは意図した出力となるように、既存のモデルに追加で学習させ、モデルのパラメータを調整するプロセスのことです。)
![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611951/01c12f89-7dfb-f6c4-4949-c557335bcfcc.gif)

## 設計

全体の設計は以下の画像の通りです。
![スクリーンショット 2023-01-21 18.31.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

ChatGPT の GPT-3 API を使って Slack bot を作ってみた

# 背景
ChatGPT を皆さんは既に活用しているでしょうか。
ChatGPT が利用するAPIと一般公開されている GPT-3 API は異なるものですが、兎に角性能が高いので皆さんにも使って頂きたいという思いで SlackApp で使えるようにしてみました。

# 概要

## 目指すアーキテクチャ
![](https://storage.googleapis.com/zenn-user-upload/795b553f01ad-20230121.png)
⇒ 流れは数字の通りで、登場人物としては以下の4つです。

## Slack(SlackApp)
SlackApp は Event Subscriptions により bot へのメンションイベントをフックして Lambda にコメントを送信します。

## Lambda
Slack コメントを受け取り、最初に GPT-3 API にそのままコメントを送信、そのレスポンスを SlackAPI に送信します。

## OpenAI(GPT-3)
Lambda からコメントを受信し、GPT-3 のエンジンが回答を返します。

##

元記事を表示

C#でラムダ式を理解する

# 1. はじめに
* 見よう見まねで書いているラムダ式を最初から理解したい
* => (ラムダ演算子:ゴーズ・トゥー)の意味を理解したい

# 2. 開発環境
* Visual Studio 2022
* .NET6
* Windows10

# 3. ラムダ式を理解する前に
## 3.1. ラムダ式なし
* この式を徐々にラムダ式に変えていく
“`C#:
var values = new string[] { “A”, “BB”, “CCC”, “DDDDD”, “EEEEE” };

var result = new List();
foreach (var val in values)
{
if (val.Length >= 3)
{
result.Add(val)
}
}

Console.WriteLine(string.Join(“,”, result);
“`

## 3.2. ラムダ式なし:共通関数
* 共通関数を作成する
“`C#:
var result = GetValues(values);
Console.WriteLine(

元記事を表示

DynamoDBのテーブルのレコード数をカウントし、CloudWatchでメトリクス表示する

2023年1月現在、DynamoDBのレコード数を確認する
CloudWatchメトリクスがないためこの記事を投稿しました。

# 全体の流れ
![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1046178/99f54a83-933d-7ebb-1bd0-0c2ef9e88ca2.png)

# 構築するリソース

・DynamoDB
適当のもの
・Lambda
ランタイム: Python3.9
・EventBridge
1分ごとにLambdaをトリガーするスケジュール
・IAMロール/IAMポリシー
Lambda実行ロールとEventBridgeがLambdaを呼び出すロール


# 0. まずはじめに
手順1以降のコピー&ペーストを行いやすいように、AWSアカウントIDを変数に割り当てる

“`shell:CLI
ex

元記事を表示

LambdaでDataSyncのタスクの実行を自動化させる

# 概要
AWS DataSyncで作成したタスクをコンソール上ではなく、イベント駆動型でAmazon S3からAmazon EFSにデータ転送を行います。

具体的には下記の流れを想定しています。

1. Amazon S3にファイルをアップロードします。

2. それがトリガーとなってAWS LambdaがAWS DataSyncを実行します。

3. AWS DataSyncでアップロードされたファイルをAmazon EFSに同期します。

4. Amazon EC2上でマウントされたEFSファイルシステム内を確認します。

![datatranfer.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429912/1af07d1c-190b-4cb3-9044-ba69cc08ea83.png)

# 注意事項
* AWSサービスに知見のある方を対象にしていますが、そうでもない方にも試して頂けると嬉しいです!
* 一つのリージョンでリソースを構築します。今回は東京リージョンで作成しま

元記事を表示

Lambda→SNS→Chatbot→Slackへの通知がうまくいかない

## はじめに
Lambdaで取得した内容をSlackへ通知させようとしたときの話です。
以前、CloudWatchアラームをSlackへ通知させるために「SNS→Chatbot→Slack」の構成で実装した経験があったため、今回もその構成を使用したのですが、Slackへ通知されない、エラーも出ない、という状況に陥りました。

## 原因
原因調査のために色々と調べていたところ、こちらの記事を発見しました。

* [Amazon SNS から AWS Chatbot を経由した通知がうまくいかない原因と対処方法](https://dev.classmethod.jp/articles/tsnote-support-chatbot-launch-001/)

Chatbotは、[ドキュメント](https://docs.aws.amazon.com/chatbot/latest/adminguide/related-services.html)に記載しているサービスからの通知のみサポートしているとのことで、Lambdaがそのサービスの中にないことが原因と判断しました。

## 対処方法

元記事を表示

分散していたLambda関数をECS Task (Fargate) に移行する Tips (編集中)

Step Functionで動かしていた複数のLambda関数を一つのECS Task(Fargate)に移行した時のメモ.
Lambda関数を使った実装はわかりやすいので今回は説明をパス.
主にECSにおけるタスクとサービスの違いや, タスク定義やランタイム環境でのつまづきポイント, AWS上での権限周りについてのメモ.

##
## 実装したもの
GithubAPIをたたいてIssueのラベル分布の割合をmatplotlibで可視化した後にS3上に保存していくコンテナ(ECS Task)
### Fargateで動かすコンテナイメージのDockerfile
“`Dockerfile
FROM python:3.9.0

RUN set -xe && \
pip install matplotlib \
boto3 \
PyGithub \
# matplotlibで日本語を使うためのライブラリ,
japanize-matplotlib &

元記事を表示

Goを使ってDynamoDBに一括書き込み

aws-sdk-goを使ってDynamoDBを操作するメモです。
こちらの[リンク](https://docs.aws.amazon.com/ja_jp/code-library/latest/ug/go_2_dynamodb_code_examples.html)を見ながら基本的なCRUDは一通りできたのですが、一括処理はうまくできませんでした。
一括書き込みの箇所についてデモを作成しようと思います。

### 環境
`go version 1.17.2`

`aws-sdk-go v1.44.180`

### 前提
DynamoDBにユーザ情報を一括登録する想定です。
ユーザ情報はHTTPリクエストボディから受け取ります。
Lambda上で受け取ったデータを構造体に変換し、DynamoDBに書き込みます。

### 構造体を定義
ユーザ情報を表現する構造体を定義します。

“`go:main.go
type User struct {
ID string `json:”id”`
Name string `json:”name”`
}
“`

### リクエストボディか

元記事を表示

ガロア群を計算するアプリケーション

# 初めに?

SageMath を使ってガロア群を計算するアプリケーションを作りました。?

– SageMath とは

https://www.sagemath.org/

– リポジトリはこちら

https://github.com/oiz-y/sage-lambda-container-app

# URL?

### https://www.galoisapp.com/

– 例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/619ae679-2bf5-745e-84dc-034c6de5659d.png)

# 開発?

バックエンドは AWS Lambda というサーバーレスサービスを使っています。

– AWS Lambda とは

https://aws.amazon.com/jp/lambda/

– システム構成図はこちら

![image.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

【AWS】API Gateway+Lambdaの構成にX-Rayを有効化

# はじめに
DVA試験対策でAPI Gateway+Lambda構成にX-Rayを有効化して挙動を確認しました。
本記事では、この構成にX-Rayを有効化する方法を記載します。

# X-Rayとは
API GatewayやLambda等、各サービスの処理時間を記録するサービス
 処理時間をコンソール上で可視化
 どの処理でボトルネックが発生しているかを特定できる
 Lambdaでは、X-Ray SDKを使用することで、Lambda内のAWSサービスへのリクエスト処理時間も記録

# 構成

API Gateway+Lambda+DynamoDBの構成です。
Lambdaでは、DynamoDBテーブルにクエリし、返ってきたデータを返します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485934/8f6df9f8-3165-8462-8c46-087649d37b8e.png)

・使用言語
Python(Lambdaでは3.9をランタイム環境として使用)

・開発環境
 OS

元記事を表示

AWS CodeBuildを使ってSPAのフロント側を強制リロードする

# やりたいこと
– フロントエンド側をデプロイした後に、画面を開き続けてるユーザを強制的にリロードさせたい
– バージョン管理はできるだけ自動化したい

# 作ったもの
1. AWS CodeBuildのbuldspec.yml
– 自動でバージョンを採番する
– バージョンをビルドしたモジュールに埋め込む
– 最新のバージョン情報をAWS S3にファイルとして保存する
1. バージョンを比較するAWS Lambda
1. 強制リロードするフロントエンド

[![Image from Gyazo](https://i.gyazo.com/302304d16e665505f60ea5a381b865db.png)](https://gyazo.com/302304d16e665505f60ea5a381b865db)

# AWS CodeBuildのbuldspec.yml
`${CODEBUILD_RESOLVED_SOURCE_VERSION}`でCodeBuildが把握しているソースのバージョンを取得できます。([詳細](https://docs.aws

元記事を表示

AWS Lambdaを使って特定ログを通知する

# Index
1. [挨拶&背景の話](#1-挨拶–背景の話)
1. [構成](#2-構成)
1. [実装](#3-実装)
1. [感想](#4-感想)

# 1. 挨拶 & 背景の話
こんちには、アプリケーションエンジニアで働いてます。キムでございます。
この前、運用してるアプリケーション内で発生するとあるエラーを検知する処理を入れたことがあります。
そこまで素晴らしい構成ではないが、この構成を作るときに、なかなか私と似てる状況の例文がなくてここに少しでも似てる悩みがある方に役に立てれば…と思って記録して残します。

# 2. 構成
#### 前提条件
– Cloudwatch Logsを使う
– FILTER機能はすでに別処理で動いてる
– 必ずリアルタイムでキャッチアップする必要はない
– 1日1回のアラームぐらいでも構わない

要するに、Filterがすでに他のもので機能してるので、追加でなにかしたくて今回の構成を作りました。
正直Filterをもう少し汎用的に改善して運用することもいい案になったかもしれませんが、このような使い買ってもどうかなと思います。

![i

元記事を表示

AWSで実現した不動産新着物件情報のサーバレス巡回通知システム

# 不動産新着物件情報のサーバレス巡回通知システム

![名称未設定.drawio (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042708/6e32da1e-6d82-777c-646a-f8cb90416f03.png)

[掲載元](https://github.com/PGtanuki/reproject)

AWS各サービスを連携させ、SUUMOの検索結果を巡回して新着物件情報を通知します。
https://suumo.jp/
※requestsを用いたクローリングは直接的に利用規約違反にはなりませんが、負荷をかけることは禁止されています。どうやら新着物件情報は(SUUMOの場合は)1日に何度も頻繁には更新されないので、1時間以上に1回か、朝昼晩くらいの感じにしましょう。AWS無料枠の範囲に抑える観点からもそのほうが適しています。

## 本システムを利用するメリット
+ 不動産サイト各社にはメール通知サービスはあるが、同一物件が通知されない保証はないのと、何社もメールを登録する個

元記事を表示

Reactでaxiosを使用してAPI Gateway連携済みのLambda(Python)からOpenWeatherMap APIをFetchする

## 概要
タイトル長いですが、タイトル通りのこと実現するための手順を記載します。
それぞれの技術の深掘りはしません。
これを経ることで、最終的に東京の天気を開発者ツールのコンソールログで出力させることができます。

## 目次
– 全体の構成
– OpenWeatherMapでAPIキーを発行する
– AWS Lambda(Python)でOpenWeatherMap APIをたたく
– Amazon API GatewayにLambdaを連携させてAPIをデプロイする
– ReactでAPI通信を可能にするライブラリ(axios)を使ってデプロイしたAPIをたたく(現在の東京の天気を出力)

## 全体の構成
システムの全体構成は以下のようになっています。
※この構成を組んで何度かAPIを叩くくらいならAWSのコストは発生しない想定です
![lambda_api.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/754596/15968fa8-b376-8c59-36bf-a5294a846160.pn

元記事を表示

Lambda + DynamoDB を利用したサーバレス構築ハンズオン

## はじめに
普段DynamoDBをあまり使用しないので、CFnの練習がてら構築していきたいと思います。

学習に利用した教本は、[AWS Lambda実践ガイド 第2版 (impress top gear) 著:大澤文孝](https://www.amazon.co.jp/AWS-Lambda%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E7%AC%AC2%E7%89%88-impress-gear/dp/4295013307/ref=asc_df_4295013307/?tag=jpgo-22&linkCode=df0&hvadid=553954433678&hvpos=&hvnetw=g&hvrand=2164190274868650654&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009299&hvtargid=pla-1599229625688&psc=1&th=1&psc=1)
を利用しています。
GUI及び、SAMによる構築はありましたが、CF

元記事を表示

SageMathコンテナをLambdaで実行する

# 初めに

[SageMath](https://www.sagemath.org/) の [Docker イメージ](https://hub.docker.com/r/sagemath/sagemath)を [AWS Lambda](https://aws.amazon.com/jp/lambda/)で実行する方法を書きます。

## 課題

記載した手順で一応コンテナ実行はできます。しかし Lambda 関数自体の実行はエラー終了します。解決方法についてはまだわかっていません。

# 手順

## 1) Dockerfile、sage スクリプトを作成する

### 1.1) Dockerfile、sage スクリプトを作成する

ディレクトリ構成は以下のようにします。

“`
/home/ec2-user/sage-demo
|—Dockerfile
|—run.sh
|—hello.sage
“`

以下 3 つのファイルを作成します。

“`docker:

元記事を表示

boto3 APIで実装するAssumeRole(Python)

## AssumeRoleとは
現在のIAMの権限から、異なるIAMロールへ権限委譲するときに利用するAWS API名。
本記事では、Lambdaに付与しているIAMロールからAssumeRole先のIAMロールへ権限委譲するための実装を後述。
![スクリーンショット 2023-01-13 11.04.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263017/3ca07396-fb58-9a97-f3dd-d3dcb2e38fad.png)
## IAMロールの構築
Lambdaに付与するIAMロールを作成
![スクリーンショット 2023-01-13 11.06.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263017/659edbd3-e797-91a7-a5eb-ab4b8420069d.png)

AssumeRole先のIAMロールを作成(添付画像の信頼関係の設定必須!)
![スクリーンショット

元記事を表示

Private環境でパスワード認証(SecretManager + Lambda)のTransfer Familyを使ってEFSにファイルをアップロードしてみた(FTP)

# 概要
Private環境でパスワード認証のTransfer Familyを使ってEFSにファイルをアップロードしたいと思い、色々ぐぐって調べてみました。

その結果、以下のような記事がクラメソさんから上がっていて非常に助かったんですが、残念ながら記事ではPrivate環境用ではなかったので、Private環境用に直した流れを記載します。
[参考にしたクラメソさんの記事](https://dev.classmethod.jp/articles/upload-files-directly-to-efs-via-sftp-using-transferfamily-for-vpc-internet-key-password-authentication/)

# 構成
構成は以下の通りです。PrivateなEC2からVPCEndpoint経由でEFSにファイルをアップロードします。Transfer Familyはパスワード認証なので、ユーザ名やパスワードをSecrets Managerに持たせて、Lambdaで認証します。
![名称未設定ファイル-ページ3.drawio.png](http

元記事を表示

AWS SDK V3 のSNS(Simple Notification Service)で、いくつか動作確認した話(AWS SDK V2 → V3 移行Tips)

# はじめに

https://qiita.com/Syoji_Yonemoto/items/f96a4d10b05715e95d1c

引き続いて、今度は、SNS(Simple Notification Service)についても確認しました。
と言っても、それ程、確認したメソッドは多くありません。

# 結論
SNS(Simple Notification Service)に関しては、私が普段使うメソッド群については、問題ありませんでした。
やはり、Firehoseだけが罠だったのでしょうか、、、

# V2 と同じ使い方で問題なく動作確認できたメソッド

+ subscribe
+ publish

# 余談
subscribeが、「何故あるのか?」というネタ話。その昔、SNS(Simple Notification Service)にLambdaをsubscribeするのに管理コンソールからは、「一覧に表示された100件の中からしか選択できない。」というイケてないUIだった時代があって、LambdaからARNを指定して、subscribeを追加するという運用をしていた時期が

元記事を表示

OTHERカテゴリの最新記事