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

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

serverless frameworkで作ったLambda Function についてnodejs16.x以下のバージョンをnodejs18.xに上げるためのメモ書き

# 概要

AWS Lambdaのruntime `nodejs16.x` のサポートが来年6月で切れまーす!
みなさまのお手元にはこの震えるようなAWS(またはクラスメソッドさん)からのメールは届いていますか?

つまりそれは、nodejs12.x,14.xから16.xと逃げ回って遂に18.xへの対応をやらなければならないときが来ましたということです、年貢の納めどきです。

具体的にはライブラリのバージョンを上げたり、過去の互換を捨てたものは変更したり、ソースコードをなおしたりとやることはめんどくさく、作業は泥臭いものになります。

それでも先に進むというみなさま、覚悟はいいですか?

・・・では進みましょう。

# ざっくりやることのリスト

これが全てではないと思いますが、移行を主眼として必ずやらないといけないことを列挙します。

## 1. serverless.{yml|ts} の変更
runtimeを変更しました。
16から20…
これで2年+αくらいは追い回されずにすむはずです。

![image.png](https://qiita-image-store.s3.

元記事を表示

(axiosで)叩いて(corsで)弾いてボタンクリック!!

# はじめに
フロントからaxiosでバックエンドの処理を実行させたかったが、何度クリックしてもcorsエラーでふせがれてしまった

# システム構成
Lambda × serverless構成
フロントからaxiosを叩くことでバックエンドのハンドラーが実行される仕組み

# 原因と解決

“`
Provisional headers are shown
“`

開発者ツールのネットワークタブを確認すると見たことない表示が…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2889192/ae6e6428-2c22-a7aa-81db-dcebc24cb99f.png)

結論として、serverless.ymlに記載しているパス名が間違っており、Request URLが間違っていることが原因でした。

“`yml
get_hoge:
handler: get_hoge.handler.main
layers:
– Ref: PythonRequi

元記事を表示

LINEからのBedrockエージェント呼び出し①

Agents for Amazon Bedrockの振る舞いがなんとなく分かってきたのでLINEから呼び出してみます。まずは基本形として(?)LINEから自然言語で乗換検索を行えるようにします。

 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/fc1aa428-583b-34dc-b0b4-f818e3395724.png)

過去に作ったもの

元記事を表示

ハッカソン参加時の備忘録 ~ 第2回:1番お手軽なGUIであるLINEとAWS(Lambda)の連携をしてみよう ~

こんにちは。
ITエンジニアのきゅうと申します。

# 概要
さて、第2回は早速ちょっとしたアプリ開発を基に、ハッカソンで必要なIT技術に触れていきましょう。
ということで、今回はLINEのMessageAPIとAWSのLambdaを使った、オウム返しアプリを作っていきます。

何故これが最初なのか?
何度も言っておりますが、ハッカソンはとにかく時間がありません。
その中で動くものを作るとなると、UI(ユーザインタフェース)にかける時間は限りなく少なくしたい!!
だけど、UIを疎かにするとバック処理で凄いアプリを作ったとしても、見た目がショボい為、アプリ全体もショボい評価となってしまいます。

このジレンマを解消してくれる1つの手段が、LINE Bot(MessageAPI)になります。

LINE BotはLINE DeveloperとLINE Official Accountを登録することで、
簡単にLINEのMessageAPIを呼び出し、意図した処理を行って返答するBotアプリを作成することができるのです!!

# テクニカル
* Python3.11
* AWS lambd

元記事を表示

【裏技】Lambda の固定IP化にまだ NatGateway 使ってるの?

2023/12/25 … 【追記】アリ

# 背景
顔のイボやイボ痔を治療中で、年内に X のフォロワー1000人を目指している [@\_\_\_nix___](https://twitter.com/___nix___) です。

以前から大人気の Lambda ですが、APIのコンピューティング部分で使うことも一般的になっています。
例えば外部決済システムとやり取りをするような場合に決済システム側から「接続元IPを制限しているのでGWのIPをご連絡ください」と言われるケースが少なくありません。

こんな時に今までは当たり前のようにやってきたやり方、実はそれ以外にも方法があったのでご紹介したいと思います。

# 現状
はい、この構成が Lambda を固定IP化する最も有名な方法です。
Lambda を VPC 内に配置し、(お高い)NatGateway 経由でアクセスすることで接続元IPを固定にする方法です。
![](https://storage.googleapis.com/zenn-user-upload/b1c821cb2474-20231222.png)

ただ、

元記事を表示

M5StickのボタンでLINE WORKSにスタンプする

LINE WORKS Advent Calendar 2023 の記事です。

https://qiita.com/advent-calendar/2023/lineworks

今年は物理なおもちゃと組み合わせて何か作ろうと思いたち、マイ道具箱に転がっていた M5StickC PLUS 連携してみました!

## M5StickC PLUS とは?

手のりサイズでコンパクトボディなIoTデバイスです。

WiFiやBluetoothを始め、液晶ディスプレイ、赤外線、ジャイロセンサー(IMU)、マイク、スピーカーも付いています。小型バッテリーを搭載していて、USB Type-C で充電して持ち運んで使えるのが特徴です。

更に拡張端子(GPIO)を使って、追加で拡張センサーやボタン、リレー、モーター等の駆動系など夢広がリングなおもちゃです。

M5Stack UIFlow という独自の制御ブロックを組み合わせて開発できるWebアプリがあり、プログラミングに馴染みが無くても始める事ができるのも特徴です。MicroPython や Arduino で開発することもできるので本格的に組み込

元記事を表示

AWS Lambdaでpython-gnupgでPGP暗号化を実装するサンプルコード

# はじめに
PGP暗号化をLambdaで実装する際に、少しだけコードで苦戦したのでメモしておく。
あくまでもサンプルコード(参考)としてみてください。

# 使用したAWSサービス
– Lambda
– SecretsManager
– S3

# 前提
– 以下リンクの「AWS Lambdaでpython-gnupgのライブラリ実装方法」が完了していること。

https://qiita.com/komata/items/57cfd21efa1fad496d92

– ランタイムpython3.9で実装
– S3にファイルがputされたらLambdaが起動する(別途設定が必要)
– SecretsManagerにテキスト形式で鍵を登録しておく
– SecretsManagerのReginonとLambdaのRegionは同一Regionであること
– Lambdaのロールには使用するサービスが許可されていること(とりあえずフルアクセス付与)

# アーキ図
![pgp3.png](https://qiita-image-store.s3.ap-northeast-1.amazon

元記事を表示

AWS LambdaとDynamoDBを使ってWordPressの表示を切り替える方法

## AWS LambdaとDynamoDBを使ってWordPressの表示を切り替える方法

AWS Lambdaを活用して、WordPressの表示を定期的に切り替える方法を紹介します。これにより、簡単かつ効果的にバッチ処理を実行し、DynamoDBのデータに基づいてWordPressのブラウザ表示を管理できます。
例えばメンテナンス中などに切り替えるときなどに使うケースかと思います。

### 準備作業

1. **Lambda関数の作成**: AWS LambdaでPython 3を使用して、DynamoDBのデータを更新するカスタム関数を作成します。

“`python
# Lambda関数のコード例
def lambda_handler(event, context):
# DynamoDBのデータを更新するロジックを実装
# WordPressの表示を切り替える処理
pass
“`

2. **CloudWatch Eventsのルール設定**: CloudWatch Eventsを使用してLambda関数を定期的にトリガーするためのルールを設

元記事を表示

custom-resource-existing-s3 という Lambda 関数と対応例

## はじめに
– 謎の Lambda 関数 *-custom-resource-existing-s3 というのが作られていた
– 調査した内容を備忘の為記載します
– 「S3 イベント通知による Lambda 実行」の設定手順も含みます
– PowerShell による AWS CLI 操作を想定

## 調査
– 先述のとおり、作った覚えのない Lambda が存在していました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436115/7c8fb5a4-c7ff-9bac-808f-35c28a2cda7e.png)

– 画面上の「こちらをクリックしてください」のリンクを辿ると、Serverless Framework で作成したアプリケーションに含まれていました

## 原因
– Serverless Framework にて、既存 S3 の Event を設定した際に自動で作成される関数
– https://forum.serverless.com/t/funct

元記事を表示

TerraformでAWS LambdaをNode.js 20へアップグレードする方法

先日AWSから **『[アクションが必要です] AWS Lambda での Node.js 16 のサポート終了について』** というタイトルのメールを受け取ったので、早速アップグレードを試みたのですが、Terraform初心者としてハマるところが多かったので、備忘録としての投稿です。

# 前提
今回の例は、以前Terraformで構築したNode.js 16のAWS Lambdaを、Node.js 20に更新するものです。
またTerraformは当初、1.4.4を使用していました。

# LambdaのNode.js Runtimeが更新できない!
AWSからのメールにあった`2024 年 6 月 12 日までに、既存の Node.js 16 の関数を Node.js 20 にアップグレードすることをお勧めします。`の指示に従い、aws_lambda_functionのruntimeを`nodejs16.x`から`nodejs20.x`に変更し、terraformのコマンドを実行したところ…

![Upgradeエラー1.png](https://qiita-image-st

元記事を表示

EventBridge Schedulerを用いてLambdaを定期実行するCloudFormationテンプレート

# はじめに
:::note info
この記事は [ZOZO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/zozo) カレンダーVol.2の24日目の記事です。
:::

Lambdaを定期実行を行いたい場合のCloudFormationのサンプルの紹介です。
EC2の定期起動・停止のサンプル[^1]はあったのですが、Lambdaの定期実行のCloudFormationサンプルが意外となかったので紹介します。

# EventBridge Scheduler vs Event Bridge Rule
AWSの何らかのサービスを定期実行する場合、以前ではよくEvent Bridge Ruleが使われていました。
しかし、2022年11月にEventBridgeからスケジュールに特化したEventBridge Schedulerがリリースされ、こちらの機能を用いてもスケジュール実行が可能になりました。

それぞれの違いについては下記の記事が分かりやすかったです。

https://dev.classmethod

元記事を表示

aws APIGateway, lambda, sesでメール送信機能実装

# AWSを使って簡単にメール送信機能を作成しよう
メール送信機能って、自前で作るのめっちゃだるくない?
プロトコル、サーバー、セキュリティ、色々考えること多い,,,,,.
そこで、簡単に作れるAWSのやり方を書きます

## 使用するサービス
– apigateway
– lambda
– ses

## 手順
### 1. APIGatewayの設定
![スクリーンショット 2023-12-23 7.23.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712534/7a413c77-3800-4b42-c197-38bb6ee596d4.png)
REST APIを選択
![スクリーンショット 2023-12-23 7.23.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712534/7c63074d-160e-e87e-84b7-3ccd0bdc9de2.png)
新しいAPIを選択し、任意のAPI名を

元記事を表示

LambdaとSNSで日本語の通知メールを送る

# はじめに
CloudWatchLogsに転送しているログの中に特定の文字列が含まれている場合、
予め用意された日本語の件名・文言で通知メールを送信したいという要件があり、
今回はLambdaとSNSで実装した例をご紹介したいと思います。
主にメインの機能を担うLambda関数のコード(Python)解説になります。

# 構成図
![Qiita_Japanese_SNS.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740559/6898958f-0090-0085-c797-6b44783d0c20.png)

# 作成手順
必要な作業は下記の通りになります。

1. SNS設定
1-1. トピック作成
1-2. サブスクリプション作成

2. Lambda関数作成
2-1. Lambda関数用IAMロール作成
2-2. Lambda関数・コード作成

3. CloudWatch Logs サブスクリプション設定
3-1. 検出する文字列指定&検出したら起動するLam

元記事を表示

Lambda コンテナイメージを使ってSlackのグラフ貼り付けBOTを作る

この記事は[Wano Group Advent Calendar 2023](https://qiita.com/advent-calendar/2023/wano-group)の23日目の記事となります。

## はじめに

プロダクトに関わる指標を確認する際、開発部門が作成した社内ページ・BIツール・各種アナリティクスサービスを用いると思います。

ですが、チャットツール(Slack等)で指標を確認できると、より手軽で利便性も上がるかなと思ったのでAWSサービスを用いて作ってみました。

## 構成

構成は以下のようになります。

![lambda with container.drawio (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635079/afa82d46-96cc-f7c4-cb90-1b914350eff3.png)

1. AWS Lambda用のコンテナイメージをECRで用意
1. AWS LambdaでAthenaからデータ取得->グラフ作成→Slackへ通知
1.

元記事を表示

brefをCDKから利用する際、handlerとcodeに記載するパスに関するメモ

## 前提

例えば以下のようなディレクトリ構成を想定。

“`
ProjectRoot
├─CDK
└─Laravel
“`

`PhpFpmFunctionProps`の`handler`と`code`それぞれに記載するpathの関係をメモしておく。

## 結論

“`js:ProjectRoot/CDK/lib/sample.ts
new PhpFpmFunction(this, ‘***’, {
handler: ‘public/index.php’,
code: packagePhpCode(‘../Laravel’,{

}),

})
“`

## 備考

https://github.com/brefphp/constructs

`handler`のpathは基本的に変えなくていい。
`code`側で指定したディレクトリ基準で圧縮され、そこからの相対パスになる。

元記事を表示

Aurora間のデータ連携時に発生したタイムアウトエラーを検証する

## はじめに
この記事は [アイスタイル Advent Calendar 2023](https://qiita.com/advent-calendar/2023/istyle) 22日目の記事です。

こんにちは。アイスタイルでショッピングを担当しているtsuboikeと申します。

12月に入っても温かいなぁと思っていたら中旬を越えてから急に冷え込んできました。
寒いと言えば北極。北極と言えばオーロラ。オーロラと言えばAWS。
(ちょっと強引なくらいが丁度いいと思っている昭和世代のためご了承ください)

今回は新システムを構築した中で、既存のAuroraからのデータ連携において、連携数が一時的に多くなる時間帯においてエラーが頻発した事象についての対応を記します。

## システム構成
* 既存Auroraの更新をDMSで更新を察知し、新Auroraに連携する

【システム構成図】
![qiita.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3036117/a4907842-0440

元記事を表示

CloudWatchのログメッセージをまとめて取得するPythonコード

# できること

– StepFunctionsのMap処理のような、1日の中で複数回起動したAWSサービスのログをまとめて取得することができる。
– 今回は以下のドキュメントのMap処理を実行したときのtest_invoke_2のprintをlogger.infoに変えたものを取得する。
– https://qiita.com/komata/items/b25159ff9d9915c64c83
– 24時間以内のログのみが取得できる。

# 全体ソースコード

“`python
import os
import boto3
from logging import getLogger

logger = getLogger(__name__)

def lambda_handler(event, context):

logger.setLevel(os.getenv(“LOG_LEVEL”, “INFO”))
log_group_name = event[“LogGroupName”] # CloudWatchのロググループを指定する

元記事を表示

VPCネットワーク内での350秒のタイムアウトを確認してみた

# はじめに
この記事は[Optimind Advent Calendar 2023](https://qiita.com/advent-calendar/2023/optimind)の22日目の記事となります。

# 概要
最近NATゲートウェイなどを経由した(AWS Lambdaなどの)同期通信が350秒程度で通信が切断されてしまうということを知りました(詳しくは以下の記事を参考にしてください)。なので、AWS LambdaやEC2を建ててみて実際にタイムアウトするかを簡単に確認してみたいと思います。

https://aws.amazon.com/jp/blogs/news/jp-implementing-long-running-tcp-connections-within-vpc-networking/

https://repost.aws/ja/knowledge-center/lambda-vpc-timeout

## 実験
まずAWS LambdaからAWS Lambdaとの同期通信を試してみます。次に、Private Subnetの中に建てたEC2からAWS La

元記事を表示

スクショを取得し、S3にアップロード、マークダウン形式のリンクを発行するやーつ(Vue3、AWS Lambda Python 3.12)

# はじめに
[がちもとさんアドベントカレンダー](https://qiita.com/advent-calendar/2023/gachimoto3)21日目の記事です。

Qiitaは、毎月100MBまでという画像アップロード制限があります。

https://x.com/sotongshi/status/1737334533572513862?s=20

アドベントカレンダーを諦めかけたので、スクショを取得し、S3にアップロード、マークダウン形式のリンクを発行するやつを作りました。

# 開発環境
– Windows 11 PC
– Vue3
– AWS Lambda(Python 3.12)

# 導入

1.画像をS3にアップロードするAPI(Lambda関数)を作成

~~~lambda_function.py
import json
import boto3
import base64
import uuid
from datetime import datetime
import os

# 環境変数からAPIキーを取得
api_key = os.environ.get

元記事を表示

今更ながらLocalStackを導入してみた

# はじめに
初めまして、[K.S.ロジャース](https://www.wantedly.com/companies/ks-rogers)の妹尾と申します🙋‍♂️

今回は私自身、存在は知っていて気になってはいたけど使ったことがなかった [LocalStack](https://www.localstack.cloud/) を実務で使う機会がありましたので自身の備忘も兼ねて導入手順や使ってみた感想などをまとめてみました。

今後導入を検討している方や LocalStack に興味のある方の参考になれば幸いです🙇‍♂️

誤った内容・助言等あればお気軽にコメントください!

# LocalStackとは
まず *LocalStackってなに?* という方もいらっしゃると思いますので簡単に説明します。

LocalStack とはAWSサービスをローカル環境にエミュレートするためのプラットフォームです。

LocalStack を導入することで、リモートのAWSサービスに接続せずに、AWS環境へデプロイしたアプリケーション相当の動作をローカル環境にて実現することができます。
AWSアカウ

元記事を表示

OTHERカテゴリの最新記事