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

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

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サンプルを参考に解説します。

元記事を表示

AWS Systems ManagerからEC2インスタンスのコマンドを呼ぶときの注意点について

# はじめに
AW EC2上に配置したpythonスクリプトをAWS lambdaからSystem Manager(SSM)のRunShellScriptを利用して呼び出した際に、ログインユーザーに関する問題で躓いたので、問題の概要と解決策をまとめます。

### 参考にさせていただいたサイト
https://dev.classmethod.jp/articles/ssm-document-know/

# 問題点
SSMからRunShellScriptを実行した場合、実行ユーザーは`root`となる。
一方、EC2インスタンスに通常ログインした場合のユーザーは`ec2-user`となる。

`ec2-user`で構築した環境で動くスクリプトをSMS RunShellScriptから呼ぶと、実行時ユーザーが`root`となるため実行環境が異なり、`import module error`などが発生する。

“`bash:SSMからRunShellScriptで実行した場合
$ pwd
/usr/bin

$ whoami
root

$ which python3
/usr/bin

元記事を表示

lambdaで “Runtime.ImportModuleError” の解消

## lambdaで Youtube Data APIを使おうとしたところ、 “Runtime.ImportModuleError” が発生
今までAWSにはほとんど触れずに来たのだが、仕事で知識が必要になってきたため、Lambdaを触ってみることにした。ちょうど、家でYoutubeを見ながらエクササイズに励んでいるため、[Youtube Data API](https://developers.google.com/youtube/v3/code_samples/code_snippets?hl=ja&apix_params=%7B%22part%22%3A%5B%22snippet%2CcontentDetails%22%5D%2C%22id%22%3A%5B%228j9L9h3ODfU%22%5D%7D) で、動画のIDからの再生時間を取得する処理を作ってみることにした。コードのサンプルは、ありがたいことに、[Youtube Data API](https://developers.google.com/youtube/v3/code_samples/code_snippets?

元記事を表示

【CloudWatch】アプリケーションのユーザ離脱を監視する【カスタムメトリクス】

# やったこと
– Webアプリケーションのユーザ離脱数をCloudWatchカスタムメトリクスとして取得する
– ユーザ離脱は、ユーザが異なるページに遷移しようとする「beforeunload」イベントを監視することで簡易的に検知
– 「beforeunload」イベント発生時に、正常に漏れなくCloudWatchにデータを送信できるよう、Beacon APIを使用する。

# 構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/992414/e95e6f5a-d8ab-0ec9-4fc3-29d993edf112.png)

# バックエンド
一般的なAPI GatewayとLambdaの構成をとる。
API GatewayにPOSTメソッドを作成し、LambdaプロキシでLambdaと紐づける。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/992414/2aeda944-e929

元記事を表示

AWS Lambda から Power Automate の Teams Incoming Webhook コネクタの挙動をテストする

# はじめに
Microsoft (以下MS) が、Teams内のOffice 365コネクタを廃止することを発表しました。
これにはIncoming Webhookも含まれ、記事執筆時点では、以下のスケジュールが設定されています。

* 2024年8月15日: 新規コネクタの作成が停止し、これ以降、新規にIncoming Webhookを利用する場合、Power Automateのワークフローでコネクタを介して受信する方式に対応する必要あり
* 2024年12月31日: 既存のWebhook URLが無効化される予定 (ただし、URLを更新すれば2025年12月まで利用可能)

最新の情報は、以下のMS公式サイトをご参考ください。

Retirement of Office 365 connectors within Microsoft Teams

AWSユーザーも、**[AWS Health Aware](https://aws.amazon.com/jp/blogs/news/aws

元記事を表示

AWS-Parameters-and-Secrets-Lambda-Extensionを試す

## 背景
Lambda上でSSMパラメータストアの値を都度取得するのが嫌で調べてたら以下を見つけたので試して見る

https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/retrieving-secrets_lambda.html#retrieving-secrets_lambda_env-var

* Lambda Layer は以下を指定
`arn:aws:lambda:ap-northeast-1:133490724326:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11`

## コード
“` typescript:index.mjs
import {SSMClient, GetParameterCommand} from ‘@aws-sdk/client-ssm’;

export const handler = async () => {
const path = “/hoge/secure/params”;

元記事を表示

AWS API GatewayでLambdaプロキシ統合を設定する方法

AWS API Gatewayを使用してLambda関数をプロキシ統合する際に、正しいレスポンス形式を使用しないと500エラーが発生することがあります。
本記事では、Rubyで書かれたLambda関数を使用して、正しいレスポンス形式を返す方法について説明します。

# Lambdaプロキシ統合とは
Lambdaプロキシ統合は、API Gatewayが受け取ったリクエストをそのままLambda関数に渡し、Lambda関数からのレスポンスをそのままクライアントに返すシンプルな統合方法です。
この統合方法を使用することで、リクエストやレスポンスのマッピング設定を簡略化できます。

# 正しいレスポンス形式
Lambdaプロキシ統合を使用する場合、Lambda関数は以下の形式でレスポンスを返す必要があります:
“`json
{
“statusCode”: 200,
“headers”: {
“Content-Type”: “application/json”
},
“body”: “{\”message\”:\”success\”}”
}
“`

bodyフィールド

元記事を表示

AWS Lambda上で「LINE Messaging API SDK for Python」を使ったコードをデプロイしてLINE Botを作ることを楽しむ

# はじめに

LINEの[Messaging API](https://developers.line.biz/ja/services/messaging-api/)を使ってオウム返しをするボットを作ります。

こちらの記事をとても参考にしています。ありがとうございます。

https://qiita.com/w2or3w/items/1b80bfbae59fe19e2015

LINEボットはWebhookを受け取って反応するものを作ればよいので、[Amazon API Gateway](https://aws.amazon.com/jp/api-gateway/)と[AWS Lambda](https://aws.amazon.com/jp/lambda/)の組み合わせでサクッと作れます。

大部分はさきほど紹介した上記記事をなぞってもらえばできます。
この記事では、[LINE Messaging API SDK for Python](https://github.com/line/line-bot-sdk-python)を[AWS Lambda](https://aws.am

元記事を表示

Lineでよさそうな部屋を紹介してくれるボットを作成する

# 借りる部屋を簡単に探したい
部屋を借りるときにSuumoなどのサイトを使って部屋を検索することができる。しかし、以下の理由により既存のサイトでは使いにくさを感じた。
・同じ物件を複数の不動産屋が掲載していて省きたい
・検索結果の情報量が多いので必要な情報だけを一覧で確認したい
・検索条件がある程度固定されている中(1人暮らし、家族向けなど)で物件同士を比較したい
・電車の中などで短時間で手軽に物件検索したい

そこで、これらの課題を解決するアプリを開発した。

# Lineで簡単に良さそうな物件を紹介してくれるボットの作成
Suumoから自分の探したい条件の物件を簡単に比較できるようなLineボットを作成した。
自分の探したい物件の情報としては、「神奈川県の北東寄り」「間取りは2LDK以上」、「家賃は15万円以下」などがあり、こちらに該当する物件が今回借りたい部屋の条件である。
また、物件同士で比較したい条件は「家賃」、「敷金/礼金」、「間取り」などがある。
詳しい検索条件、比較内容については以降で記載する。
以下完成したLineボットで物件について検索している画面である。
駅名や

元記事を表示

AWS LambdaでSupabaseを使用したらNo module named ‘pydantic_core._pydantic_core’が出た時の対処

## 問題
AWS LambdaでPythonからSupabaseを使用しようとしたら,
“`エラー
No module named ‘pydantic_core._pydantic_core
“`
と表示された.

## 原因
Supabaseで使用されているfastapiのバージョンが高すぎると動作しない様子.

## 解決策
fastapiのバージョンを下げてインストールした後に,Supabaseモジュールをインストールする.
“`
pip install -t ./python fastapi==0.99 supabase
“`
ここではfastapiのバージョンを0.99に指定している.

元記事を表示

タグベースによるEC2インスタンスの夜間停止によるコスト削減

https://github.com/koishitori/Lambda_function_EC2InsetanceChangeState
# 背景

このAWS Lambda関数は、タグ値で制御してEC2インスタンスの起動や停止を行うことができます。EventBridgeを使用した夜間の定期停止や、AWS Change Calendarを利用した不定期な長期停止など、様々なシナリオで活用できる汎用的なEC2インスタンス管理ツールです。Spotインスタンスの停止ができるようになったので、さらなるコスト削減のために作りました。

## 実行環境
### エンジン
Python3.12
### 環境
Lambda

## 関数の概要

この関数は以下の構造のJSONペイロードを受け取ります:

“`json
{
“region”: string, # 対象リージョン
“tagName”: string, # 対象EC2インスタンスのタグ名
“action”: string, # start(起動)またはstop(停止)
“test”: bool # テスト

元記事を表示

akippaの予約CSVからGoogleカレンダーに転記するLambda関数 #2

バックオフィスが生成AIでがんばるシリーズです。今回はプライベートで利用している[akippa](https://www.akippa.com/)の予約情報取得からGoogleカレンダー転記の自動化についてやっていきます。
1回目は[こちら](https://qiita.com/norifumiishii/items/c618547e49d7e97a1bde)
# Lambdaにレイヤーを準備する
今回GoogleカレンダーAPIを使用するのにあたり、Google系のライブラリをレイヤーで使用します。
ちなみに私LambdaでPythonを使用する際にライブラリはレイヤー機能で使用するというのを初めて知りました。
Windows11でPowershellを使用してレイヤーに使用するzipファイルを作成していきます。
1. 作業用ディレクトリを作成します
“`shell
mkdir lambda_project
cd lambda_project
“`
1. 仮想環境を作成して有効化する
“`sh
python -m venv ven

元記事を表示

OTHERカテゴリの最新記事