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

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

【AWS】Lambdaで登録した関数をREST APIで呼び出す方法

# Lambdaに関数を登録する
1.「関数の作成」ボタンを押下する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639599/7f573744-c384-6ad4-5b4d-a3a2ece70b0c.png)
2.関数を作成する(※本稿では、関数名とランタイム以外はデフォルトで設定する)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639599/fa2efaa8-296c-59b1-4e9c-cab9f2fa93f9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639599/44223c68-7d65-8721-9d44-5f9e24fbe0e3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

【AWS】EC2経由でパトライトとの連携について②

【AWS】EC2経由でパトライトとの連携について①の続きです。
###### ■Lambda関数
:::note warn
SSM RunCommand実行が必要ですので、「AmazonSSMFullAccess」ポリシーのアタッチが必要。
@aws-sdk/client-ssm、mailparserのnode.jsライブラリはLambdaレイヤーに事前導入済み。
:::
“`ruby:qiita.rb

import { SendCommandCommand } from “@aws-sdk/client-ssm”;
import { ssmClient } from “./ssmClient.mjs”;
import { simpleParser } from “mailparser”;

export const handler = async (event) => {

console.log(“request:”, JSON.stringify(event, undefined, 2));
let res = “0”
l

元記事を表示

グラフ画像を含むPDFをLambdaで動的に生成する

## はじめに

以前も[こちらの記事](https://qiita.com/taisuke-j/items/047bebb3d85b48e5fddb)でTypescript(サーバーサイド)を使ったPDFの生成に関して書いたのですが、今回はグラフ画像を埋め込んだPDFを動的に生成するエンドポイントを実装した際のメモです。「グラフ画像をサーバーサイドで動的に作りたい」、というだけの場合も役に立つかもしれません。

## PDF生成までの流れ

元々は[chartjs-node-canvas](https://www.npmjs.com/package/chartjs-node-canvas)を使ってのグラフ画像の生成を考えていたのですが、node v18で動かず、代わりに[Puppeteer](https://pptr.dev/)でheadles chromeを起動しスクリーンショットを撮る形にしました。ブラウザでのグラフ描画には[echarts](https://echarts.apache.org/en/index.html)を使用しました。以下、生成までの流れとなります。

1.

元記事を表示

HEIC(HEIF)画像をJPEGに一括変換する

# はじめに
 iOS(11以降)では写真を撮影したときに、特に設定をしていなければHEIFと呼ばれる方式で画像を保存します。拡張子はHEICです。この方式は高画質かつファイルサイズが小さいので便利そうなのですが、Apple系のOS以外ではまだサポートが充実していません。今回はHEIC画像を一括(バッチ)でJPEGに変換する方法をいくつか試してみます。

# Windows版ImageMagickを使う
 ImageMagickは様々なフォーマットに対応したツールで、最近HEICを読み込めるようになりました。Windowsバッチで次のように書くと、batファイルを設置した場所と同じ階層のHEICファイルを全てJEPGに変換できます。PATHを通すことができない場合はImageMagickの場所をフルパスで書くことで実行できます。

“`bat
for %%f in (*.HEIC) do (
start convert.exe “%%~nf”.HEIC “%%~nf”.JPEG
)
“`
この例はマルチプロセスで、処理するファイル数と同じ数のプロセスが実行されま

元記事を表示

Step Functionsを使ってみた

# Step Functions使ってみた
仕事でStep Functionsを利用することになり、既に別サービスが稼働しているため私用パソコン・個人AWSアカウントを用いて動作の確認をしてみました。

## ソースコード一式
私のGitHubの下記リポジトリに保存しております。
設定や事前準備は`src/README.md`を確認してください。
(AWS認証情報などは消しております)
[aws-step_functions](https://github.com/k-genki0913/aws-step_functions)

作成したStep Functionsのワークフローは以下になります。

### Step Functionsに関して調べたこと
※全体のソースコードはリポジトリを見て下さい。

#### ▪️sam te

元記事を表示

【AWS】Lambdaで「StartQuery へのリクエスト中にエラーが発生しました」と表示された場合

# 概要

AWS LambdaをCloudformationで作成した際、
「StartQuery へのリクエスト中にエラーが発生しました」
というエラーに遭遇しました。

原因と解決法を紹介します。

# エラー概要

以下でCF実行。

“`yaml
LambdaRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: ‘2012-10-17’
Statement:

Effect: Allow
Principal:
Service:
– sns.amazonaws.com
– lambda.amazonaws.com
Action:
– sts:AssumeRole
Path: “/”
R

元記事を表示

ローカルのAWS Lambda開発環境を整える(hot reload)

ローカルでLambdaの開発をやるために環境を整備したのでやったことを残しておきます。

zenn にも全く同じ内容を書いています。

https://zenn.dev/imishinist/articles/8ff24429f0eb41

今回作成したサンプルの全体コードはこちらのリポジトリです。

https://github.com/imishinist/lambda-sample

## できること
1. ローカルに立ち上げたDockerでAWS Lambdaを動かす
2. 手元からcurlでLambdaを呼び出す
3. ビルド時に自動でLambdaを更新する(hot-reload)

### 動かし方

Goのコード(Lambdaのハンドラ)をビルドしたいときは以下の `make` を実行する。

“`bash
make build-lambda
“`

Lambdaを立ち上げたいときは `docker-compose` で起動する。

“`bash
docker compose up -d –build
“`

## 仕組み

### AWS Lambda を

元記事を表示

S3書き込みするLambda関数のDockerイメージを作成しEventBridgeで定刻実行させる「サーバレスバッチ」をTerraformで自動構築する

忙しくてなかなか時間取れない( ; ; )

掲題のようなニーズってよくありそうなので公開しておきます。

# 概要

https://github.com/yagrush/serverless-scheduled-batch-by-terraform

terraformで以下を自動構築するための一式。

* tfstate管理をS3, tfstate_lock管理をDynamoDBに任せる(のに必要な環境を作成する)
* S3バケットを作る(こちらは業務処理用途のバケット)
* ECRにlambdaのdockerイメージを登録する
* S3にオブジェクトを書き込むlambda関数をdockerイメージから作成する
* EventBridgeで毎分lambda関数を実行するようスケジューリングする

ちなみにlambda関数の中身は `lambda/foo` 以下にpythonプログラム一式があります。
そちらをいじる場合は `lambda/foo` をワークディレクトリとしてVSCodeなどで開いて作業して下さい。

# 自分が試した環境(&必要なソフトウェア、設定)
* M2,

元記事を表示

localstackについて理解する(lambda版)

# ローカルスタックとは
localstcakとは、AWSのクラウドサービスをローカル環境でエミュレートするためのツールです。

例えば,AWSを使用したサービスを開発している際に,AWSを使用したapiなどのテストを行いたい時があります.その時に,実際にAWSのサービスを使用するとコストがかかってしまうため,ローカル環境でAWSのサービスをエミュレートすることで,コストを抑えることができます.

:::note info
mockとやっていることは同じなので,コスト削減以外にもテストを行う際は使うと便利です!!
:::

# ローカルスタックの構成
ローカルスタックは,数多くのAWSサービスをエミュレートすることができます.
今回はlambdaに関してやっていこうと思います.

:::note info
s3のみを使う場合ではminioを使う方が便利かも知れません.
:::

まずはこのドキュメントを参考にして,作っていきます.
環境はdockerを使って構築します.

https://docs.localstack.cloud/user-guide/aws/lambda/

#

元記事を表示

CloudFormationとPyplateを使ってSecurityGroupのIngressに指定したIPアドレスを登録しよう!

## 概要
CloudFormationマクロの一つであるPyplateを使うことでCloudFormationテンプレート(yaml)内にPythonのコードを実行することができます
今回はPyplateを使ってSecurityGroupのIngressに指定したIPアドレスを登録する方法を例に解説します

## 前提
– VPCを作成済み
– 今回はPythonを使用します

## Lambdaを格納するS3バケットの作成
S3内のzipファイルからLambdaを実行するためのS3バケットを作成します
S3内のファイル群は公開したくないのでPublic Accessを全てブロックします

“`lambda-archive-s3.yml
AWSTemplateFormatVersion: 2010-09-09
Description: “S3 Bucket Stack For Account Setup”

# ————————————-
# Metadata
# ———————————–

元記事を表示

S3へアップロードされたことをトリガーに実行されるLambdaをCloudFormationで構築しよう!

## 概要
今回はS3へzipファイルがアップロードされたことをトリガーにzipファイルをLambdaで解凍する時に使用するS3とLambdaをCloudFormationを使って構築していきたいと思います

## 前提
– VPCを作成済み
– 今回はLambda用のPrivate Subnetを使用するのでNATゲートウェイを構築済み

## Lambdaを格納するS3バケットの作成
S3内のzipファイルからLambdaを実行するためのS3バケットを作成します
S3内のファイル群は公開したくないのでPublic Accessを全てブロックします

“`lambda-archive-s3.yml
AWSTemplateFormatVersion: 2010-09-09
Description: “S3 Bucket Stack For Account Setup”

# ————————————-
# Metadata
# ————————————-
Metadata:
AWS::

元記事を表示

AWS LambdaをDocker化する際の注意点と学びの備忘録

## はじめに
AWS Lambdaを使ってデプロイするときに、
Dockerイメージを使って、デプロイしたいケースがありました。

すでに、動いているLambdaをLambda Dockerへ変更する際に、
つまずきポイントがあったので、備忘録として、残しておきます

## Lambdaでコンテナイメージを利用とは?

Lambdaには、通常のLambda(ソースコードのみを記述するタイプ)と
Dockerイメージを利用するパターンが存在する
※Dockerイメージは、ECRから参照し、Lambda上で実行が出来る

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3747609/161d2b17-1359-8461-61be-afac9ba916b7.png)

### なぜDockerイメージを使うのか?
通常のLambdaとLambda Dockerには、仕様の一部に違う部分が存在している

今回、Lambda Dockerを利用したいと考えたのは、
通常のLambdaよりも、大き

元記事を表示

Nuxt3アプリをLambdaにデプロイする方法

– nuxt v3.11
– ServerlessFramework v3.38.0

## はじめに
Nuxt3で作成したアプリは比較的簡単にLambdaにデプロイすることができます。
ここではデプロイする方法の一例を紹介します。

## Nuxt3 ビルド設定

`nuxt.config.ts`にAWS Lambda用のビルド設定を追加します。

“`typescript
export default defineNuxtConfig({
// …
nitro: {
preset: ‘aws-lambda’,
serveStatic: true,
}
})
“`

静的ファイルをS3などに配置する場合は`serveStatic`を`false`にします。

## Serverless Framework
デプロイにはServerlessFrameworkを使用します。

### インストール
“` shell
npm install -g serverless
“`

### AWS IAM ユーザーを設定
serverlessがAWSにアク

元記事を表示

【aws】lambda layerを使ってlambdaにモジュールをインポートする

## はじめに
AWS Lambdaではawsが提供しているもの以外のライブラリを使いたい場合、事前にライブラリをアップロードする必要があります。
(私はそれを知らずに`luxon is not defined`エラーを出しました😅)
今回はその方法を記録したいと思います。

## 事前準備
– npmのインストール
– awsコマンドのインストール([こちらのAWS公式サイト](https://repost.aws/ja/knowledge-center/lambda-import-module-error-nodejs)が参考になりました。)

## layerのアップロード
以下の手順はお使いのPCのCLIで実行してください。
#### 1.nodejsフォルダーを作成
“`shell
$ mkdir nodejs
“`

#### 2.利用したいライブラリをnodejsフォルダーにインストール
“`shell
$ cd nodejs
$ npm init
$ npm install –save ライブラリ名
“`

#### 3.nodejsフォルダを圧縮
“`sh

元記事を表示

【aws】CloudWatchを用いてlambdaのエラーを確認する

## はじめに
私はaws初学者であり、現在awsのlambda, GateWay, DynamoDBを用いてAPIを開発しています。作成したAPIを叩いたとき、`{“message”: “Internal server error”} `というエラーが現れました。このメッセージだけでは、具体的なエラーの原因がわかりません。調べたところ、Lambdaで発生した実行時のエラーはCloudWatchで確認できることがわかりました。今回はその確認方法をまとめて記録します。

## CloudWatchを開く
lambdaの`モニタリング`タブから`CloudWatch ログを表示`を選択し、`CloudWatch/ロググループ/Catfeeder`にアクセスすることができます(手動でCloudWatchを開いてロググループ→Catfeederでアクセスすることもできます)

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984024/c3d85fd8-1102-ea2a-8d8c-afea817c6

元記事を表示

Excelのlambda使って3つ以上のセルの一致を確認するユーザ定義関数作った

Excel触っているとたくさん(3つ以上)のセルが一致しているかどうかを数式で書きたい場面出てこないだろうか、自分はたまにある。まあ5,6個程度ならAND関数を連結してもいいんだけど、もっと数が増えると?ググると解決策は割と簡単に出てくるんだが、どうもExcelの数式はちょっと複雑になるともう何だかよく分からなくなる。

そこでふとそう言えばlambda使ってユーザ定義関数作れないだろうかと思い作ってみた。
作り方の基本はこれもググれば出てくるので割愛。

名前の管理画面で以下のように入れる。使うのはeqの方。

| 名前 | 参照範囲 |
|:-:|:-|
| eqfn | =LAMBDA(x,y, IF(x=y, x, FALSE)) |
| eq | =LAMBDA(cellrange, REDUCE(,cellrange,eqfn) |

テスト。以下のような値が入ってる場合
| A1 | B1 | C1 |
|:-:|:-:|:-:|
| 1 | 2 | 3 |

“`
=eq(A1:C1)
-> FALSE
“`
こちらだと、
| A1 | B1 | C

元記事を表示

AWS Lambdaで、LINE Botにローディングアニメーションを表示

# ローディングアニメーション
Messaging APIに、ローディングアニメーション表示機能が追加されました。

https://developers.line.biz/ja/news/2024/04/17/loading-indicator/

メッセージを送信してから返答が来るまでの間、指定した秒数だけローディングアニメーションが表示されます。また、表示中に返答が来ると自動的に消えます。

loading_animation.gif

# 実装
既にGASで実装した記事は出ているため、今回は、AWS Lambdaで実装しました。
ローディングアニメーションの部分だけ抜き出すと下記のようになります。

UserIDは環境変数から取得しています。

“`lambda.py
# LINE Botの設定
li

元記事を表示

X-RayはpytestとFlameGraphを組み合わせると便利

## この記事を3行で

– AWS X-Rayをpytestで使うと便利
– 関数の通過や例外の発生をassertでテストできる
– X-Rayの可視化にFlameGraphを使えば、各関数の実行時間が分かりやすい

## この記事を書く理由

AWS X-Rayが便利なので、AWS環境へのデプロイの前でも使える使い方を紹介したい。

## 完成後の挙動

この記事で作成する単体テストを、Pytestで実行すると、

![execute.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233180/f3d309e4-2737-8b2a-f4b3-ff0cbd87fa3b.png)

単体テストが吐き出したX-Rayのデータをもとに、下のようなグラフがローカルのPC上に作成されます。

![flamegraph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233180/009b688e-09db-f109-40ee-b4

元記事を表示

インターホンとLINEを連携するためにFlashAirをひっぱりだしてみた

## はじめに

先日、家に私一人の時に部屋で籠って仕事をしていたところ、インターホンが鳴ったことに気づかずAmazonからの荷物を受け取り損ねてしまいました。
私の仕事部屋にはリビングで鳴っているインターホンの音が届かないため、どうにかして仕事部屋に居ながらインターホンに気づくことができないかということで今回の仕組みを作ってみました。

## 使ったもの

– FlashAir W-03
– Amazon API Gateway
– AWS Lambda
– LINE Messaging API
– LINE BOT SDK
– TypeScript

### FlashAirについて

今回の仕組みの要ともいえるデバイスで、無線LAN通信機能を搭載したSDカードというニッチな製品です。
[初代FlashAirは2012年2月にリリース](https://www.global.toshiba/jp/news/corporate/2011/09/pr0101.html)とのこと。TOSHIBA(現在のKIOXIA)からの発売でした。
残念なことに既に生産が終わっているとのことですが、こ

元記事を表示

AWSでLlama3を使えるようにする

# 1. 初めに
誰しもLlama3を使ってAWSでChatbotを作りたいなと三日に一回は思っているはず。
**Llama3**を**Groq API**経由で使えるようにしてみたので備忘録も兼ねて書く。

**Chat GPTでいいやんと思ったそこのあなた**
LLama 3はChatGPTよりも数倍早く返ってくるかつ、Llama3の400bモデルが来た時にすぐ乗り換えられるように備えておくことは大切!なので、やっておいて損はないかなと思います。

# 2. 参考にしたもの
[AWS Lambda(Python)からOpenAIのGPT4のAPIを呼び出してみた](https://qiita.com/nabata/items/903a2ebff8e44516598e)
とりあえず類似なものとして、ChatGPTをAWS Lambdaから呼び出すものを参考にした。感謝!
GroqのAPI Documentを見てもわかるが大体ChatGPT構造と同じなので、参考にしやすいかなと思った。

# 3. レイヤーの設定
まず、AWSのLambdaにgroqのパッケージを入れる必要があるため、

元記事を表示

OTHERカテゴリの最新記事