- 1. [AWS] Lambda@Edgeでレスポンスボディの一部分を書き換える(付け足す)
- 2. LINEからのBedrockエージェント呼び出し② 音声で答えてもらう
- 3. serverless frameworkで作ったLambda Function についてnodejs16.x以下のバージョンをnodejs18.xに上げるためのメモ書き
- 4. (axiosで)叩いて(corsで)弾いてボタンクリック!!
- 5. LINEからのBedrockエージェント呼び出し①
- 6. ハッカソン参加時の備忘録 ~ 第2回:1番お手軽なGUIであるLINEとAWS(Lambda)の連携をしてみよう ~
- 7. 【裏技】Lambda の固定IP化にまだ NatGateway 使ってるの?
- 8. M5StickのボタンでLINE WORKSにスタンプする
- 9. AWS Lambdaでpython-gnupgでPGP暗号化を実装するサンプルコード
- 10. AWS LambdaとDynamoDBを使ってWordPressの表示を切り替える方法
- 11. custom-resource-existing-s3 という Lambda 関数と対応例
- 12. TerraformでAWS LambdaをNode.js 20へアップグレードする方法
- 13. EventBridge Schedulerを用いてLambdaを定期実行するCloudFormationテンプレート
- 14. aws APIGateway, lambda, sesでメール送信機能実装
- 15. LambdaとSNSで日本語の通知メールを送る
- 16. Lambda コンテナイメージを使ってSlackのグラフ貼り付けBOTを作る
- 17. brefをCDKから利用する際、handlerとcodeに記載するパスに関するメモ
- 18. Aurora間のデータ連携時に発生したタイムアウトエラーを検証する
- 19. CloudWatchのログメッセージをまとめて取得するPythonコード
- 20. VPCネットワーク内での350秒のタイムアウトを確認してみた
[AWS] Lambda@Edgeでレスポンスボディの一部分を書き換える(付け足す)
Lambda,CloudFrontの細かい説明は省きます。
## Lambda@Edgeとは
Lambda\@Edgeについてまず簡単に。
公式↓
https://aws.amazon.com/jp/lambda/edge/CloudFrontのエッジロケーションからコードを実行するLambda関数のことで、
ユーザに近い場所でコードが実行されるので高速なコンテンツ配信が可能になる仕組み。
コードをLambdaにアップロードするだけで自動的にコードの実行やスケーリングが行われる。最大のメリットは**コンテンツがオリジンから返されたときにキャッシュされる可能性を高めたり、既にキャッシュされたコンテンツの利便性を高め、キャッシュヒット率を向上させること。**
らしい。## トリガーとレスポンスボディ
本記事ではこのLambda@Edgeで受け取ったレスポンスボディの一部を書き換えてクライアントに返すことをやる。
まず、Lambda@Edgeは上述した通り、CloudFrontとセットで使用する。具体的には、CloudFrontのイベントをトリガーとして
1. ビ
LINEからのBedrockエージェント呼び出し② 音声で答えてもらう
前回作った以下のAgentアプリケーションについて、せっかくなので回答内容を音声でしゃべってもらい、偽クサっぽくしてみます。
https://qiita.com/cyberBOSE/items/4a09d4593b44bb5ac49f
乗換案内だけをしゃべらせるのもアレなので、今日のニュースも読み上げられるようにしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/e304b63f-383e-0129-4763-a268246a84fe.png)
Agentにニュースを取得するAction groupを追加します。
Agentの生成結果をPollyに渡し音声を生成してmp3ファイルを生成、S3 Express One Zoneに書き込んで署名付きURLを発行してLINEに返却します。以下のテキストを音声に変更する感じです。
これが
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 getLoggerlogger = 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