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

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

【裏技】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アカウ

元記事を表示

Lambdaプロキシ統合を設定してみた

## Lambda プロキシ統合とは
Lambdaプロキシ統合はAmazon API GatewayのAPI統合タイプの1つで、API GatewayとLambda関数を接続するためのシンプルで柔軟な方法を提供します。Lambdaプロキシ統合を使用すると、クライアントはAPI Gatewayを介して単一のLambda関数を呼び出し、リクエストのレスポンスをクライアントに返します。

>Amazon API Gateway Lambda プロキシ統合は、単一の API メソッドのセットアップで API を構築するシンプル、強力、高速なメカニズムです。
Lambda プロキシ統合は、クライアントが単一の Lambda 関数をバックエンドで呼び出すことを可能にします。
この関数は、他の Lambda 関数の呼び出しを含め、他の AWS のサービスのさまざまなリソースや機能にアクセスします。

Lambda プロキシ統合は主に以下のような特徴があります。

シンプルで柔軟性が高い
Lambda プロキシ統合は、API Gateway で最も基本的な統合

元記事を表示

API GatewayからLambda非同期呼び出しをSAMで書く

# はじめに

こちらは**Qiita Advent Calendar AWS Lambda と Serverless 21日目**の記事です。

サーバレスで外部からAPIを呼び出したい時、API Gateway + Lambdaは鉄板構成です。
ただ、Lambdaの処理時間が長いとAPI Gatewayのタイムアウトの最大である29秒(RESTの場合)を超えてしまい、APIのリクエストが失敗してしまいます。
そのため、API側でLambdaを突き放して実行する構成が取られますが、今回それを実現するAWS Serverless Application Model(AWS SAM)のテンプレートについて主に説明します。

管理コンソールから上記実現する方法はググればたくさん見つかります。
SAMについては情報が少なかったため、記載することにしました。

## 実現したかったこと

当時(2年前ぐらい?)、比較的小規模の会社様の請求システムの構築のプロジェクトに参画しました。
お客様からの要望は、以下のようなものでした。

– 請求書の作成と請求先へのメール送信を自動化したい
– メール

元記事を表示

乗換案内を自然言語で問い合わせ出来るBedockエージェント

Agents for Amazon Bedrockに対して自然言語で乗換案内を問い合わせ出来るようにします。

例)
Q:
たかし君は3日後の18時に名古屋駅に到着している必要があります。たかし君の家は千葉駅にあります。何時に出発すれば良いですか?

A:
たかし君は2023年12月23日(土)の15時20分に千葉駅を出発すれば、名古屋駅に18時に到着できます。

内部的には、あるLambda関数(Action group)の実行結果を次のLambda関数(Action group)に引き継いで実行し、最後にLLMでまとめるということをやっています。

AWS Lambdaでpython-gnupgを使用可能にする実装方法

# はじめに
PGP暗号化をLambdaで実装する際に、layerにLambdaのバージョンに対応するライブラリ(python-gnupg)を設定するだけではエラーが発生し使用できなかった。
どうやらライブラリが不足しているようなエラー内容だった。
その際にどういう手順で実装したかを記述する。

# 前提
– Lambdaのランタイムはpython3.9
– Lambdaのバージョンに対応するlayer(python-gnupg)は作成済みであること。
(今回はpython3.9に対応するライブラリpython-gnupg0.5.2をpipでinstallし、zipファイル固めてLambdaのlayerにアップロードした。)
– EC2インスタンスはAmazon Linux2
– { }でくくられている部分は変数名なので適宜変更すること。

# 今回使用するAWSサービス
– Lambda
– S3
– EC2

# 実装手順
## 1. EC2インスタンスを起動しログインをする
① EC2インスタンスでLambdaをパッケージ(zip)化した上でLambdaに反映させ

元記事を表示

OTHERカテゴリの最新記事