- 1. AWS Lambda で CloudWatch アラームの自動有効化/無効化を行う方法
- 2. サーバレスアーキテクチャによる静的ウェブサイト構築
- 3. LINEBOT でClaude 3 に問い合わせできるようにしてみる (AmazonBedrock)
- 4. Slack連携による生産性向上の施策(その2)〜Slack App編〜
- 5. Lambdaで定時刻に呟くDiscord Botを作る
- 6. #AWS S3にアップロードされたZIPファイル自動解凍
- 7. Lambdaで実装するIotトピックのSubscriberとPublisher
- 8. LambdaからEventBridge Schedulerを作成してみた
- 9. LambdaでGoのHelloWorldをやってみた
- 10. AWS Lambda関数作成入門してみます。
- 11. AWSとGoogle Cloudで、とりあえず簡単にRAGを構築してみたい!(API呼び出しもあるよ)
- 12. 難しいことはわからんが、とりあえずRAGを構築してみたい!(AWS編)
- 13. CloudFrontがLambda Functions URLへのOACに対応! の何がすごいか
- 14. AWS Lambda Function URLs(関数URL)がCloudfrontのOACに対応したので試す
- 15. #AWS アラーム通知実装パターンについて
- 16. #AWS EC2、Fargate、RDS指定時間帯稼働用Lambda
- 17. サーバごとかつ日ごとに不定の時刻でEC2インスタンスを自動起動停止するLambda関数
- 18. LINEメッセージをAWS Lambdaで送受信してみたお話
- 19. Slack連携による生産性向上の施策(その1)〜Workflow Builder編〜
- 20. AWS Lambda LayersでError importing numpy: you should not try to import numpy from its source directory
AWS Lambda で CloudWatch アラームの自動有効化/無効化を行う方法
この記事では、AWS Lambdaを使用してCloudWatchアラームを自動的に有効化または無効化する方法を詳しく説明します。
AWS EventBridgeとCloudFormationも活用し、完全に自動化されたソリューションを構築する方法について解説します。#### 1. Lambda関数の概要
**cloudwatch-alarm-autostop** と **cloudwatch-alarm-autostart** という2つのLambda関数を作成します。
これらの関数は、CloudWatchのアラームを特定のタグに基づいて有効または無効にします。##### cloudwatch-alarm-autostop
このLambda関数は、タグ `Alarm-AutoStop` の値が `yes` のアラームを無効にします。“`python
import boto3def lambda_handler(event, context):
cloudwatch = boto3.client(‘cloudwatch’)
nt = None
サーバレスアーキテクチャによる静的ウェブサイト構築
# はじめに
このリポジトリは、S3、API Gateway、Lambda、RDS、IAMを利用したサーバレス構築の概要を説明します。この構築は、Terraformを使用してIaC (Infrastructure as Code) を実現し、静的ウェブサイトのホスティング、APIゲートウェイによるリバースプロキシ、Lambda関数の実行、RDSデータベースの利用を実現します。以下がレポジトリです。
https://github.com/sugiyama404/practice_lambda
参考記事
https://qiita.com/suzuki-navi/items/6a896a6577deaa858210
# 構成
サーバレスアーキテクチャ構成図:
![aws.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731268/2ead2e19-4c1d-4802-
LINEBOT でClaude 3 に問い合わせできるようにしてみる (AmazonBedrock)
# 今回作成する成果物
– AmazonBedrock (Claude 3 Sonnet)にLINEBOTから質問をできるようにする### 参考サイト
https://www.ryucom.co.jp/blog/aws/4713/https://qiita.com/taku-0728/items/c80bcf65aba318ac6db0
https://developers.line.biz/ja/docs/messaging-api/receiving-messages/#verify-signature
## 構成図
![LINEBOT×Claude_アーキテクチャー図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3747609/4c129bf7-e163-e78b-5317-0eae68c3bae1.jpeg)
## 前提
– AmazonBedrockでClaude 3 Sonnetが利用できるアカウントをすでに所有している
– AWSのリージョンは、バージニア北部(us-ea
Slack連携による生産性向上の施策(その2)〜Slack App編〜
# はじめに
こちらの記事は三部構成になっております。
– [Slack連携による生産性向上の施策(その1)〜Workflow Builder編〜](https://qiita.com/oc-arimura/items/ff4c194c617a9d309d9c)
– Slack連携による生産性向上の施策(その2)〜Slack App編〜
– Slack連携による生産性向上の施策(その3)〜AWS Lambda編〜また、全ての記事の内容を含んだ動画も用意しております。
動画で確認したい方は[コチラ](https://www.youtube.com/watch?v=JE7ZVJ9yE9Q)まで。
※動画開始50分頃からの内容になります。# Slack App登録の前に
Slack Appから呼び出されるAPIの準備をします。
## Lambda関数作成
1. AWSのコンソール画面でサービス名に `lambda` と入力し、サービス一覧から【Lambda】をクリック
![スクリーンショット 2024-04-11 17.41.10.png](https://qiita-image-s
Lambdaで定時刻に呟くDiscord Botを作る
# やりたいこと
AWSのLambdaを用いて、毎分0秒に「やっほー」と呟くDiscordのBotを作成します。
## 本記事の対象者
* とりあえずLambdaで何かしてみたい方
* サーバーレスでBotを作ってみたい方## 前提条件
Discordの開発者ポータルからアプリ作成+Bot作成は済んでおり、**Botトークン**が取得できている状態(まだない方は、簡単なのでぜひ取得してみてください)
![スクリーンショット 2024-04-07 17.48.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3287737/9613f259-3894-b6e8-227e-fc337b3a4c2e.png)
↑こちらの画面のToken発行ボタンから取得するものです。
※Botのアイコン画像は[ぷしおメーカー](https://vps1-net000.sfc.keio.ac.jp/pushiomaker/)様で作成しました。# 1. 関数の作成
1. Lambdaコンソールを開く
1. 「
#AWS S3にアップロードされたZIPファイル自動解凍
# S3にアップロードされたZIPファイル自動解凍について:
Cloudfrontに繋いでいるS3へのファイルアップロードを簡素化するため、Zipファイル格納用S3に新しいZipファイルのアップロードが検知されたら、対象Lambdaが有効化され、Zipファイル格納用S3からZipファイルをダウンロードして解凍し、Cloudfront用S3にアップロードします。本記事はそれを実現するlambdaを紹介いたします。
# 処理フロー:
1. Zip格納用S3にZipファイルのアップロードが検知された
↓
2. 自動解凍&アップロードLambdaを呼び出す
↓
3. (Lambda) Zip格納用S3から対象Zipファイルをダウンロードする
↓
4. (Lambda) 対象Zipファイルを解凍する
↓
5. (Lambda) 解凍した資材一式をCloudfront用S3にアップロードする
↓
終了# Lambda作成:
以下の手順を踏んで作成します1. AWSコンソール画面の上部にある検索欄から「Lambda」を入力し、検索する
2. Lambda詳細画面の左メニューの「関数」を
Lambdaで実装するIotトピックのSubscriberとPublisher
# はじめに
最近、過去に業務で設計・実装したAWS IotトピックのSubscriberとPublisherのインフラコードを整理してみました。これを機に、アーキテクチャや実装した内容について記事で紹介しようと思います。ソースコードは下記repoをご参照ください。
※今回紹介する内容は汎用的なものであり、実際業務で実装したアーキテクチャやアプリのロジックの記載はありません。https://github.com/to-fmak/iot-topic-subscriber-publisher-demo
# やりたいこと
– Iotデバイス等からIotトピックに送られたメッセージをsubscribeし、DynamoDBに書き込みたい
– 特定のDynamoDBにアイテムが作成or更新or削除された際に、そのイベントの詳細をIotトピックにpublishし、Iotデバイス等で受信したい# アーキテクチャ
## Subscriber
![iot-demo-subscriber.png](https://qiita-image-store.s3.ap-northeast-1.am
LambdaからEventBridge Schedulerを作成してみた
# 背景・目的
EventBridgeをアプリケーションから作成する機会がありましたので、簡単に試してみます。# 概要
## Amazon EventBridge スケジューラとは
[Amazon EventBridge スケジューラとは](https://docs.aws.amazon.com/ja_jp/scheduler/latest/UserGuide/what-is-scheduler.html)を元に整理します> Amazon EventBridge スケジューラはサーバーレススケジューラで、一元化されたマネージドサービスからタスクを作成、実行、管理できます。EventBridge スケジューラは拡張性が高く、270 を超える AWS サービスと 6,000 を超える API オペレーションを呼び出すことができる何百万ものタスクをスケジュールできます。EventBridge スケジューラでは、インフラストラクチャをプロビジョニングして管理したり、複数のサービスと統合したりすることなく、スケジュールを大規模に配信してメンテナンスコストを削減できます。
– マネージド
LambdaでGoのHelloWorldをやってみた
GoはシングルバイナリでLambdaと相性が良いらしい・・・といったレベルの初心者なので、まずは公式のドキュメントのとおりにやってみる。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/golang-handler.html
“`go mod init main“`して、“`go.mod“`を作成し、“`main.go“`に例示されたコードを張り付ける
“`go
package mainimport (
“context”
“fmt”
“github.com/aws/aws-lambda-go/lambda”
)type MyEvent struct {
Name string `json:”name”`
}func HandleRequest(ctx context.Context, event *MyEvent) (*string, error) {
if event == nil {
return nil, fmt.Errorf(“received nil event”)
}
AWS Lambda関数作成入門してみます。
# FaaS(Function as a Service):Lambdaとは
![Arch_AWS-Lambda_64.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3511203/1557e3c9-6f10-7eda-a726-f4dbc0d15978.png)Lambda(ラムダ)とは、AWSのサービスの1つです。
小さな計算をサーバーなしで実行するためのサービスで、サーバレスなコンピューティングサービスなどと言う紹介のされ方が一般的です。関数の種類としては所謂イベントドリブン型と言われるやつで、特定のイベントでトリガーされ、関数が動くという仕組みです。ざっくり過ぎてすみません。## Lamdaの料金体系
無料枠について。
アカウント作成時はLambdaの場合「1,000,000リクエスト/月」無料で使用可能です。個人開発の範囲であれば越えることはまずないと思います。## 関数の作成
![スクリーンショット 2024-04-12 19.26.37.png](https://qiita
AWSとGoogle Cloudで、とりあえず簡単にRAGを構築してみたい!(API呼び出しもあるよ)
# この記事について
RAG(Retrieval-Augmented Generation)は、質問への回答を生成する際に外部データベースの情報を取得することで、LLM単独では応えきれない問題(最新の情報、社内独自の情報など)へ対応する技術です。最近話題になっているので、いちど試してみたい!と思っている方も多いのではないでしょうか?
しかし、試してみたいと思っても使うモデルや技術・サービス・手法等々いろいろな情報が溢れていて結局何をどう使えばいいのかわからん…ということになりがちです。この記事では、「難しいことはわからんが、とりあえずRAGというものを構築してみたい」という方向けに、AWSおよびGoogle Cloud上に少なめの準備でRAGを作って試す手順を紹介します。
とりあえず作ってみて、難しいことは後で考えればいいじゃない!という精神でRAG+API呼び出しの構築を進めてみて、実際に動作させた感触やかかった利用料などを紹介できればと思います。なお、この記事を書いている私自身、RAGの手法や精度向上にまったく詳しくないけどとりあえず構築してみた人間のひとりです。
#
難しいことはわからんが、とりあえずRAGを構築してみたい!(AWS編)
## この記事について
この記事は、[AWSとGoogleCloudで、とりあえず簡単にRAGを構築してみたい!(API呼び出しもあるよ)](https://qiita.com/ckw-1227/items/d8f89757349b90e35fa7)のAWS編として、AWSでの構築手順をまとめたものになります。
GoogleCloud編や、AWSとGoogleCloudの比較を見たい方は親記事からどうぞ。## 0. 使用するサービス
AWSではAmazon Bedrockのナレッジベースを使用します。(先日まではメニューが英語で「KnowledgeBase」と書かれていた気がするんですが、いつの間にかコンソールが変わってカタカナ表記になっていたので、この記事でもカタカナ表記にします)ナレッジベースで外部から与える情報源と使いたいデータベースサービスを指定すると、RAGを構築できるようになっています。
## 1. S3にテキストファイルを配置する
Bedrockに触れる前に、まずは外部情報となるテキストファイルをS3に配置します。テキストファイルの作成については親記事で触れてお
CloudFrontがLambda Functions URLへのOACに対応! の何がすごいか
# はじめに
CloudFrontのOrigin Access Control(OAC)がLambda Functions URLに対応しました。
つまり、Functions URLとCloudFrontのインテグレーションが実現できるようになりました!うおおおお!https://aws.amazon.com/jp/about-aws/whats-new/2024/04/amazon-cloudfront-oac-lambda-function-url-origins/
と、このアプデの何がすごいの? という点がいまいち伝わってない人向けに、この記事ではもろもろの経緯とユースケースを紹介します。
## 経緯
### Functions URLs、その課題
2022/4にLambdaの組み込みエンドポイントとしてLambda Functions URLが利用できるようになりました。
https://aws.amazon.com/jp/blogs/news/announcing-aws-lambda-function-urls-built-in-https-endpoint
AWS Lambda Function URLs(関数URL)がCloudfrontのOACに対応したので試す
# はじめに
AWS LambdaのFunction URLs(関数URL)は、Lambda単体でHTTPSのURLを発行し、HTTPリクエストをトリガーにLambdaを実行出来るようになる、非常に便利な機能です。
API Gatewayと統合せずともLambdaのみでWebAPIを構築出来るようになり、プロトタイピングやマイクロサービスに有用です。## 関数URLの制限
ところで、関数URLの実行の認可は、IAMを用いた方法しかありませんでした(IAMロールベースの認可か、認可なししか無かった)。
Cloudfrontをリバースプロキシ的に前段に配置し、関数URLと繋ぐことで、ドメインを当てたりキャッシュを活用したり、便利な訳ですが、その際に上記が問題となります。というのは、CloudfrontからIAMベースのリクエストを行うには、Lambda@Edgeを利用するしかありませんでした(オリジンリクエストをIAMロールを付与したLambda@Edgeに任せる)。全てのリクエストでLambda@Edgeが実行されるとコストがかかりますし、せっかく関数URLはシンプルなのに、無
#AWS アラーム通知実装パターンについて
# AWSアラーム実装パターンについて:
AWS環境内に各種リソースを監視するためにアラームを実装する必要があります。監視リソース種類に応じてアラームの実装パターンもいくつか存在していて、リソース種類は大きく以下のように分類できるかと思います。
A. メトリクス系(CPU使用率、メモリ使用率、コンテナ台数など)
B. ログ系(エラーログ、ヘルスチェックログなど)下図のように実際AWSコンソールも非常にわかりやすく、それぞれのグループに分けられています。
メトリクス系は基本CPUやメモリなど使用率が想定値より超えたことを通知するだけなので、煩雑な設定をしないでCloudWatch Alarmをそのまま使用したほうが便利です。
ログ系は
#AWS EC2、Fargate、RDS指定時間帯稼働用Lambda
# EC2、Fargate、RDS指定時間帯稼働について:
下記コスト削減、セキュリティ保護などの理由で、AWS環境に稼働しているEC2、Fargate、およびRDSなどのリソースを特定の時間帯のみ稼働させる必要があります。
- ・ コスト削減:
- 特定の時間帯にのみリソースを利用することで、クラウドサービスのコストを削減できます。例えば、夜間や週末には利用者が少ない場合、サーバーの稼働を停止したり、リソースをダウンスケールすることで、不要なコストを抑えることができます。
- ・ セキュリティ保護:
- 特定の時間帯にのみシステムを稼働させることで、潜在的なセキュリティリスクを最小限に抑えることができます。また、リソースの不正利用を防ぐために、特定の時間帯にのみアクセスを許可することもあります。
- ・ リソース最適化:
- 特定の時間帯に高い負荷が予想される場合、それに応じてリソースをスケールアップすることができます。たとえば、特定の時間帯にWebサイトへのアクセスが急増す
サーバごとかつ日ごとに不定の時刻でEC2インスタンスを自動起動停止するLambda関数
# 作成経緯
まず筆者が下記のLambda関数を作成するに至った経緯を記す。対象となっているサーバはベンダーが作業時に使う踏み台サーバである。
踏み台用のAWSアカウントを切り出し、SSMセッションマネージャーのポートフォワードで
ベンダーには踏み台サーバへアクセスしてもらっている。この踏み台サーバの稼働時間は、ベンダーの作業によって変わるため一定ではない。
そのため、EventBridgeでサーバごとにルールを作成し、都度実行時間を更新するのは
手間がかかりすぎるため、EC2インスタンスの起動停止時間を可変にする仕組みを考えた。
折角作ったので備忘としてここに残す。(正直EC2インスタンスに起動用タグ・停止用タグを付与し、
タグを対象に月〜金の9時〜18時といった固定時間でEventBridgeルールを作成。
ベンダーにはこの運用ルールを伝え、人間をルールに合わせて作業させればいいと思う。
これができるなら本記事を読む必要はない)# 概要
EC2インスタンスの起動停止を行うLambda関数を作成し、
この関数をEventBridgeで毎日毎時実行する。
対象とな
LINEメッセージをAWS Lambdaで送受信してみたお話
## はじめに
業務にてLINE MessagingAPIを利用したLINEでのコミュニケーションツールを作成したので、技術共有と自分の備忘録もかねて書いていきます。
流れとしては、[公式LINEアカウントへのログイン処理をAWS Lambda経由で実装してみた](https://qiita.com/inacyc_k/items/8337489e3e148db1f9e5)の続きの実装になります。あわせてぜひ読んでいただければと思います。## LINE MessagingAPI ってなに
みなさん、LINEの公式アカウント利用していますか?(私はよく佐川急便とかUNIQLOの公式アカウントをよく利用しています)LINEの公式アカウントをユーザーに友だち登録いただくことでメッセージが届いたり、チャット上で会話形式の質問に回答したりとWebサイトやメルマガよりも気軽に情報発信することができます。このようにMessagingAPIは、
・さまざまなメッセージをユーザーへ送信
・ユーザーが送ったメッセージを受信
そして
・ユーザープロフィールの取得(アイコン画像やユーザー名)
・アカウ
Slack連携による生産性向上の施策(その1)〜Workflow Builder編〜
# はじめに
こちらの記事は三部構成になっております。
– Slack連携による生産性向上の施策(その1)〜Workflow Builder編〜
– Slack連携による生産性向上の施策(その2)〜Slack App編〜
– Slack連携による生産性向上の施策(その3)〜AWS Lambda編〜また、全ての記事の内容を含んだ動画も用意しております。
動画で確認したい方は[コチラ](https://www.youtube.com/watch?v=JE7ZVJ9yE9Q)まで。
※動画開始50分頃からの内容になります。# 事の経緯
![スクリーンショット 2024-04-04 16.45.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763114/66db9017-f5c8-4045-9040-0dd90bebbb12.png)
![スクリーンショット 2024-04-04 16.47.23.png](https://qiita-image-store.s3.ap-northeast-1.
AWS Lambda LayersでError importing numpy: you should not try to import numpy from its source directory
# AWS Lambda LayersでError importing numpy
AWS Lambda Layersでlangchainを使おうとして以下のエラーが発生しました。“`
[ERROR] Runtime.ImportModuleError: Unable to import module ‘lambda_function’: Error importing numpy: you should not try to import numpy from
its source directory; please exit the numpy source tree, and relaunch
your python interpreter from there.
Traceback (most recent call last):
“`Keith’s Layers (Klayers) のnumpyをレイヤーに追加して解決する。
## numpyのARNを確認
### Klayersへ遷移
https://github.com/k