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

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

【AWS】Lambda関数削除手順【Lambda】

1). Lambdaを開き、削除対象の関数のラジオボタンを押し、「アクション」から「削除」を選択します。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817084/bbcde979-f26b-8bc1-9ea2-b6d17051ee2f.jpeg)

2). 赤枠に「削除」と入力し、「削除」を押します。
![2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817084/a399c879-2cb7-4fb7-2863-b1e384e5f296.jpeg)

3). 正常に削除されたことを確認して「閉じる」を押して完了です。
![3.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817084/77b2d509-ea72-ee8a-e93f-7f02bca959c0.jpeg)

元記事を表示

【Lambda】pythonの画像処理ライブラリのPillowをインポートするのに手間取った話

どうもこんにちは。

今回は、AWS Lambdaを使用してPillowをインポートしようとした時につまづいたのでメモしておきます。

# Pillowってなに?

そもそもPillowって何って話ですが、以下の記事にはこのように記載されていました。

> OpenCVのようにコンピュータービジョン系の高度な画像処理(顔検出やオプティカルフローなど)はできないが、リサイズ(拡大・縮小)や回転、トリミング(部分切り出し)のような単純な処理が簡単にできる。

https://note.nkmk.me/python-pillow-basic/

ほうほう…

今回は、base64エンコードされた画像データをバイナリデータに変換し、さらにバイナリデータから画像を読み込んで画像オブジェクトに変換してS3に保存するというなんともめんどくさい処理をする必要があるので、Pillowを使用しています。

“`python
# 画像生成試してます
response = bedrock_runtime.invoke_model(
body=body,
modelId=”amazon.t

元記事を表示

AWS LambdaでHIPHOPを配信するLINEbotをつくる

AWSの勉強のために、AWS Lambda+LINEのMessaging API+spotifyAPIでおすすめのHIPHOPを配信するLINEbotを作成しました。

AWS、Messaging API、spotifyAPIのいずれも触ったことがない状態からのスタートでしたが、形にすることができたので開発の方法を紹介していきたいと思います。

## 1.完成したもの
まずは今回開発したプロダクト(?)を紹介します。
開発したのはLINEの公式アカウントで、何かしらのテキストを送信すると曲のアーティスト名、曲名、spotifyのURLが返ってくるというものです。

送信される曲は、プレイリストの中からランダムで選択されています。

処理の全体の流れは以下のようになります。
1.ユーザーがLINE公式アカウントにメッセージを

元記事を表示

【AWS】Lambdaを使ってRDSのdumpファイルをS3に保存する

以下の手順で、LambdaとRDSを同一VPCに配置し、S3にデータベースのdumpファイルを保存する環境を構築します。

## 前提条件

– AWS CLIがインストールされ、適切に設定されていること(バージョン2.0以上推奨)
– Terraformがインストールされていること(バージョン1.0以上推奨)
– Python 3.8以上がインストールされていること(Lambda関数の開発用)

## 手順

### VPCの設定

既存のVPCを使用するか、新しいVPCを作成します。VPCには少なくとも2つのサブネット(プライベートサブネット)が必要です。

Terraformを使用してVPCを作成する例:

“`
resource “aws_vpc” “main” {
cidr_block = “10.0.0.0/16”

tags = {
Name = “main-vpc”
}
}

resource “aws_subnet” “private_1” {
vpc_id = aws_vpc.main.id
cidr_block = “10

元記事を表示

AWSのlambdaを使って、KubernetesがダウンしたらSlackにアラートを流すようにしてみた

## はじめに

前回は Alertmanager を使って、Kubernetes で異常が生じた際に、Slack にアラートが流れるようにしました。

https://qiita.com/piny940/items/1e44d8caf936216ca93e

しかし、Alertmanager を Kubernetes クラスタ上に立てているため、クラスタごとダウンした際にはそれをアラートで気づくことができないという課題があります。

そこで今回は、Alertmanager のサービスの起動状況を監視する lambda を使用して、Alertmanager がダウンした時に Slack にアラートが送信されるようにしていこうと思います。

完成したコードはこちらから確認できます。

https://github.com/piny940/infra/tree/main/service-monitor

## 実装

コード自体は、Alertmanager のヘルスチェック用のエンドポイントにリクエストを送って、200 が返ってくるかを確認するだけのものです。

3 回リクエストをして、3

元記事を表示

AWS SAM 覚え書き

SAM の記事なんて今さらですけどねー。今まで長らくお世話になってきた Serverless Framework が v4 からはどうも商用では有償になるらしいですし(厳密には組織の収益規模によるようですが、細かいことは気にしない…)、Serverless Framework を使い続けることで Dependabot くんに「脆弱性あるよ早く対処しな!」と頻繁にせかされるのもいいかげんしんどくなってきたので、SAM に乗り換えるのもいいかな、と。 ~~CDK はコードをぐちゃぐちゃ書かないといけないのでメンドクサイ~~

ここでは、忘れそうになることを箇条書きでメモするだけです。役に立つ記事とかそういうのはよそを当たってください…。

## Lambda 実行ロール

Lambda 実行ロールへの基本的な管理ポリシーの付与は SAM が暗黙にやってくれるので、S3 とか DynamoDB とか自分のリソースへのアクセス権限をポリシーテンプレートなりなんなりで追加すればよい。

– 何も書かなくても、自動的に `AWSLambdaBasicExecutionRole` ポリシーが付与され

元記事を表示

AWS環境構築時のハマりポイント備忘録①

本記事は私がAWS環境構築をするなかでうっかり忘れてハマってしまうポイントを今後のためにまとめたものです。

## 1. DBを作成する前にサブネットグループを作成すること
サブネットグループは複数のサブネットにまたがるグループであり、サブネットを作成後に別途作成が必要。

例)プライベートサブネット(az-a)と(az-d)があるとした場合、それらをサブネットグループとして事前に作成した上でRDSに紐づける必要がある。

:::note warn
RDS作成時に紐づけるサブネットもしくはサブネットグループを紐づける必要があり、RDS作成後はその設定を変更することができない。
変更したい場合はRDSの再作成が必要(時間がかかる)
:::

## 2.VCP内にLambdaを配置しRDSと内部通信する場合
AWSはLambdaをVPC外に配置することを推奨しているが、LambdaとRDSを内部通信させたい場合はVPC内にLambdaを配置する必要性が出てくる。
サブネットのプライベートIPアドレスを浪費するため、他のAWSリソースに影響が出ないようLambda専用のサブネットを用意するこ

元記事を表示

LINE×AWS Lambda×Notionで支出管理用Botを作ってみた

## 経緯
これまで家計の立て替えを行った際には忘れないようにNotionで作成した支出管理用のテーブルに直接入力しておりました。

ただスマホから入力するにあたりNotionアプリの起動→対象のページに移動→1つ1つセルを選択して項目や金額や日付を埋める等手間が多く、同居人がめんどくさがって自身で入力してくれないという悩みがありました。

そこでその悩みを解決すべく考えたのが、LINEに項目と金額を入力して送信すれば勝手にNotionのテーブルに内容を反映してくれる仕組みになります。

## 作ったもの
今回作成した仕組みの全体アーキは以下のようにLINEとAWS LambdaとNotionを組み合わせたサーバレス構成になります。

![全体像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625929/fbfc2b94-ae52-9088-8e4f-3a00e44f7556.png)

作成したLINEのBotとのトーク画面で「項目 金額」と入力することでNotionに登録され、以下のようなレスポン

元記事を表示

lamda関数を新規作成した メモ

lamda関数を新規作成した

前提 : vpc、elastic ipの設定は終わっている
lamda作成ユーザにIAM権限が必要(ロール割当で必要になる)

1. サービスからlamdaを選択
2. 関数の作成
・ 一から作成 (あくまで自分の場合)
を選択
・ 関数名
任意でつける
・ ランタイム
nodejs20を選択
・ アーキテクチャ
x86_64 (特に何も考えず)

・ デフォルトの実行ロールの変更
→ 基本的な Lambda アクセス権限で新しいロールを作成
を選択した。(使いまわしのロールなければこれで良さそう)
→ この時はS3の権限が必要だったので以下を追加

“`
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “VisualEditor0”,
“Effect”: “Allow”,
“Action”: [
“s3:PutObject”,
“s

元記事を表示

AWSのLambda(zip)をLambda(Image)として動かす

# この記事について

AWSのLambdaには、`zip`と`Image`の形式があります。
この2つの形式にはいくつかの違いがあります。一部を上げると、下の表のような違いがあります。

||zip|Image|
|:–|:–|:–|
|実行環境|AWSが提供したもの|自由|
|デプロイにかかる時間|数秒、ライブラリによっては数分|数分~数時間|
|Web上でソースを編集|ライブラリが小さければ可能|不可|
|デプロイできるファイルサイズ|50MBまで|10GBまで|
|docker|不要|必要|

この記事で紹介する実行方法は、`zip`と`Image`のいいとこどりをします。

||zip+Image|
|:–|:–|
|実行環境|自由|
|デプロイにかかる時間|数秒|
|Web上でソースを編集|可能|
|デプロイできるファイルサイズ|10GBまで|
|docker|不要|

`zip`としてソースコードをデプロイしながら、`Image`の自作ランタイム上で動かします。

# 実際に動かしているところ

実際に動かしているところをキャプチャで紹介します。
ginza(※

元記事を表示

【AWS】Lambdaレイヤーの作成とアップロード手順

AWS Lambdaで`mysqldump`コマンドを使用するために、Lambdaレイヤーを作成し、ローカルのWindows端末にダウンロードしてからAWSコンソールでアップロードする手順を解説します。

## EC2インスタンスでのLambdaレイヤーの作成

まず、必要なライブラリを含むLambdaレイヤーをEC2インスタンス上で作成します。

### 必要なディレクトリの作成

“`bash
mkdir -p lambda-layer/lib
“`
### 依存ファイルの調査
mysqldumpコマンドが依存しているライブラリを調べるためには、lddコマンドを使用します。以下のように実行します。

“`bash
ldd /usr/bin/mysqldump
“`

実行結果には、mysqldumpが依存しているライブラリが一覧表示されます。例えば、以下のような出力が得られます。

“`bash
linux-vdso.so.1 (0x00007ffe347fb000)
libssl.so.3 => /lib64/libssl.so.3 (0x00007f025a2b100

元記事を表示

LambdaのRubyでGitLabにリポジトリを作成、削除する

## ruby版
AIにシェルからlambda用に変換してもらったらあっさり動いた。
RubyでGitLabにリポジトリを作成、削除する機能です。

### リポジトリ作成
– https://github.com/tmoritoki0227/gitlab_project_create/blob/main/create_project.rb
– https://github.com/tmoritoki0227/gitlab_project_create/blob/main/projects_and_branches.txt

### リポジトリ削除
– https://github.com/tmoritoki0227/gitlab_project_create/blob/main/delete_project_all.rb

元記事を表示

Python lambda関数、使いどころはここ!1行で書けるアロー関数風の魔法

## はじめに
こんにちは、Pythonエンジニアの皆さん!今回は、Pythonの中でも特に便利で魔法のような機能を持つlambda関数について、その使いどころと魅力をご紹介します。lambda関数は、1行で書けるアロー関数風の短い関数で、コードをよりシンプルかつ読みやすくする強力なツールです。

## lambda関数とは?

lambda関数は、Pythonの匿名関数です。通常の関数定義(`def`キーワードを使用)とは異なり、名前を持たず、1行で記述できます。構文は以下の通りです:

“`python
lambda 引数: 式
“`

## lambda関数の魅力

1. **簡潔性**: 1行で関数を定義できるため、コードがスッキリします。
2. **一時的な使用**: 一度しか使わない小さな関数に最適です。
3. **可読性**: 適切に使用すれば、コードの意図が明確になります。
4. **関数型プログラミング**: `map()`、`filter()`、`reduce()`などの関数と相性が良いです。

![image.png](https://qiita-image-

元記事を表示

AWSマネジメントコンソールログイン通知をメールで受け取る

## 概要
AWSマネジメントコンソールにログインしたイベントを、メールで通知させる仕組みを構築します。知らないところで誰かに勝手にログインされても気がつけるようになります。CloudFormationテンプレートで、簡単に導入できるようにしました。

## 構成
今回構築するシステム構成です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/fa201630-ed52-46a7-2f78-ad1b2f6a2529.png)

## 通知サンプル
以下のようなメールを受け取ることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/607b8c69-a3dd-4dbe-8253-431f347b45d9.png)

※ログ情報の一部をそのまま連携しただけなので、見た目が悪いです。本文の修正は、別の記事で紹介する予定です。

## 各コンポーネントの設

元記事を表示

Lambdaレイヤーについて

## はじめに
Lambdaレイヤーについて、整理してみました。
Lambdaレイヤーとは、Lambda関数で使用するライブラリ、カスタムランタイム、設定ファイル、その他の依存関係をパッケージ化して共有するための機能です。レイヤーを使用することで、コードの再利用、デプロイの簡素化、バージョン管理が容易になります。レイヤーの作成と使用は、依存関係をディレクトリに配置し、ZIPファイルに圧縮してアップロードすることで簡単に行えます。また、不要になったレイヤーバージョンは削除することができます。これにより、複数のLambda関数で共通のコードやライブラリを効率的に管理できます。

## Lambdaレイヤーの利点

**1.コードを再利用することができる**
共通のライブラリや依存関係をレイヤーとしてパッケージ化することで、複数のLambda関数で再利用できます。

**2.デプロイをシンプルにすることができる**
レイヤーを使用することで、関数コードと依存関係を分離できます。

**3.バージョンを管理して、依存関係の変更が他の関数に影響を与えないようにすることができる**
レイヤーはバー

元記事を表示

Lambda内でファイルダウンロードができない?そんなときはtmpを疑え

# はじめに
昔ハマったところの記事書き直し。

#### 【対象読者】
– Lambda初心者
– Lambda内でファイル作成・s3からのダウンロードなど行いたい人

#### 【使用環境】
– AWS S3
– AWS Lambda
– Python=3.10
– boto3

# 本題
lambda上でPython boto3ライブラリを使用しS3からファイルをダウンロードしていたときのこと。

以下のようなエラーが発生し、ダウンロードができませんでした。

“`
[Errno 2] No such file or directory: ‘/item/6534.pbf.C92d54EC’
“`

No such file or directoryなので「そんなファイルないよ!」って状態。

(よく見ると以下の「ないよ!」と言われているファイル名、なんか変な拡張子がついてますね。)

“`
‘/item/6534.pbf.C92d54EC’
“`

ちなみにこの状況、lambda上の同じ/item/階層で、**新しいファイル作成** もできません。

# 解決策

元記事を表示

CloudFront で 画像最適化を行う 〜 Lambda Function URLの利用

# 初めに
何番煎じだというネタですが
サイトを運営する場合、画像の最適化は基本的な考慮事項だと思います。
特にtoC向けにサイトを提供する場合、サイトの表示速度はGoogle の検索スコアにも影響を与えるため、スマホやPCなど各プラットフォームごとに画像を最適なサイズやフォーマットで配信することがとても重要です。
ただ、サイトのページが対象にあったり、ユーザー投稿型の場合、自動でさまざまなサイズの画像を用意するのは難しいことが多いと思います。
もちろん、バックグラウンドで処理を行うというのが一般的ではありつつも、配信時に自動でリサイズしてくれるとバックエンド処理の考慮がなくなり、運用が楽になります。
そのため、現在多くのCDNで自動の画像最適化に対応しています。例えば、Akamiの場合は [Image & Video Manager](https://www.akamai.com/ja/products/image-and-video-manager) がありますし、Cloudflare であれば[Image Optimization](https://developers.clou

元記事を表示

[Django] LocalStack+SQS+S3+Lambdaを使ったCSVファイルを非同期でimportしよう!

## 概要
SQSとS3とLambdaを使った非同期処理をローカル上でLocalStackを用いて再現する方法について解説します

## 前提
– Djangoのアプリケーションを作成済み
– SQSとLambdaとS3に関する基本的な知識を有している

## 今回実装する非同期処理の仕組み
①APIを使ってS3にCSVをアップロードします
②アップロードする際にSQSを使ってアップロード履歴のIDを送ります
③SQSのメッセージ送信をトリガーにLambdaを実行し、Lambda内でS3内のCSVのデータをDBにInsertするAPIを実行させます
④SQSのメッセージ内のIDを利用して該当するアップロード履歴テープル内のFileFieldを参照してアップロード処理を実行します

CSVの処理状況についてはアップロード履歴テーブル内にステータスのカラムを作成して履歴一覧から進捗状況を把握できるようにします
処理の流れは下記の画像の通りです

![lambda-s3-sqs.drawio.png](https://qiita-image-store.s3.ap-northeast-1.a

元記事を表示

TerraformでAWS Lambda + API GatewayのサーバーレスAPIを構築する方法

## はじめに

この記事では、Terraformを使用してAWS LambdaとAmazon API Gatewayを組み合わせたシンプルなサーバーレスAPIをデプロイする方法を解説します。aws-terraform-sandboxプロジェクトのs05_api_lambda環境を例に、ステップバイステップで実装方法を紹介します。

元記事を表示

TerraformでAWS Lambda関数を作成する方法:シンプルな実装ガイド

## はじめに

AWSのサーバーレスコンピューティングサービスであるLambdaは、アプリケーション開発において非常に強力なツールです。本記事では、Terraformを使用してAWS Lambda関数を簡単に作成する方法を、aws-terraform-sandboxプロジェクトのs04_simple_lambdaサンプルを参考に解説します。

元記事を表示

OTHERカテゴリの最新記事