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

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

【Python】AWS SAMでLambdaの外部モジュールのバージョンを固定する

# はじめに
外部モジュールを使用するLambdaではモジュールをアップロードする必要があります。
AWS SAMを使うと簡単にソースコードとモジュールを一緒にアップロードする事が可能です。
AWS SAMである関数に久しぶりにdeployを行った時に、モジュールのバージョンを固定する必要がありました。

# やらかし先生
RDSに接続するPythonのLambdaで `pymsql`を使用しています。
RDS接続には関与しない変更を行いデプロイしたところ、RDSへの接続がエラーになりました:scream:

原因としては`pymysql`のバージョンが0.9系から1.0系に変更されていたため、同じ構文では接続が出来なくなっていました。
そのため`pymysql`のバージョンを0.9系に固定する回避策を行いました。

# モジュールのバージョン固定方法
## 結論
**requirements.txt** でバージョンを明記します

“`
例 pymysqlを0.9.3のバージョンを指定したい時
pymysql == 0.9.3
“`

## 記述方法について
上記の指定方法はAW

元記事を表示

[AWS]Lambdaに送られるIot topicのpayloadにtopic名を含める方法

# はじめに
LambdaをトリガーするIot topic ruleのtopic名を取得する必要があったので、そのやり方について調べてみました。

# やりたいこと
Iot topicへのメッセージ発行をトリガーにLambda関数を実行し、そのLambda関数のhandlerのeventに渡されるpayloadに、該当topicのtopic名を含めたい。

図で表すとこのようなイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954734/20449b6f-9d7d-a0c5-b74d-38f49e09e4e9.png)

# やり方
結論から言うと、topic ruleのクエリでtopic()関数を使うことで実現可能です。

試しにIot topic ruleを作成し、Lambdaトリガーを設定してみます。
Iot Core管理コンソールを開き、「メッセージのルーティング > ルール」をクリックします。
「ルールを作成」をクリックします。
![image.png](https

元記事を表示

AWS RDSのインスタンス追加時にクラスターのタグを引継ぐ

# TODO
* コンソール上、急ぎリーダーを追加すると、タグ登録漏れに気付かない。
* 別途タグ未登録監視をしているが、できれば監視を減らしたい。

# 対策
* LambdaでRDSのCreateイベントを拾い、タグ登録する

# Lambda
“`python:lambda_handler Python3.9
import json
import boto3
from botocore import response

def lambda_handler(event, context):
tagkey = “project” #必須タグ
dBClusterIdentifier = event[“detail”][“responseElements”][“dBClusterIdentifier”]
dBInstanceArn = event[“detail”][“responseElements”][“dBInstanceArn”]

client = boto3.client(‘rds’)
response = client.de

元記事を表示

AWS Serverless デジタルバッジを取得する② Lambda編

[このデジタルバッジ](https://aws.amazon.com/jp/blogs/news/introducing-new-aws-serverless-digital-learning-badges/)取得のために、AWS Skill Builderの[このコース](https://explore.skillbuilder.aws/learn/lp/1585/serverless-learning-plan-japanese)を学習している記録

自分のスキルレベルは以下。
– SAAは取得
– 4年前ぐらい
– 実務利用なし
– 趣味レベルではあり

# AWS Lambda Foundations (Japanese) 日本語実写版

https://explore.skillbuilder.aws/learn/course/621/play/1727/aws-lambda-foundations-japanese;lp=1585

## アクセス許可の概要

– IAMリソースポリシー・関数ポリシー
– Lambdaにアクセスするための許

元記事を表示

【AWS】Lambda関数のトリガーを同じS3にした時にハマった話

タイトルの通りです。
エラー解消のため、調査したので備忘録となります。

結論
======
– AWS Step Functionsを使う

https://aws.amazon.com/jp/step-functions/

経緯
======
– Lambda関数のトリガーでS3バケットをしていたところ、以下のエラーが表示。
“`
Configuration is ambiguously defined.
Cannot have overlapping suffixes in two rules
if the prefixes are overlapping for the same event type.
“`
Google翻訳の結果
“`
構成の定義があいまいです。
プレフィックスが同じイベントタイプで重複している場合、
2つのルールでサフィックスを重複させることはできません。
“`
つまり、同じ条件のS3トリガーを作成することができない。
この場合、AWS StepFunctionsを使うこととなる。

対処法
======
色々調査した結果、以下の投稿者様の記事

元記事を表示

[React, API] Fetchしたdataをpropsしてuiに出力

# 概要

今回は、以下の投稿で紹介したAPIのresponceをUIに表示させたいと思います。

>タイトル:Reactでaxiosを使用してAPI Gateway連携済みのLambda(Python)からOpenWeatherMap APIをFetchする
https://qiita.com/ayumu__/items/08838b0ee231948fde40
→この投稿ではconsole.logでコンソールにしか表示できていませんでした。

# 目次
– 完成イメージ
– コード

# 完成イメージ
さっそくですが、完成後のイメージはこんな感じです。現在の東京の天気を取得します。
まずは、何もしてない状態のUIです。まだAPIを叩いてないので、”天気が表示されていません”と出ています。
![スクリーンショット 2023-01-22 17.16.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/754596/4cc6dc48-aa45-c53e-b381-a849b6f0ce16.png)

続い

元記事を表示

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無料枠の範囲に抑える観点からもそのほうが適しています。

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

元記事を表示

OTHERカテゴリの最新記事