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

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

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)であるため、コードサイズに関して普

元記事を表示

【AWS】署名付きURLの生成&アップロード処理

## はじめに
AWS S3の署名付きURLを使用してファイルアップロード処理をする方法について紹介します。
背景としてはAPI Gateway→Lambdaを介してS3にファイルをアップロードする機能を作成していたのですが、API Gatewayでは10MBまでのファイルしか受け付けない仕様となっており10MB以上のファイルをアップロードするケースがでてきたためこの問題を解消する必要がありました。そこで、画面から直接S3にファイルをアップロードするよう、S3の署名付きURLを使うアップロード処理に変更しました。

## 処理の流れ
1.画面からAPI Gateway→Lambdaを経由して、S3から署名付きURLを取得する。
2.取得したURLを使用していアップロードを実施。

## ソースコード
### 署名付きURL取得処理
API Gatewayの設定は割愛して、Lambdaに設定するソースコードのみ紹介します:point_up_tone1:言語にはNode.jsを採用しています。

“`javascript
// 必要なnodeモジュールを読み込む
const { S3Cl

元記事を表示

pgauditを設定して特定カラムアクセス時にemail通知を投げるシステムの構築

# 要点

– テーブル中に記録された個人情報アクセスの監視。
– 開発者並びに特定ユーザが、テーブル中の特定カラムを参照した場合にemail通知を送信する。
AWSを用いて構成した。システム構成図は以下。

![pgaudit_infra_page-0001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367227/42df63a3-85d4-5b54-0fdb-37fc4b0efbaf.jpeg)

# 構築手順
[準備.pgAuditについて](#1-pgAuditについて)
[1.PostgreSQLの設定](#1-PostgreSQLの設定)
[2.CloudWatch Logsのサブスクリプションフィルター設定](#2-CloudWatchLogsのサブスクリプションフィルター設定)
[3.SNSトピック作成](#3-SNSトピック作成)
[4.Lambda関数でメッセージ構築](#4-Lambda関数でメッセージ構築)
[ex.TerraformによるIaC化](#5-Terraform

元記事を表示

EC2を自動起動停止させるLambdaをNode.js18に移植した

## はじめに

EC2を自動起動停止させるLambdaをたぶんNode.js v6かv8のころから使ってきました。
Node.js v14まではコードを修正せずに動いたのですが、v18に上げたらそのままでは動かなかったので、やったことを残しておきます。

## Node.js v14まで

### ソースコード

元々使っていたコードは下記です。

“`typescript:index.js
var aws = require(‘aws-sdk’);
var ec2 = new aws.EC2();

exports.handler = (event, context, callback) => {
‘use strict’;

let filter_status;
switch (event.type) {
case ‘start’:
filter_status = ‘stopped’;
break;
case ‘stop’:
filter_status

元記事を表示

OTHERカテゴリの最新記事