- 1. LambdaのFunction URLsを試してみた!
- 2. Slackに絵文字が追加されたことを通知するチャンネルを作りました!
- 3. EventBridgeを使用しS3へのファイルアップロードをトリガーにLambdaを動かす
- 4. LambdaのトリガーにS3を設定した際に発生したエラーと対処法
- 5. 【自由研究】Python × AWS Lambda で、コールドスタートでもキャッシュを使う
- 6. S3とLambda、SESを用いてお問合せフォームを作成した話
- 7. lambdaまたはAPI GatewayのAWSリソース(プライベートサブネット)へのつなぎ方
- 8. AWS LambdaとEventBridgeを使ってOrganization内のGitHub Actionsの使用状況をSlackで通知するには
- 9. Serverless Frameworkでデプロイパッケージサイズ削減
- 10. FAQがAIの力でパワーアップ!誰でもナレッジ情報を自由自在に活用できる仕組みをAmazon Bedrock(RAG)+ LangChain + GASで構築 ~完成品編~
- 11. [AWS SAM] Selenium4をAWS lambda Python3.12で動かす
- 12. Lexで作ったbotをLambdaを使用してフリーインプット形式に対応させる
- 13. Amazon LexとLambdaを連携させてチャットBotを作ってみる
- 14. AWSが公開している「チュートリアル: WebSocket API、Lambda、DynamoDB を使用したサーバーレスチャットアプリケーションの構築」をAWS SAMで試す
- 15. Dockerを使用してAWS Lambda Layerを作成するシェルスクリプト作ったよ
- 16. 【AWS】S3バケットのファイル作成をトリガーにLambdaを実行する
- 17. EC2インスタンスの自動起動および停止システムを設定する方法
- 18. LambdaでSESが受信したメールを一括取得する
- 19. RDSがフェイルオーバーした際、ECSで動作しているRuby on Railsを再起動する仕組みを構築した
- 20. ついにAPI Gatewayの統合タイムアウトが29秒の壁を超えられるように!実際に延長リクエストしてみた
LambdaのFunction URLsを試してみた!
こんにちは、プログラミングが好きなブタさんです。
API Gatewayを使わずに Lambda のみで HTTPエンドポイントを作れるようになったので解説します。マネジメントコンソールから Lambda関数を作成します。
言語は Python に設定します。![1.png](https://qiita-image-store.s
Slackに絵文字が追加されたことを通知するチャンネルを作りました!
# はじめに
こんにちは。
今回は、Slack に新しい絵文字が追加された際に、自動で絵文字追加の通知を行うチャンネルを作成しました。# 作成の経緯
最近人が増えてきたり、一緒に仕事する人が増えてきたりで、直接コミュニケーションをする機会が減ってきていると思っています。
なので、テキストコミュニケーションで気軽にリアクションが出来るようにしたいという思いで、今回通知チャンネルを作成するにいたりました。
加えて、便利な絵文字されたら自分も使いたいですからね。# 今回やること
– 通知チャンネルを作る
– Slack App を作る
– AWS Lambda + API Gateway を作るとっても簡単です。
最初 GAS で書けないかなぁと思っていたんですが、エンドポイントのアクセス制限を考えたときに、Slack が API をコール出来なさそうだったのでやめました。(Google WorkSpaceを使ってる場合ドメイン以外からのアクセスの選択肢がパブリックしかないため)→ 有識者いたら教えていただきたいです。。もう少し詳しくフローを書くと
1. Slackに絵
EventBridgeを使用しS3へのファイルアップロードをトリガーにLambdaを動かす
# はじめに
本記事ではAmazon EevntBrige使用し、S3バケットへファイルをアップロードしたことをトリガーにしてLambdaを実行させてみます。# EevntBrige とは?
AWSのサービスやSaaSで発生するイベントをトリガーとしてワークフローを動かすことができるサービス。
EevntBrigeを使用すればイベント駆動型アーキテクチャを簡単に構築する事ができる。https://aws.amazon.com/jp/eventbridge/
# ゴール
S3へのファイルアップロードをトリガーとしLambdaを実行させる。
# 環境
python 3.12# S3
対象のバケットのプロパティを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/d1e7eb73-9e07-ed11-0283-22492bcd9158.png)
イベントの通知からAmazon EventBridgeの「編集」を選択し、通知をオンに変更。
![i
LambdaのトリガーにS3を設定した際に発生したエラーと対処法
# 背景
新規で作成したLambda関数のトリガーにS3バケットを指定しようとしたところ下記のエラーが発生。エラー対処の備忘録も兼ねて本記事を作成しました。# 発生したエラー
下記のエラーが発生。
“`
trigger の作成中にエラー が発生しました: Configuration is ambiguously defined. Cannot have overlapping suffixes in two rules if the prefixes are overlapping for the same event type.
“`![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/7dee6883-8440-984a-508c-80181fe88eae.png)
# 原因
既存のLambda関数のトリガーに同じS3バケットを同様の条件でトリガーとしているものがあったため。# 結論
EventBridge か Step Functionsを使用す
【自由研究】Python × AWS Lambda で、コールドスタートでもキャッシュを使う
## TL;DR
たいして速くならないし、速くしたいならコールドスタートを避けるようなプラクティスを採用しましょう
:::note warn
「みなさんぜひやってみてね」というよりは自由研究シリーズです。
実運用には使わない方がいいかもしれません。
:::## はじめに
[AWS Lambda](https://aws.amazon.com/jp/lambda/) はサーバーレスでバックエンドサービスのコードを簡単に実行できるサービスです。
AWS Lambda でプログラムを実行した環境は、一定時間経つと破棄されてしまうため、次の実行時にまたソースの取り込みと環境作成分の時間がかかります(コールドスタート)。
定期的に実行したり Provisioned Concurrency を使って環境を保つようにすれば、いざ実行するときに時間があまりかからないし Python のコンパイルキャッシュも効くのですが、私はなぜか「コールドスタートでもキャッシュを効かせてみたい」と思いました。
キャッシュをためるファイルシステムの分だけお金がかかるんですが、やってみようと思います
S3とLambda、SESを用いてお問合せフォームを作成した話
前回はS3とRoute 53、CloudFrontで静的なHPの作成を行いました。
今回は前回のものによくあるお問い合わせフォームを組み合わせ、お問い合わせフォームからメールが送られるようにします。
2回に分けて記事を書かせていただきます。
前回時点でS3より左側の設定までは完了している部分です。
今回はS3から右側の設定を行い、次回S3と今回の部分をつなげます。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273072/42f486e3-0bd8-4fab-cd2a-903e27b33f94.png)
## Amazon Simple Email Service
SESはクラウドベースのメールサービスです。
無料枠もありますが今回はS3からのメール送信となりますので有料になります。1,000通あたり$0.10になります。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27307
lambdaまたはAPI GatewayのAWSリソース(プライベートサブネット)へのつなぎ方
## はじめに
LambdaとAPI Gatewayの勉強をしていて、パブリックサブネット内にあるLambdaまたはAPI Gatewayからプライベートサブネット内のAWSリソース(RDS等)へのアクセス方法が似ていて、どちらがどちらか迷いそうだったのでまとめます。## Lambdaのプライベートサブネットへのアクセス方法
作成したLambdaはLambdaサービスが所有するVPC内で実行されます。
デフォルトでは、Lambda 関数はアカウントのVPCに接続されていません。インターネットや、インターネットを経由してパブリックサブネット内のAWSリソースにはアクセスできます。
なので、以下の方法でプライベートサブネット内のリソースに接続します。
– NATゲートウェイの設定をする(VPC-to-VPC NAT)
– Lambdaの実行の際にENI (Elastic Network Interface) が、LambdaのVPC のサブネット構成ごとに割り当てれる
– プライベートサブネット内のリソースにアクセス
上記を実行すると、プライベートサブネット内へのリソースにはアクセスで
AWS LambdaとEventBridgeを使ってOrganization内のGitHub Actionsの使用状況をSlackで通知するには
## 概要
AWS LambdaとEventBridgeを使ってOrganization内のGitHub Actionsの使用状況をSlackで通知する方法について解説します
記事の後半ではCloudFormationを使ってLambdaとEventBridgeを構築する方法についても解説します## 前提
– Pythonを使用
– GitHubのAPIを使用するため、GitHub Tokenを発行済み
– Incomming Webhookを作成済み## Organization内のGitHub Actionsの使用状況を取得するAPI
今回は以下のAPIを使って毎月の無料枠(分)と当月使用したGitHub Actionsの使用時間(分)を取得します
orgにはOrganization名を指定します“`
GET /orgs/{org}/settings/billing/actions
“`“`json:response
{
“total_minutes_used”: 305,
“total_paid_minutes_used”: 0,
“includ
Serverless Frameworkでデプロイパッケージサイズ削減
Serverless FrameworkでLambdaをいくつか定義してデプロイしていたら、パッケージサイズが`1.3GB`ほどになっていので、削減します。
# コード
“`yml
package:
excludeDevDependencies: false
patterns:
– “!.git/**”
– “!node_modules/**”
– “!aws/**”
– “!__pycache__/**”
– “!.venv/**”
“`
`Python`*`Lambda`の構成だったので、`__pycache__/`,`.venv/`が含まれています。
環境に合わせて`patterns`に追記する。文字列の先頭にある`!`が含めないという意味になる。
これによって`1.3G`->`24mb`に🥳# 参考
https://www.serverless.com/framework/docs-providers-aws-guide-packaging
FAQがAIの力でパワーアップ!誰でもナレッジ情報を自由自在に活用できる仕組みをAmazon Bedrock(RAG)+ LangChain + GASで構築 ~完成品編~
# はじめに
こんにちは!CBcloudのRyoです:grinning:私の所属するCBcloudでは、物流ラストワンマイルの配送プラットフォーム「ピックゴー」を運用しており、荷物を送りたい方、荷物を届けてくれる方を24時間365日、サービスを通してつなげています!
https://pickgo.town/?utm_source=google&utm_medium=cpc&utm_campaign=brand&utm_id=749340152&utm_term=pickgo&af_pid=google&af_c=brand&gad_source=1&gclid=CjwKCAjwyJqzBhBaEiwAWDRJVBRiSmk6aRJqjngMWLKe1uuwT-EGw6Ktv9Vu7EG8o7545efU0FJaeBoCKuMQAvD_BwE
弊社では24時間365日サービスをつなげていると同時に、もちろん荷物を送りたい方、荷物を届けてくれる方をサポートするサポートチームが存在します
今回はそのサポートチームに新たにAIの力を導入…だけではなく**AIが使う知識をサポートチ
[AWS SAM] Selenium4をAWS lambda Python3.12で動かす
# はじめに
AWS SAMを使ってAWS LAMDA上でselenium3を使う方法をご紹介いたしましたが、当初目的が別にありました。
きっかけはこちらの方の記事でした。
selenium4の最新版を利用すれば、新しく追加されたselenium-managerという機能があり、簡易的なChromeブラウザと、そのバージョンにあったChromDriverを自動でインストールしてくれます。
また古いHeadless-Chromiumはselenium4に対応していないため、最新のchromeに対応させたかったのですが、なぜか手元のマシン(M2 Macbookpro)で動かず、手詰まりになっていました。
この記事は動作するようになったコードの紹介と、その解決方法についてのまとめです。
## こんな方におすすめ
* AWS Lambda python3.8以上でselenium4を使いたい方
* AWS SAMを使っている方
* Apple Silicon製のMac(M
Lexで作ったbotをLambdaを使用してフリーインプット形式に対応させる
# やりたい事
インテントのサンプル発話に登録されたワード以外の文言が入力されても、LambdaからのレスポンスをLexのチャットに表示させたい。# 課題
Lexのサンプル発話に登録した内容が入力されると指定したLambdaを呼ぶようにできるが、これだけでは特定のワードが入力された際にしかLambdaを呼ぶことができない。# 結論
FallbackIntent に落ちてもLambdaを呼ぶように設定すると、LambdaからのレスポンスをLexのチャットボットのレスポンスとして表示させる事ができる。# 環境
– Python:3.12
– Lex:v2# FallbackIntent の設定
FallbackIntent のコードフックにチェックを入れておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/f3c30926-c74f-cfc6-9b3c-af57dba43338.png)
# Lexの準備
次の記事と同様の構成でLexの
Amazon LexとLambdaを連携させてチャットBotを作ってみる
# はじめに
本記事ではAmazon LexとAWS Lambdaを連携させて、入力に対してLambdaが応答を返すBotの構築方法について記載します。Lexのチャットテスト画面から入力された値をLambdaで受け取り、LambdaからLexへレスポンスを返すところまで確認します。# ゴール
Lexのチャットテスト画面(テスト ドラフトバージョン)でテキストを入力後に、Lambdaから応答が返ってくる事を確認する。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/6544e539-0a7e-fccb-dc5a-b42b85bd6ef8.png)
# 環境
– Python:3.12
– Lex:v2# Lambda側の準備
Lexと連携させるLambda関数を作成します。
詳細はコメントアウトの通りです。“`python:lambda_function.py
def lambda_handler(event, context):# イン
AWSが公開している「チュートリアル: WebSocket API、Lambda、DynamoDB を使用したサーバーレスチャットアプリケーションの構築」をAWS SAMで試す
## はじめに
[チュートリアル: WebSocket API、Lambda、DynamoDB を使用したサーバーレスチャットアプリケーションの構築](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/websocket-api-chat-app.html)
上記を使って、WebSocketを使ったシステムをAPI Gateway、SAM、DynamoDB、Lambdaで構築する基礎を学びたいと思います。
上記資料では、[CFnテンプレート](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/samples/ws-chat-app-starter.zip)が用意されているものの、API Gatewayはコンソールで作成されているので、以下の別サンプルコードも参照し、自分が理解しやすいテンプレートに作り替えます。
https://github.com/aws-samples/simple-websockets-ch
Dockerを使用してAWS Lambda Layerを作成するシェルスクリプト作ったよ
Dockerを使用してAWS Lambda Layerを作成する方法
AWS Lambdaで使用するライブラリを簡単にLayerとして作成する方法をご紹介します。この手順では、Dockerを使用してPythonライブラリをインストールし、それをLayerとしてパッケージ化します。## 前提条件
そもそも自作しなくてもlayerがAWS公式から準備されてないか確認します。
また有志の方がまとめてくれてる
https://github.com/keithrozario/Klayers/tree/master
このリポジトリで自分の環境にあったlayerがあればそれを使うのが手っ取り早いです。上記でもないマイナーなライブラリなどをlayerにしたい時、以下の手順で簡単にできるように
シェルスクリプトを作りました。
※pythonにしか対応してません。Dockerがインストールされていることが前提です!
## 手順
### 1. 必要なフォルダとファイルの準備
まず、任意のフォルダに移動し、Layerに含めたいライブラリ名を`requirements.txt`ファイルに記述し
【AWS】S3バケットのファイル作成をトリガーにLambdaを実行する
# はじめに
AWSのS3バケットにファイルをアップロードすることをトリガーにしてLambda関数を実行する方法について勉強したので備忘録も兼ねて本記事にまとめています。本記事では、S3バケットとLambda関数の設定手順、およびトリガーの設定方法を記載する。# 環境
python 3.12# S3側の準備
Lambdaから指定するバケットを作成します。2. Amazon S3 > バケット > バケットを作成 を選択。
2. 任意のバケット名を入力し、右下のバケットを作成をクリック。(本記事ではバケット名を`test-lambda-trigger1`とします。)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/1114e61d-a0a7-e475-bae8-e1572d123795.png)
# Lambda側の準備
## 関数の作成
1. Lambda > 関数 > 関数の作成 から新規でLambdaを作成します。
2. 任意の関数名を入力し
EC2インスタンスの自動起動および停止システムを設定する方法
クラウドコンピューティングサービス(例えばAWS)を使用する場合、コストを管理してリソースを最適化することが重要です。予約インスタンスとは異なり、EC2インスタンスは使用した分だけ課金されるため、インスタンスがアクティブである時間はすべて課金されます。
EC2インスタンスは24時間365日稼働するため、積極的に管理しないとコストがすぐに高くなります。不要な費用を避けるためには、必要な時にのみこれらのインスタンスを起動し、使用が終了したらすぐに停止するシステムを導入することが推奨されます。
:::note info
これは特に開発サーバー、テストサーバー、ステージングサーバーに当てはまります。これらを24時間365日稼働させるのではなく、業務時間中のみ稼働させるべきです。そうしないと、無駄な費用がかかってしまいます!
:::このプロセスを自動化することで、インスタンスが不要に稼働し続けないようにし、必要な時に確実に利用可能になるようにします。例えば、プロジェクト管理や会計などのサービスを管理するためにLaravelアプリケーションを使用している企業では、従業員が出社する際にこのア
LambdaでSESが受信したメールを一括取得する
# 導入
こんにちは。エンジニアのYamaです。特殊なパターンですが、Amazon Simple Email Service (SES)で受信したメールをLambdaで一括処理することがあったので、備忘録的に残しておきます。
# 実装内容
今回作成したLambdaは、CloudWatch Eventsで毎日23時に実行することを想定しています。
SESの取得範囲は、前日の23時から当日の23時までのものになります。
また、SESから取得したデータの加工に関しては、割愛しています。## Lambdaソース
“`python
import boto3
from datetime import datetime, timedeltadef lambda_handler(event, context):
# SES クライアント
ses_client = boto3.client(‘ses’, region_name=’your-region’)# 今日の日付を取得
today = datetime.utcnow().date()
RDSがフェイルオーバーした際、ECSで動作しているRuby on Railsを再起動する仕組みを構築した
# 概要
`RDS`がフェイルオーバを行うと`Ruby on Rails`(以下、`Rails`)では、ダウンしたDBを参照する現象が発生します。この問題により、`DB`を参照出来ない為、`Rails`が動作しなくなります。今回は、`RDS`のフェイルオーバーが行われたら、`RDS`のイベントサブスクリプション、`SNS`、`Lambda`を使用して、`ECS`で起動している`Rails`の`puma`を再起動する処理を構築しました。今回は、その実装方法を記載します。# 前提条件
– `ECS`で`Ruby on Rails`の環境が動作している
– `Amazon aurora`(postgres)を使用している (RDSでも今回の実施は可能)
– `Terraform`を使用している (webコンソールから設定する事も可能)# Lambdaの処理を動かす為の技術選定
フェイルオーバーが行われた事を`Lambda`に通知する機能として、RDSの[イベントサブスクリプション](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/
ついにAPI Gatewayの統合タイムアウトが29秒の壁を超えられるように!実際に延長リクエストしてみた
# はじめに
こちらでははじめまして!
SimSta(しむすた)と申します。
普段は個人ブログ「しまがじ!」で、AWSのアップデートを毎週まとめるなどしています。**しまがじ! 〜ホワイトシマリス飼いのガジェットブログ〜**
https://alta-whitechip.name
※ガジェットブログなのにまだガジェット記事が1個しかありません
うちの子も見てってね。
![IMG_7908.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815817/3393f80e-589a-4d27-a09e-5e299d2fab9f.jpeg)
# API Gatewayのアップデート
早速ですが、2024/6/5に以下のアップデートがありました。
https://aws.amazon.com/jp/about-aws/whats-new/2024/06/amazon-api-gateway-integration-timeout-limit-29-seconds/
## 概要
API G