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

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

【AWS Lambda関数作成】Lambda関数の開発とデバッグ

## はじめに
【AWS Lambda関数作成】Lambda関数の開発に関しての備忘録です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇

## 🦁**結論**🦁
## 作成手順
1. 関数の作成
2. エディタにて関数作成(AWS Lambdaに直接でも可能)
3. Lambdaにアップロード
4. デバック(テスト)の実施

:::note info
押さえておくべき点
* lambdaはサーバーレスコンピューティング
* サーバーレスコンピューティングはユーザーインターフェイスを持ってないためヘッドレスブラウザが必要になる。
* loggerを使ってログを残すことを行う
* **headlessのWindowサイズは1200×1000**
* サーバーのデータのやり取りは基本は「json形式」
* 関数の最後にレスポンスの定義をする。

:::
***

:::note alert
注意点
* ほとんどのコードを関数の中に書き込む必要がある(変数定義、空の

元記事を表示

AWS Lambdaの超基本的なTips

## この記事について

この記事は [SUPER STUDIO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/superstudio) の16日目の記事になります。

## 前提

最近、業務でLambdaをゴリゴリに扱うプロジェクトに配属されており、ちょっとしたコツとか意識しなくてはいけないポイントが見えてきたので備忘録的に書いていきます。

超基本的な内容ばかりで恥ずかしいですが、意識しないと抜けることもあるので。

## 15分の限界を超えないようにする

これはもはや意識するまでもないLambdaの最も基本的な制約ですね。
1回のLambdaで処理できるプロセスは15分を超えることができません。15分を超えるとTimeOutします。

“`
Task timed out after 3.00 seconds(TimeOut3秒の場合)
“`

これはそもそもLambda自体が長期間の稼働を前提とする重い処理を想定していないからですね。すぐ終わる軽量な処理を(インフラの面倒を見る必要なく)簡単にたく

元記事を表示

Python3.11 x Flaskで開発環境を構築する。

本投稿はMIXI DEVELOPERS Advent Calendar 2023の16日目の記事です。
他の記事も面白いものが多いのでぜひ見てください!

https://qiita.com/advent-calendar/2023/mixi

## 目的
LambdaでちょっとしたAPIを作りたいって時ありますよね?
私はPythonを選択する時が多いのですが、ここではPythonとAPI作成でよく使用するFlaskの開発環境を構築していきます。

## 前提条件
– macユーザ
– Homebrewがインストール済

## 手順
## pyenv
Pythonのバージョンを管理するpyenvをインストールする。
“`
$ brew install pyenv
“`

## Python
pyenvを使用してPythonをインストールする。
今回はlambdaに使用したいので、[こちらのページ](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html)から利用できる最新版をインストールする

元記事を表示

AWS_Lambdaを用いた集計_前編

## 【はじめに】
本記事は、AWS LamdaおよびQuickSightを用いた、Qiita投稿記事投稿状況の可視化例をご紹介します。
記事内容に関しては前編と後編に分けてご紹介予定です。
※投稿状況の集計対象となるQiita投稿者アカウントのトークンを知っていることが前提となります。
※投稿状況の集計は、Qiitaが公開しているAPIを用います。

## 【実装内容】
今回の記事においては
・Lambda
・S3
・EventBridge
・QuickSight
・Glue
・Athena
上記AWSサービスを用いる。

最終的な実装イメージ図は以下の通り、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528832/1c7273bf-5a51-662d-3585-bd9b2e9bd285.png)

## 【前編での実装の流れ】
①S3バケットの作成
②Lambda関数の作成
③ETL確認作業
④EventBridgeの設定
前編の実装イメージ図は以下の通り、
![image

元記事を表示

【AWS Lambda関数作成】Python(local環境)の開発

## はじめに
Python(local環境)の開発に関しての備忘録です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇

## 🦁**結論**🦁
まずは全体図を作成していくこと

:::note info
押さえておくべき点
* APIGateway は最大30秒でタイムアウトしてしまうため対策が必要。「Lambda発火API」と「Lambda状態取得API」のAPIが必要になる。(このサイトに全てが書かれてる)
* 「Lambda発火API」は30秒タイムアウトを回避するためにリクエストする
* 「Lambda状態取得API」に実際の処理をリクエストする
* リクエスト、レスポンスは基本json形式
* インターバルの設定により、実際の処理経過を確認してる。
* インターバルにて’status’を確認してる(RUNNINGが読み込み中、SUCCEEDEDが成功)
* ArnはAWSの各機能のアドレス
* Local環境に必要なのは「各APIのロールにあるURL」
:::
***

::

元記事を表示

TerraformでAWSサービスの情報をコード化する方法

# できること

– AWSサービスの情報をコード化(文書ファイル)にすることができる
– terraformerでコード化できないものに対応できる
– Lambda、S3が該当する

# 前提条件

– VSCodeが使えること
– AWS CLIが使えること
– Windows端末であること

# Terraformのインストール方法

1. 下記URL内から「Windows」を押下し、「AMD64」の方をダウンロードする。
– https://developer.hashicorp.com/terraform/downloads
2. ダウンロードしたzipファイルを解凍する。その中の「terraform」アプリを、コード化したファイルを置きたいディレクトリにコピーする。
3. コード化したファイルを置くディレクトリで、「main.tf」ファイルを用意する。ファイルの中身は以下の入力をする。awsに対応するversionは下記URLから抽出する。
– https://registry.terraform.io/providers/hashicorp/aws

元記事を表示

Cognito idTokenをAPIGW&Lambdaで受け取ってデコードする

Cognito idTokenをAPI GW&Lambdaで受け取ってデコードする手順についてのメモ書きです。

# やりたいこと
1. Cognitoでログインし、idToken(jwt)を払い出す。
1. 手順1のidTokenを利用し、APIGWで作成された認証必要なAPIを呼び出す。
1. Cognito Authorizerでユーザー認証を行い、バックエンドのLambdaを起動する。
1. Lambdaで手順1のidTokenを受け取り、デコードする(emailなどのユーザー情報を取得する)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954734/050e7c0f-7fe5-dc09-8773-9ae8bb98a333.png)

# Cognito Userpool
– Userpoolの作成手順は割愛します。
– idTokenの払い出しについて、SDKなどを使うことも可能ですが、今回はホストされたUIを使います。(コールバックURLはいったんlocalhostと

元記事を表示

会社のデータ分析環境をAWSで整えた話

この記事は[Wano Group Advent Calendar 2023](https://qiita.com/advent-calendar/2023/wano-group)の15日目の記事となります。

## 経緯

私は2023年2月に[TuneCore Japan](https://www.tunecore.co.jp/features)1人目のData Analyticsチームメンバーとして株式会社WANOに入社しました。

当時は、開発チームがMySQLのテーブルデータをS3へ格納したものを見たいメンバーがTableauで見るという状態で、適切な分析の為のテーブル環境が整っていませんでした。

そこで、みんながデータ活用できるような環境をAWSで作っています。
現時点でまだ足らない箇所もありますが、現時点の内容を紹介したいと思います。

### 構成図

#### 旧

![Tableau利用環境(旧).drawio (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635079/

元記事を表示

VPC有効化の時Lambda関数のIPアドレス消費数

Lambda関数のVPC設定を有効化する場合、Hyperplane ENIが必要なので、プライベートIPアドレスが1つ消費されます。

ただし、必要なHyperplane ENIが既に存在する場合、Hyperplane ENIが再利用されるので、プライベートIPアドレスは消費されません。

Lambda関数作成時にVPCを有効化すると、通信に使用されるHyperplane ENIが作成されます。指定されたサブネットのIPアドレス範囲から、Hyperplane ENIにIPアドレスが割り振られるので、IPアドレスが消費されます。

一意のサブネットとセキュリティグループの組み合わせを定義してHyperplane ENIが作成されるので、組み合わせが既に存在する場合は、Lambda関数は既存のHyperplane ENIを再利用します。

Lambda関数実行時は、Hyperplane ENIを介して通信が実施されます。

Hyperplane ENIの制限としては、1つHyperplane ENIで最大65000接続を行うことが可能です。そのため、例えば110000個VPC有効化Lamb

元記事を表示

【AWS】Connectを利用して自動電話通知機能実現

従来、業務サーバーは障害発生時、CloudWatchLogsにログを溜めてメールにて監視担当者に通知する仕組みかと思いますが、データセンター等大規模障害は発生したら、メールサーバーも使えなくなり、従来の障害検知時の通知仕方では、通知できなくなる課題がありました。
メールサーバーの不調や大規模障害発生時も、監視担当へ支障なく通知できるよう監視仕組みを見直しました。メールではなく、AWS Connect機能を利用して自動電話通知できるよう対応をしました。
■構成図(サーバー等の記載は割愛とします)
![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600067/39fce7b2-849d-0221-6f4e-8a0391e01ab1.png)

■設計ポイント
AWS Connectでの自動電話通知は、後で履歴を追跡できるようDynamoDBで電話履歴を残す。
AWS Connectで予め取得した発信者電話番号は、業務上使いませんので、もし電話が来る場合、業務用の電話番号を自動的に案内する。

■AW

元記事を表示

【初心者向け】AWS ELEMENTAL MEDIACONVERTでのスムーズな動画変換ガイド

この記事では、MediaConvertとLambdaを利用して動画ファイルをMP4形式に変換し、完了またはエラーのステータスに関する通知を電子メールで受け取る方法を共有します。開発フレームワークはAWS Amplifyです。

## 動画ファイルの変換と配信の効率化

動画ファイルのサイズを圧縮し、ストリーミング速度を向上させ、データ転送のコストを削減するためには、Amazon Elastic TranscoderまたはAWS Elemental MediaConvertなどの動画変換サービスを利用することができます。

## AWS Elemental MediaConvertの概要
### [AWS Elemental MediaConvert]​​って何?
AWS Elemental MediaConvertは、ファイルベースの動画変換サービスであり、放送レベルの機能を備えています。これにより、オンデマンド(VOD)の動画コンテンツを容易に作成し、大規模な多画面配信が可能となります。

### AWS Elemental MediaConvertの主な機能は、以下のとおりです

元記事を表示

AWS Lambdaでサーバーレスプログラミングをマスターする🚀

## 🌱 プロジェクトの背景: 「スマートガーデニングシステムの革新」

考えてみましょう。あなたは「スマートガーデニング」という革新的なプロジェクトに取り組んでいます。目標は、植物の成長を最適化するために、温度、湿度、土壌の状態をリアルタイムに監視する高度なシステムを開発することです。しかし、一つの大きな課題が立ちはだかります。これらのデータを効率的に処理し、適切なタイミングで植物に水や栄養を供給するためには、連続して稼働するサーバーが必要ですが、これは高い維持費と管理の複雑さを意味します。

## 🌟 AWS Lambdaの導入

AWS Lambdaは、このようなシチュエーションに最適なソリューションです。サーバーのプロビジョニング(実際の物理サーバーを準備し、使えるように設定すること)や管理の必要がなく、必要な時にのみコードを実行するリソースを提供します。センサーからのデータがLambda関数をトリガーし、必要な処理を行います。処理が完了すれば、Lambdaは自動的にシャットダウンし、リソースの無駄遣いを防ぎ、コストを削減します。
なんかAirbnbみたいですよね。

## ✅

元記事を表示

ソラカメで撮影した風景から GPT-4V で富士山を探す

:::note info
この記事は [SORACOM Advent Calendar 2023](https://qiita.com/advent-calendar/2023/soracom) の14日目の記事です。
前日の記事は「[ATコマンドを使って SORACOM に SMS を送信する](https://qiita.com/shozoo/items/2070681c034be9829404)」でした。
:::

## 作成のきっかけ

私が現在所属しているソラコムのオフィスからは、この時期富士山がきれいに見えることがあります。私はどちらかというと家で仕事したい派なのですが、「オフィスから富士山が見えるぞー」という情報があれば出社したくなるかもと思い、日次で富士山チェックをしてみようと思いました。

また、2023 年は生成 AI で非常に盛り上がった年だったので、何か作ってみたいなと思ったのが率直なきっかけです。Open AI は新機能を多くリリースしましたが、特に画像の扱いができそうだったので試してみることにしました。

https://openai.com/researc

元記事を表示

[13日目] 学校の食堂をIT化させる話 LINE Messaging APIで作る食堂IT化(後編)

こんにちは、なりかくんと申します。
この記事はなりかくん Advent Calender 2023の13日目の記事です。

この話は、1日目から始めた学校の食堂をIT化させる話の続きとなります。前回は、LINE Messaging APIとGASを使ったものについて紹介しました。今回は、LINE Messaging APIとPythonを使ってLINE Botを作りたいと思います。

# なぜPython?
まず最初に「なぜPythonになったのか。GASではだめなのか。」について簡単に説明します。前回の記事でも書きましたが、キャッシュレスシステムを導入する際にPayPay APIを利用します。そこで、PayPayのSDKを使いたいわけなんですけど、GASではSDKの導入をすることが出来ません。

そこで、数日前の記事で書いたPythonでPayPay APIを使えるSDKをそのまま流用したいと考え「じゃあLINE BotをPythonで作っちゃえばいいんだ」という結果に至りました。

# サーバーレス環境
前回から言っていますが、今回は「サーバーレス環境」を目指して作っていきたいと考

元記事を表示

selenium + AWS lambda開発環境の構築

## はじめに
AWSの開発環境の構築の備忘録です💁
初心者です😅
間違えてる部分多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇

環境構築はかなり苦労しました。
なので図にしてみました。
わかりづらい部分もあるかと思います。
ただ、図にするのは時間がかかってしまうのがデメリットですが、理解の落とし込みはかなりしやすいなと感じました。

## 🦁**結論**🦁
## 手順
1. Cloud Shellを開く
2. Pythonのバージョン確認
3. Seleniumのインストール(バージョン3.141.0)
4. CloudShell上で保存用ディレクトリを作成
5. chromedriverをダウンロードして展開
6. headless-chromiumをダウンロードして展開
7. いらなくなったzipファイルの削除
8. headlessディレクトリをzip化
9. S3のバケット作成
10. zipファイルをS3にコピーする
11. Seleniumレイヤーの作成
12. headlessレイヤーの作成
13. 関数の

元記事を表示

SQLサーバーに接続してSQLを実行するlambdaをTerraformで作成してみる

## はじめに
こんにちは![Fusic Advent Calendar 2023](https://qiita.com/advent-calendar/2023/fusic)の12日目を担当します@pensuke628です。
最近AWSのお仕事でLambdaを使い始めましたが、Lambdaって便利だな〜と感じる日々です(感想が薄い)
今回は、SQLサーバーに対してSQLを実行するlambdaをTerraformを作ってみたので、記事にしたいと思います。使用したterraformのバージョンは以下になります。

“`
$ terraform -v
Terraform v1.5.4
“`

また、最終的なフォルダの構造は以下のようになっています。
“`
.
├── lambda_function.py
├── lambda_function.zip
├── pyodbc.zip
└── terraform
├── backend.tf
├── main.tf
├── provider.tf
├── terraform.tfstate
├──

元記事を表示

CloudWatch のエラーログを Slack 通知

# はじめに

CloudWatch に出力されたエラーログを Slack 通知したいと思います。
CloudWatch の通知と言えば、以下の様なアラームの状態変更を通知するパターンもあるかと思います。

![2023-12-06_8.20.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125540/20e33385-5a10-9bf8-66a3-938217d4338e.png)

この場合、パッと見、エラーの内容が分からず、コンソールなどで詳細を確認しに行く必要があるため少し面倒です。

今回は、エラーの内容を Slack に通知できる様にします。

# 完成イメージ

![2023-12-05_20.47.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125540/9edea962-7ccd-405c-1c1e-c3ae1c37d24e.png)

エラーログやステータス、発生日時や該当

元記事を表示

公式LINEアカウントへのログイン処理をAWS Lambda経由で実装してみた

## はじめに
本記事は[PERSOL PROCESS & TECHNOLOGY Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ppt)の記事です。
業務でLINEとAWS実装を経験することがあり、独学ながら実装したお話を書いてみようと思います。といってもLINEの公式ドキュメントがすごく丁寧に教えてくれているので、こんなふうに実装できるんだ〜便利〜とか思ってくれれば良きです。では

## 背景
今回日本で利用者数が多いSNSであるLINEと、サーバーレスであるAWS Lambdaを利用しています。
>LINEは、月間ユーザー数9,500万人(2023年6月末時点)と多くのユーザー数を抱えています。
参照:[LINEユーザー層](https://campus.line.biz/line-ads/courses/user/lessons/oada-1-2-2)

ともあり、年齢層に関係なく利用ユーザーも多いです。(個人的には思ったより高齢層というのも関係なく高いのに驚き)使いやすくて便利。ですね。

Lambda

元記事を表示

CloudFront + Cognito認証(cognito-at-edge)で、index.htmlを追加したい

## 概要

– CloudFrontでCognito認証したい場合は、Lambda@Edgeを使って[cognito-at-edge](https://github.com/awslabs/cognito-at-edge)を扱った記事は多い。
– 一方、CloudFrontでファイル名を含まないURLをリクエストした際にindex.htmlを追加する方法としてはCloudFront Functionsを使ったサンプルの記事が多い。([公式でも記載](https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/example-function-add-index.html)されている)
– 問題点はcognito-at-edgeと同時に使いたい場合にビューワーリクエストで指定することになるため、どちらか片方しか設定できないこと。
– オリジンリクエストでCloudFront Functionsは指定できない。
– オリジンリクエストでLambda@Edgeは可能だが、認証系がキャッシュされてし

元記事を表示

AWS Lambdaで手軽にNode.jsコンテナ稼働

Node.jsなLambdaを、お手軽にコンテナ化して運用したい。

分かりやすいメリットとしては、以下のようなものがある。

* [Lambda Layers](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/chapter-layers.html)等で頑張って導入していた外部ライブラリを全てイメージ内に同梱できるため、取り回し易い
* [Lambda Runtime同梱のAWS-SDK](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html)と異なるバージョンのAWS-SDKを使いたい場合も、これに該当する
* [コードパッケージサイズ上限が10GiB](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-limits.html#function-configuration-deployment-and-execution)であるため、コードサイズに関して普

元記事を表示

OTHERカテゴリの最新記事