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

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

画像生成AI Stable DiffusionをAWS Lambdaで動かす(img2img対応)

# はじめに
本記事はAWS Lambda上でStableDiffusion(img2img)を動作させることをゴールとします。
ソース一式はGitHubに置いてあるため、使い方の解説など特に必要ない方はそちらを参照してください。

https://github.com/densenkouji/stable_diffusion.openvino.lambda

:::note info
本プロジェクトは「stable_diffusion.openvino」プロジェクトを基にAWS Lambdaに移植したものです。
https://github.com/bes-dev/stable_diffusion.openvino
:::

# 実行結果
次節に示す手順を進めていただくことにより、AWS Lambda上で画像を作成することができます。
(コマンドの–function-nameにはデプロイしたLambda関数名を指定します)
“`sh:実行例
aws lambda invoke \
–function-name mySdFunction-yty7mdazmzzlywey \

元記事を表示

Selenium Wireが出力するHARファイルをAWS Lambda上で分析する(JSON/Pandas/Seaborn)

# HARファイル(JSON)を加工して分かりやすくしたい
その汎用性から言語や場面を問わずJSON形式のデータが飛び交うようになり、結果としてJSON形式を扱うことが可能なライブラリも多種多様なものが開発/公開されています。

先日Selenium Wireに関する記事を投稿しましたが、Selenium Wireの処理結果としての通信情報もJSON形式のHAR(HTTPアーカイブ)ファイルとして取得できます。
中身はHTTP(S)通信なので、その基本的な構造はリクエストとレスポンスのセットが複数個並んでいる単純なものではあるのですが、通信ログはそのままだと不要な情報も多く、一見すると圧倒されがちです。
HARの汎用的なビューアもあるとはいえ都度ビューアで内容を確認するよりも、自分の望む情報が分かっている場合は直接HARファイルを操作した方が効率的な場合もあることから、今回はAWS Lambda上でHARファイルを基にした解析っぽいことをしたいと思います。

なお、対象とするHARファイルや環境など、前回の記事を(一部)基にしています。

# 注意事項
– HARファイルには通信内容が

元記事を表示

lambda invokeがnat gateway経由で通信していた

Private VPCからLamdaをInvokeした際、Nat Gatewayを経由して通信 => NatGateway経由で通信費がかかっていた。

そらそーだ

VPC EndPoint作成することで回避可能。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-vpc-endpoints.html

とはいえ、VPC Endpointも0.014$/h掛かるのも留意点。
Subnet単位でかかるので、3subnetsへ設定すると30$/monthくらい固定で必要。

元記事を表示

1日の振り返りを簡単に楽しくできるSlack botを作ってみた(furikaeru)

## :frog: 解決したい課題
僕のチームでは有志のメンバーが、毎晩仕事が終わるときに、Slackのチームチャンネルで一日の振り返りを投稿しています。

目的は2つ。
自分の頭の整理と、チームメンバーへの共有です。

しかし、毎回フォーマットをコピペしに探しに行ったり、今日自分がやったことを思い出す作業にはまぁまぁの負荷があります。一日真剣に働いて、ウィルパワーが消耗し切っているのに、これはキツイです。それで、なかなか毎日続かない。一度サボると、やらなくなってしまう。そんな循環を繰り返しています。

それを少しでも楽にできるようにしようということで、botアプリを作りました。

アプリの名前は`furikaeru`にしました。:frog:

`今は一般公開はしていませんが、一応それも見据えてコード書いたので、ゆくゆくできたらと考えていたり、考えていなかったり。`会社のインフラ使わせてもらっているので、インフラ代が気になるところ。:money_with_wings:

## :frog: 仕様
### 実装済みのもの
#### 1. アプリをチャンネルに招待する

アプリのいないチャ

元記事を表示

俺みたいになるな!Lambda+Node.jsでDynamoDBにputItemするだけで半日溶かしたAWS SAP

## やりたいこと
ただただシンプルにLambdaでDynamoDBに書き込みたい。それだけなんです。初体験でも無い。
なのにハマって、シルバーウィークの初日の半日それで溶かしてしまいました。
AWS SAPの称号を剥奪されるかと思って誰にも相談できませんでした。

https://qiita.com/kakudaisuke/items/174ff82b558b86d041b4

ちなみに、なんでそんなことしたいかというとコレです↓ :frog:

https://qiita.com/kakudaisuke/items/18681418cebc3bee93b5

## 実装!
### DyanmoDBの設計
完了したタスク(task)を、ユーザー(user)、日付(date)ごとに登録したいです。
で、取り出す時はあるuserとdateのtaskを全て取得したい。

試行錯誤の末、保存したいアイテムはuser, unixtime, date, taskにしました。

ちなみに、user, dateはDynamoDBの予約語。予約語だけど使えちゃう。queryする時にちょい厄介だけど使

元記事を表示

AWS Lambda + Node.jsの実行環境でローカルタイムを扱いたいが、とりま日本時間JSTに甘んじる(JavaScript)

## やりたいこと
AWS Lambdaで時間を扱うのに、日本時間JSTが欲しい。(本当はローカルタイムが欲しい。)
だけど、Lambdaではローカルタイムという概念がないらしく、全てUTCになってしまう。
日本時間JSTが欲しいと思っていると、9時間ずれた値が返ってきたり、表示が`19/9/2022`となって欧米か!とツッコミたくなったり、してしまう。

ちなみに、なんでそんなことしたいかというとコレです↓ :frog:

https://qiita.com/kakudaisuke/items/18681418cebc3bee93b5

## 実装!
色々調べたが簡単に済ませたかったので、とりま+9時間してJ、日本的なフォーマットに自力でした。

“`js:index.js
let dateTime = new Date();

// JSTにする
time.setHours(dateTime.getHours() + 9);

// 2022/9/19の形にする
const year = dateTime.getFullYear();
const month = dateTim

元記事を表示

AWS LambdaにリクエストしたらNo ‘Access-Control-Allow-Origin’ header is present on the requested resourceのエラーがでた.

LambdaにAPI Gatewayを通して,リクエストしたところ
“`
Access to XMLHttpRequest at ‘<リクエストURL>‘ from origin ‘<オリジン名>‘ has been blocked by CORS policy:
No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
“`
のエラーが出ました.

CORSの設定をしていたのに,このようなエラーが出ました.
また,通信が成功するときもありました.

## 原因
Lambdaの実行時間制限が少ないことが原因でした.
以下,Lambdaのコンソール画面にあるtimeoutが実行時間制限です.
![Screenshot 2022-09-19 082333.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599663/74753c9e-c781-40b7-8b7b-360e424f2f61.png)

デフ

元記事を表示

【AWS】Lambdaコンテナイメージ利用に対する覚え書き

## はじめに

機械学習用のライブラリを利用したAPIをLambdaで構築しようとした場合など、
デプロイパッケージサイズ制限(250MB)により利用できないケースがあります。

その場合の対応方法としてコンテナイメージをLambdaで利用できるようになっていますが、
実際にLambdaコンテナイメージを使って構築/動作確認するまでに結構ハマったところがあるのでdockerfile作成からAmazon ECRへのプッシュまでを本記事にまとめます。同じくハマっているひとの参考になればと。

※リポジトリの作成等の操作はSKIPしています

***

## 環境

Windows 10 Pro (WSL2を利用)
Docker v20.10.17

## 目次

1. dockerfileを用意する(例としてPythonが動作するコンテナを作成)
2. dockerでコンテナを作成する
3. 作成したコンテナをAmazon ECRにプッシュする
4. ハマったところ

### 1. dockerfileを用意する

“`dockerfile:dockerfile
#

元記事を表示

Aurora Serverless v2のスケールアップ・スケールダウンをスケジューリングする

## Aurora Serverless v2
Aurora Serverless v2は、AWSマネージドな新しいDBインスタンスです。
Aurora Serverless v2ではインスタンスタイプではなくACU(Aurora Capacity Unit)と呼ばれる値を設定し、性能を決定します。その際、ACUの最小値と最大値を設定することができ、DBの負荷に応じてこの範囲内で自動的にスケールアップ/ダウンすることが特徴です。
詳しくは[公式リファレンス](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.how-it-works.html?#aurora-serverless-v2.how-it-works.capacity)をご確認ください。

このようにAurora Serverless v2は負荷に応じてスケールする機能がありますが、スケールアップする速度はその時点でのACUによって決まります。したがって、スパイクが予測できる場合、あらかじめACUをあ

元記事を表示

Lambda で CloudWatch Logs のログを自動で S3 にアーカイブする、をちょこっと便利にした。

AWSで各種クラウドサービスのログを、CloudWatch Logで保管することができます。CloudWatch Logではログの保管日数を指定することができます。手動であればS3へログをエクスポートすることもできます。S3も保管したデータの保管日数を指定することができます。

となると、以下のような処理を自動で実装したいもの。
・各種ログをCloudWatch Logに保管する。
・ある程度の日数が経過したら、S3にログをアーカイブする。古いログはCloudWatch Logから自動削除。
・必要なだけS3で長期保管する。必要な保管期間を過ぎたログは、S3からも自動削除。

しかし定期的に自動でS3へログをエクスポートする機能はありません。何度もググりましたが、皆さん同じ悩みをお持ちです(笑)

という事で、「CloudWatch Log」「S3」「エクスポート」「自動」といった用語でググれば、Lambdaで実装されている事例・記事が多く見つかります。本当に助かります。

# 【参考】
私がお世話になった記事です。

https://qiita.com/tamura_CD/items

元記事を表示

AWS Step Functions で簡易的なジョブ管理ステートマシンを作成してみる

AWS で簡易的なジョブ管理をしてみよう、という試みです。

# 概要

AWS 上でジョブ管理するにはどうしたら良い?という話がありましたので、自分なりに少し考えてみました。普通に考えれば、例えば以下のようになるかとおもいます。

* Cloud Watch Events、場合によっては Event Bridge を使ってジョブを起動する
* ジョブの流れは Step Functions で様々なフロー制御を組み込んで作成
* Step Functions から Lambda 関数、ECS RunTask、AWS Batch などを順次呼び出す
* ログは Cloud Watch Logs に格納
* 問題発生時には SNS から SES や Slack 連携などでアラートを発報する

ただですね、今回は以下のような制約をつけて考えてみました。

* 数人の小さなチームで、スケジュールがかなり厳しい中で開発する必要がある
* AWS に詳しいのは自分だけで、他のメンバーはこれから学ぶ必要がある

こういった状態ですと、いまから AWS を学んでもらうのは効率が悪いです。期間も短いこと

元記事を表示

LambdaでSecretsManagerからシークレット情報を取得してみた

# はじめに
Githubから流出したソースコードに認証情報が含まれていて
問題になったというセキュリティーインシデントを見かけることがあります。
ソースコード内には認証情報をベタ書きせずに扱う事が大切です。

Lambdaで認証情報を参照したい時のベストプラクティスとして
SecretsManagerから値を取得する方法があります。
ハンズオンとして行ってみたので記事に残したいと思います。

# 環境
Lambdaのランタイム:Python3.9

# SecretsManagerでシークレット情報を作成する

SecretsManagerでは目的に応じたシークレット情報の作成が可能です。
今回は汎用的に使用できるように「その他のシークレットタイプ」でユーザー名とパスワードを作成しました。

![スクリーンショット 2022-09-15 20.31.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242298/799c0ed3-2f56-be8c-a09d-8462878114e9.png)

元記事を表示

Node.jsランタイムのLambdaでNodeモジュールを使いたいときにやったこと

## はじめに
こんにちは。フリューでサーバサイド開発をしています、kitajimaです。最近CDKに入門しました。
弊チームでは先日、API Gateway + Lambdaの構成をCDKで構築し、APIを実装する機会がありました。その際Node.jsで書いたLambdaスクリプト単体をアップロードしたところ、`”Unable to import module”`が発生しました。
この記事ではその際対応したことを紹介させていただこうと思います。
同じようにNode.jsランタイムのLambdaを初めて構築してみたい方の参考になれば幸いです。

※本記事と同様の内容を弊社テックブログでも掲載しております。
https://tech.furyu.jp/lambda-node-modules/

## 環境
– AWS CDK v2
– CDK実装 TypeScript
– Lambdaランタイム Node.js 16.x
– Lambdaスクリプト実装 TypeScript

## 状況再現
そのときのインフラ構成の一部を再現したものはこちらです。Constructは`aws_lam

元記事を表示

スマートスピーカーを使って日々の健康状態を記録してみた

## はじめに
ウェアラブル端末はヘルスケア目的としても活用が可能で、利用者は睡眠や運動などのデータを連携アプリから確認して日々の健康管理ができます。

これらのデータに加えて、スマートスピーカーからも主観的な健康状態を記録し観察することで、もっと確実な健康管理ができるのではないかと考え、この仕組みを作ってみることにしました。

## 完成イメージ
決まった時刻になると、Amazon Echoが3つの質問を対話形式で行います。全ての質問に答えると、バックエンドのデータベースに回答した健康情報を登録します。
![完成イメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506008/d5d50014-4281-5d85-0f57-9d7fe04c66a1.png)

## 概要
今回紹介するAlexaスキルを作るには以下の3つの実装と設定が必要です。
本記事では、初めてAlexaスキルを作成することを想定し、事前準備として必要なアカウント登録方法から順に記載していきます。

– Alexaスキルの設定

元記事を表示

EventBridgeとLambdaを使用したバッチ処理

## 概要

EC2インスタンス1台構成で動かしていたWebアプリを、AutoScalingを用いてEC2複数台で運用にするようにしました。
今までEC2インスタンス内にcronを仕込んで、日次や月次の定時処理を行わせていましたが、インスタンスが複数台になることで、バッチ処理が重複して行われるようになりました。

#### 構成図
[![Image from Gyazo](https://i.gyazo.com/bbd624f944a3e49a0fb81971c28fc4fa.png)](https://gyazo.com/bbd624f944a3e49a0fb81971c28fc4fa)

### 対応案

対応案として、ざっくり以下の二つがありました。

#### 案1
AutoScalingしないタスクサーバーを1台用意して、バッチ処理はその子に任せる。

#### 案2
インスタンス内のcron契機でのバッチ処理はやめて、EventBridgeを利用したLambda契機でアプリにリクエストを送りバッチ処理を行う。
リクエストはELBによりインスタンス1台に振り分けられるので、

元記事を表示

[AWS Lambda Powertools Python]API GatewayレスポンスのJSONシリアライズエラーに対応する

# 概要

[AWS Lambda Powertools Python](https://awslabs.github.io/aws-lambda-powertools-python/latest/) [^1] を使うとAPI Gatewayのリソースマッピングが直感的に記述できます。
また、dictなりlistなりをreturnしておけば良い感じのJSONテキストにしてくれる等、とても便利です。

[^1]: [AWS Lambda Powertools Python](https://awslabs.github.io/aws-lambda-powertools-python/latest/)

このレスポンスをJSONに変換してくれる部分で少し困ったので、対応した内容を記録します。

# 準備

AWS Lambda Powertools をインストールします

“`
$ pip install aws-lambda-powertools
“`

# サンプルハンドラーコード

リクエスト `GET /info` に対して、`name` と `created` 要素を返すシ

元記事を表示

.NET 6とVS CodeでAWS Lambdaする

## 前提
– AWS CLI設定済み

## 環境構築

### VS Code
– C# for Visual Studio Code
C#開発環境

### dotnet系
– .NET6 SDK
公式からインストーラー落としてきて入れる。
https://dotnet.microsoft.com/ja-jp/download/visual-studio-sdks

– lambda開発用のテンプレート
“`powershell
dotnet new -i Amazon.Lambda.Templates
“`

– デバッグツール
“`powershell
dotnet tool install -g Amazon.Lambda.TestTool-6.0
“`

– デプロイツール
“`powershell
dotnet tool install -g Amazon.Lambda.Tools
“`

## やってみる

### プロジェクト作成
“`powershell
dotnet new lambda.EmptyFunction –name MyFunctio

元記事を表示

LocalStack ローカル環境でAWSを使おう

# この記事は?
AWSのエミュレーションツール[LocalStack](https://github.com/localstack/localstack)を使って仮想のAWS環境を立ち上げ、その中にLambdaとS3をデプロイして動かしたときの備忘録

https://localstack.cloud/

# LocalStackとは?
Dockerコンテナ内でAWSのエミュレートし、その環境内にデプロイしたりできるツール
無料版では利用できるAWSサービスに制限があるものの、メジャーどころは大体抑えられている

:::note info
無料版で利用できるのは[このページ](https://docs.localstack.cloud/aws/feature-coverage/#aws-feature-coverage)にあるサービスのうち`(Pro)`がついていないもの
**Lambda**, **S3**, **DynamoDB**など主要なサービスはだいたい無料で使える
:::

https://docs.localstack.cloud/aws/feature-coverag

元記事を表示

Flutter × Firebase Cloud Messaging × AWS Lambdaでリモートプッシュ通知を送りたい(2022/08)

# はじめに
初投稿です。

Flutterでアプリ制作を行っていた際にプッシュ通知機能を実装しようとして色々調べた際、様々な情報が錯綜しており、どの記事が正しいのかが分からなくなって色んなことを試した結果、大口の沼にはまり込んでしまったため、自分用の備忘録として残します。

同じ問題に直面している人の助けとなれば幸いです。

# 前提条件
リモートプッシュ通知を送る方法は様々あると思いますが、今回はプロジェクトの要件として利用していたAWS Lambda(以下Lambda)からFirebase Cloud Messaging(以下FCM)を利用してAndroid端末にプッシュ通知を送っていきます。今回は、LambdaはNode.js(TypeScript)で実装します。

iOS端末にプッシュ通知を送る際は、Appleの開発者サイトやXCodeで追加設定が必要になるのですが、今回は割愛します。

この記事では以下のことを行っている前提で説明していきます。
– AWSアカウント・Firebaseアカウント作成済み
– Flutterプロジェクト作成済み

# 事前準備
### Fir

元記事を表示

AWS Lambdaとは

# AWS Lambdaとは
AWS Lambdaは、**データやリクエストのリアルタイム処理やバックエンドの処理を、自動的に実行する仕組み**。このような処理のために専用のサーバーを準備や管理する必要がない。必要なイベントに応じて自動実行される。常駐サーバーとは異なり、プログラムの実行時のみに課金される。
**Lambda関数**と呼ばれる形式の関数を用いますが、これは新しい言語ではない。
よく知られるプログラミング言語で書いたコードをもとに「Lambdaコンソール」などを用いてグラフィカルに作成できる。使える言語は、java,C#,Python,Ruby,Node.js,Goなどで、よくある目的のためのテンプレートも揃っている。
Lambda関数は、Lambdaサービスに保存される。
何かのトリガーで、特定のAWSリソースにおいて実行される。有名な例は、S3バケットに画像が置かれると、サムネイル実行関数が呼び起こされ、サムネイル作成関数が呼び起こされ、サムネイルを自動的に作成する例。
# Lambdaの用語
Lambdaは、プログラムのコードをLambdaサービスにアップロードして

元記事を表示

OTHERカテゴリの最新記事