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

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

Lambda関数の古いバージョンを一括削除するスクリプト

# 背景
 AWSのSAMテンプレートを利用しており、AutoPublishAliasプロパティを使い、Lambda関数にエイリアスとバージョンを設定しています。この場合、関数を更新するたびに新しいバージョンが作られるため、これを何度も繰り返した場合、気づかないうちにLambdaのストレージの制限である75GBを超えてしまう恐れがあります。
 現状、SAMのプロパティに古いバージョンのLambdaを削除するような設定は無く、[Issues](https://github.com/aws/serverless-application-model/issues/2719)を見る限り今後も実装されなさそうであるため、独自で古いバージョンのLambdaの削除を行う必要があります。
 今回は、問題が発生した場合にすぐに戻せるよう、最新から数バージョンは残しておきつつ、それ以前の古いバージョンは削除するようなスクリプトを作成しました。

# スクリプト

“`bash:delete-lambda-old-version.sh
#! /bin/bash
# 古いバージョンのLambdaを削除

元記事を表示

Lambdaを使うときのセッション管理方法

# LambdaはStatelessアーキテクチャ
Lambda関数は通常、ステートレスなアーキテクチャで実装されます。これは、各リクエストが独立しており、Lambda関数間で状態を共有しないことを意味します。この場合、セッション管理はクライアント側で行われることが一般的です。クライアントは、認証トークンやセッションIDを使用して状態を管理し、必要に応じてそれらをリクエストに含めます。

# 外部のセッション管理サービスを使用する
外部のセッション管理サービス(例えば、Amazon CognitoやAuth0など)を使用して、ユーザーの認証とセッション管理を行うことができます。これらのサービスは、ユーザーの認証情報やセッション情報を安全に管理し、Lambda関数からそれらの情報にアクセスすることができます。

# ステートフルなLambda関数
一部のユースケースでは、ステートフルなLambda関数が必要な場合があります。この場合、Lambda関数内でセッション状態を保持する必要があります。例えば、DynamoDBやElastiCacheなどのデータストアを使用して、セッション情報を保

元記事を表示

CloudWatch アラームを Redmine のチケットに起票する

# やりたいこと

CloudWatch アラームが ALARM 状態になったら Redmine のチケットに起票したい。

なお、Redmine チケットは次のようにしたい。

– プロジェクト: **test_project**
– トラッカー: **Alarm**
– チケットの優先度
– CloudWatch アラーム名に Critical が含まれる場合は、優先度 **Urgent** とする
– CloudWatch アラーム名に Error が含まれる場合は、優先度 **High** とする

# どうやるか?

Redmine API が提供されているので、これを参考に行う。

https://www.redmine.org/projects/redmine/wiki/Rest_api

# 構成図

実際は、CloudWatch metrics のアクションとして、Lambda を指定しますが、今回は Lamda からテストイベントを作成し実行させるので、CloudWatch metrics の作成は手順から省いています。
![redmine.png](h

元記事を表示

AWS Cloud9(Django)+S3+SQS+Lambda+SNS環境構築_目次

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

この記事は自分が連載(?)している『AWS Cloud9(Django)+S3+SQS+Lambda+SNS環境を作ってS3にアップロードされた時、メール通知をする』という記事をまとめた記事となります。

# 構築する環境

以下の環境を右から順番に連携させていきます。

![aws-django01-ページ6.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/426843a2-5d28-7283-96dc-22fb1cbe3e34.png)

最終的にCloud9に構築した以下のWebアプリからS3にデータをアップロードすることを可能にし、その際に自動でメール通知が飛んでくるような環境を作っていきます。

![2024050811.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/42fe1f99-36d

元記事を表示

AWS S3/SQS/Lambda/SNSにCloud9を連携し、メール通知を行ってみる[04]

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

今回はAWS S3,SQS,Lambda,SNS環境にCloud9をベースとしたDjango環境を追加して、Django経由でS3に何らかのデータがアップロードされた際にメールが通知される環境を構築していきたいと思います。
今回が想定では最後となります。

前回の記事は以下となります。

https://qiita.com/ohtsuka-shota/items/59821498db47ecbeed7d

また、DjangoからS3にデータを送るために以前私が作った以下の記事も軽く見てます。

https://qiita.com/ohtsuka-shota/items/cdb365fe164fbc48b528

全体の流れは以下にまとめています。

https://qiita.com/ohtsuka-shota/items/db74a418dabc261d9126

# 最終的な構築イメージ
以下環境を作っていきます。今回はCloud9/Djangoを実装していきます。
![aws-django01-ページ6

元記事を表示

暇つぶし2

## AWSWAFで検知したエラーをZabbixのダッシュボードに出力しつつ、Slackで通知を受け取りたい

### 1.ざっくりした仕組み
WAF→Lambda→Zabbix→slack

### 2.構築/設定が必要なもの
・環境構築
・WAFとトリガーの設定(WAFの料金高いので、設定方法だけ調べてトリガーだけ作成します。)
・Lambdaの作成
・Zabbixサーバーの構築と設定
・slack(前回使った自前のやつ)

### 3.手順

※日曜やります。

### 4.テスト
WAF高いので、トリガーを手動実行してテストします。

※日曜やります。

### 5.感想

元記事を表示

Cloud Watch AlarmをトリガーにOUでアクセス制御してSNS Topic経由でLambda起動させる

タイトルの通り、Cloud Watch Alarm -> SNS Topic -> Lambdaという構成のAWSリソースを構築しました。

当初の構成ではCloud Watch AlarmからLambdaをOUで絞って呼び出して実行させる予定でしたが、諸々問題があってSNS Topicを追加して対応した流れになります。

自身の振り返りも含めて、類似構成をプライベートのAWSアカウントで作成してみましたので、動作検証の様子も含めて記事にまとめてみたいと思います。

注:私が担当したのは要件や全体的な構成図が出来上がった状態から、必要なAWSリソースの構築や不具合の対応等です。前提となるアプリケーション設計や背景などの詳細は記載しません。

## 要件

### 実現したい事

* Cloud Watchでアプリケーション用ロードバランサー(NLB)の死活監視をする
* ステータス変更をアラーム条件として検知した際にLambdaを起動して通知をさせる
* アクセス制限方法としてOU(組織単位)による権限制御をする

### サービス概要

<登場人物>

*

元記事を表示

全自動生成AIメディアを作ってみた

# はじめに
自分で読む用に、AIが海外の生成AI関連のニュースやブログを自動で収集してきて翻訳してくれるスクリプトを書いたら、思いのほか使える感じだったので翻訳記事をブログとして公開することにしました。こちらです。

https://prompthub.info/

この記事では、やり方や記事を紹介します。部分的にでもマネすれば生成AIに限らず自分の興味のある分野のメディアが作れると思います。

# 全体的な流れ

全体的な流れとしては以下のようになります。
1. Google Alert
記事を収集します。
1. Email parser by Zapier
届いたメールをパースしてZapierに渡します。
1. AWS Lambda
記事のタイトルや本文を和訳してWordpressにポストします。

# Google Alert

https://www.google.co.jp/alerts?hl=ja

Google Alertは以下のような感じで自分の興味があるワードを設定すると、関連する記事を収集してくれてメールで届けてくれる無料のサービスです。
![google-ale

元記事を表示

API Gateway + Lambda + Puppeteer で任意の Web ページのスクリーンショットを撮って S3 に保存する

## 背景
Lambda で Puppeteer 経由で Chromium を起動して任意の Web ページのスクリーンショットを撮り、画像として S3 に保存する処理を作りたい。

## 環境
– M1 MacOS Sonoma 14.4.1
– node v20.10.0
– typescript v5.4.5
– [@aws-sdk/client-s3](https://www.npmjs.com/package/@aws-sdk/client-s3) v3.569.0
– [@sparticuz/chromium](https://github.com/Sparticuz/chromium) v123.0.1
– [puppeteer-core](https://www.npmjs.com/package/puppeteer-core) v22.7.1

## 手順
– ローカル開発環境の構築
– handler を実装
– Lambda にデプロイ
– API Gateway の設定
– S3, CloudFront の設定

## ローカル開発環境の構築
### プロジェク

元記事を表示

AWS Lambdaでrequestsを使うためのセットアップ

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

Python環境のAWS Lambdaを使うにあたってrequestsを使いたかったのですが、デフォルトのLambdaでは外部モジュールとなるrequestsは使えないようで。
これに気が付く前に、Lambdaを実行した結果が以下です。
“errorMessage”: “Unable to import module ‘lambda_function’: No module named ‘requests'”,と出ていますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/f775b7c7-2d24-a18c-d0de-2bc7fc29af2c.png)

これを解消するために、レイヤーというものを作ってLambdaに追加する必要があるようで、その手順の備忘録です。
※Cloud9で用意するのが簡単という記事を拝見したのですが、私はうまくいかずでした・・・

# 手順
レイヤーを作るにあたり必

元記事を表示

コンテナから作成したLambdaで、「Phase: init Status: timeout」になったことと解決方法

# 0. はじめに
こんにちは、yuzu_juiceです🥂
最近、Lambdaをコンテナで動かせることを知り、いろいろ遊んでいました。

# 1. 発生した事象
コンテナからデプロイしたLambdaを実行したところ、CloudWatchのログに以下のエラーが出ました。
“`
INIT_REPORT Init Duration: 10028.26 ms Phase: init Status: timeout
“`
# 2. 正しかった対応方法
Lambdaのコンソールから、環境変数を設定しました。
ローカルでテストしていた際はコードがDockerfileに設定した環境変数を参照していたため、Lambdaにデプロイ後もDockerfileに書いた環境変数が参照されるだろう、と思っていました。
実際は、コンテナからデプロイされたLambda関数は、Dockerfileの環境変数を読まず、Lambda側の環境変数を読み込むようです。

# 3. 試したけどうまくいかなかったこと
## Lambdaタイムアウト値の変更
Lambdaがタイムアウトしているのだと思い、「Lambda関数→設定→

元記事を表示

REST APIを作成してみる

# 概要

本記事は [AWSでWebアプリを構築してみる](https://qiita.com/ti_and6id/items/9670ee60965a4d10bec7) シリーズの5回目の記事です。
前回の記事は [こちら](https://qiita.com/ti_and6id/items/d329ce5e9dc838563d7f)。

# REST APIを作成してみる

## 1. Lambda 関数の作成

1. マネジメントコンソールからLambdaを開き、「関数の作成」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/f4702244-d306-223c-c187-e1469e992aac.png)

1. 「一から作成」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/ebbab1b5-1cab-6815-

元記事を表示

CloudFrontのキャッシュ削除を自動化してみる

# 概要

本記事は [AWSでWebアプリを構築してみる](https://qiita.com/ti_and6id/items/9670ee60965a4d10bec7) シリーズの4回目の記事です。
前回の記事は[こちら](https://qiita.com/ti_and6id/items/e9ef9da23b3e33116f6b)。
今回は番外編として、CloudFrontのキャッシュ削除を自動化してみます。

# キャッシュ削除を自動化する理由

開発しているときに、サイトを更新したのにCloudFrontのキャッシュにより内容が反映されるまで時間がかかってしまったり、手動でキャッシュを削除したりすることが手間に感じることがありました。
この問題を解消するためにCloudFrontのキャッシュ削除を自動化し、それにより開発効率の向上を狙います。

# CloudFrontのキャッシュ削除を自動化してみる

## 1. CloudFrontでキャッシュ削除を作成

1. [静的ウェブサイトホスティングにCloudFrontを経由してアクセスしてみる](https://qiita.

元記事を表示

LambdaのGETリクエストとNode.js Expressでのレスポンス

LambdaでのGETリクエストの自分用の覚書です。

LamdaでGETリクエストをすると、Node.jsで書かれたサーバーから「hello world」という文字を返すということをやります。

### レスポンス側 (Node.js)

フレームワークはexpressを使用

“` index.js
const express = require(‘express’);
const app = express();

app.get(‘/hello’, function(req, res) {

res.send(‘hello world’)

}
)

“`

### リクエスト側 (Python)

“` lambda_function.py
import urllib.request

def lambda_handler(event, context):
hello = get_hello()
print(hello)

def get_hello():
request = urllib.request.R

元記事を表示

Lambda 関数 URL で OAC で CloudFront 経由の実行のみを許可する

# 概要

https://aws.amazon.com/jp/about-aws/whats-new/2024/04/amazon-cloudfront-oac-lambda-function-url-origins/

# 抑えておくべき用語

## Lambda 関数 URL

API Gateway 無しに Lambda のメニューから機能を ON にするだけ HTTPS 公開ができる。

https://qiita.com/leomaro7/items/f2142431e10cd7cc470d

## OAC

指定された CloudFront ディストリビューションからのアクセスのみにする。

https://qiita.com/leomaro7/items/b9deda523f0c94a494ca

# やってみる

## Lambda 1

Lambda 関数は単純に Hello World を返すもののため省略します。

関数 URL には「**AWS_IAM**」を指定。
![スクリーンショット 2024-05-01 15.46.43.png](https://qi

元記事を表示

AWS SQS/Lambda/SNSにS3を連携し、メール通知を行ってみる[03]

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

今回はAWS SQS,Lambda,SNS環境にS3を追加して、S3に何らかのデータがアップロードされた際にメールが通知される環境を構築していきたいと思います。

前回の記事は以下となります。

https://qiita.com/ohtsuka-shota/items/4daaf14c03705ee0ad05

全体の流れは以下にまとめています。

https://qiita.com/ohtsuka-shota/items/db74a418dabc261d9126

# 最終的な構築イメージ
以下環境を作っていきます。今回はS3を実装していきます。
![aws-django01-ページ6.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/426843a2-5d28-7283-96dc-22fb1cbe3e34.png)

# 構築
## S3の作成
バケットの作成を押下します。
![image.pn

元記事を表示

AWS Lambda/SNSにSQSを連携し、メール通知を行ってみる[02]

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。
最近、とある事情でAWS関連のインプットをよくしています。

今回はAWS LambdaとSNSで構築したメール通知環境にSQSを追加していきたいと思います。

前回の記事は以下となります。

https://qiita.com/ohtsuka-shota/items/e2b62e5ab61a90807264

全体の流れは以下にまとめています。

https://qiita.com/ohtsuka-shota/items/db74a418dabc261d9126

# 最終的な構築イメージ
以下環境を作っていきます。今回はSQSを実装していきます。
![aws-django01-ページ6.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/426843a2-5d28-7283-96dc-22fb1cbe3e34.png)

# 構築
## SQSの作成
SQSの管理画面にアクセスします。キューを作成を押

元記事を表示

Amplify functionでLayerのバージョンを上げようとしたらハマった話

## はじめに
私が携わっているプロジェクトでは、AWS Amplifyを活用し、ランタイムがPython 3.8のLambda functionとLayerを使用しています。
Python 3.8のサポート終了が近いため、問題を未然に防ぐためにPython 3.12へのアップグレードを決意しました。
詳細はAWSの公式ドキュメントを参照してください。
[Lambda ランタイム](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html)

## 環境
– Amplify: 12.11.1
– Python: 3.12.2
– Pipenv: 2023.12.1

## 遭遇した問題
バージョンアップの過程で、以下のファイル内のruntimesやpython_versionを3.12に更新しました。
– amplify/backend/function/laynerName/parameters.json
– amplify/backend/function/laynerName/lib/pyt

元記事を表示

Flutterでスマホアプリから任意の内容をDynamoDBに保存

# はじめに
https://qiita.com/parayan0429/items/06c5350788afe6655171

上記で紹介したシステムのFlutter部分にフォーカスした記事です。

全体像が気になった方は上記を一読ください。
※開発背景や全体像のみの短い記事のためすぐに読み終わると思います。

## 補足
本記事はスマホアプリの開発初心者が拙いながらもFlutterで作ったアプリ開発の一部始終を紹介する内容になっています。

そのため、Flutterのベストプラクティスとかけ離れている箇所も多々あると思いますが、ご容赦ください🙇

## リポジトリ
プライベートで開発してましたが、公開しました:relaxed:
※機密情報は載せてないつもりですが、何かあれば教えてください:bow:

https://github.com/yuhara-4113-ai/Alexa-To-AI_Flutter

# 本記事の紹介範囲
1. このアプリでやっていること
1. 開発環境の紹介
1. 環境構築の手順
1. 実際のコード
1. 困ったこと

# このアプリでやっていること
1.

元記事を表示

21日目 Lambdaについてまとめてみる社畜S

## 🎏はじめに
こんにちは、ローテが一巡して順番が回ってきました、三週間ぶりの社畜Sです。
現在、私たち社畜SMLの3人は
#### 「AWS Certified Solutions Architect – Associate(通称SAA)」
の合格を目指して勉強を続けています。
というわけで、今回のローテではSAAの学習成果のアウトプットも兼ねて
#### 「AWSのサービスを初心者目線でまとめてみた。」
をテーマに書いていこうと思います!
まずは私、社畜Sが初回を飾り **AWS Lambda** についてまとめていきます!
初心者の視点からの解説ですので、間違いなどがあればコメントで指摘していただけると幸いです。
それではやっていきましょう!


## 🎏そもそもLambdaって何?

公式の開発者ガイドでは
>AWS Lambda はサーバーのプロビジョニングや管理をする必要がなく、コードを実行できるコンピューティングサービスです。
>>Lambda は可用性の高いコンピューティングインフラストラクチャでコードを実行し、コンピューティン

元記事を表示

OTHERカテゴリの最新記事