Lambda関連のことを調べてみた2022年12月23日

Lambda関連のことを調べてみた2022年12月23日
目次

NewRelicのSlack監視アラートにメンションを付けてみた

はじめに

株式会社medibaのSRE Unitでインフラエンジニアをしている@jc-kimです。
この記事は mediba Advent Calendar 2022の25日目です。

この間、NewRelicの監視運用でSlackに通知しているアラートが分かりにくいということで、@channelのメンションを付けてほしいという依頼があったため、対応した内容を書いてみたいと思います。

前提

– NewRelicでAPI Keyを発行済みである
– AlertCondition (Policy)は既に作成してある
– SlackのIncoming WebHookは設定は既にされている

仕組み

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2960702/42733c79-f300-188b-fd8a-5452ff5d0be2.png)
上記の図

元記事を表示

Amplifyを使ったソーシャルログインのバックエンドの設定

本記事は[AWS AmplifyとAWS×フロントエンド Advent Calendar 2022](https://qiita.com/advent-calendar/2022/amplify)の23日目の記事です。

# はじめに
今回は、Amplifyを使ったソーシャルログインのバックエンドの実装について、まとめていきたいと思います。

# 環境
AmplifyCLI 10.4.0

# 想定のゴール
* Amplifyを使ってソーシャルログインができる
* facebook
* LINE
* Google
* Yahoo
* 複数のidpを1つアカウントとして扱える(Qiitaと同じ感じの仕様)
* どの方法(SNSでもCognitoのID/PWでも)でログインしても同じメールアドレスは同じアカウント扱いにしたい
* ソーシャルログインした場合でも、後からパスワードの設定をすれば、Cognitoのみでのログインを可能にする
* パスワード設定後であれば、ソーシャルログインの紐付け解除が可能
* 各SNSとの連携の紐

元記事を表示

グルメ横断検索サービスを作ってみた

## 概要
グルメ横断検索サイトを作ってみたのでその紹介

## システム構成
![スクリーンショット 2022-12-23 3.12.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83409/0fde4c74-9ccf-2a77-c16c-a17143f61085.png)

今回はサーバーレスな形にしてみたかったのでバックエンドはLambda(Ruby)で記述しており、API GateWayを通じてAPI提供しています。
Lambdaの方から各種サイトに情報を取りに行き、その結果を返却するようにしています。
(どうやって情報とっているかなどは過去の記事を読んでください…)
またフロントエンドはAplifyを用いてホスティングしていて中身はVueで記述しています。

## サービス紹介
画面のデザインはVuetifyに丸投げしていて、このようにエリアとキーワードを受け取れる様になっており、
![スクリーンショット 2022-12-23 3.01.31.png](https://qiita-i

元記事を表示

【Terraform】null_resourceを使ってコードを用意せずにLambda実行環境を作成する

## 背景
TerraformでLambda実行環境を作成しようと試みたものの、エラーが発生

“`
Error: filename, s3_* or image_uri attributes must be set
“`

TerraformでLambda関数を作成するときは、関数ファイルを用意しなければならない。
しかし、とりあえずLambdaの実行環境だけ作成して、関数は後で用意したいパターンもある。
そういうときはどうすればいいのか・・?

## 解決策

**null_resource**を使って`terraform apply`時に空のzipファイルを生成し、それを

### コード
“`main.tf
# 関数作成
resource “aws_lambda_function” “lambda” {
filename = data.archive_file.null.output_path
function_name = “hoge_function”
handler = “hoge_function”
runtime = “go1

元記事を表示

LINE NotifyでCodeCommitコミット時の通知を設定してみた

# はじめに
LINE NotifyでCodeCommitへのコミット時の通知をカスタムメッセージでLINEグループに送信するよう設定してみました。業務ではLINEを使う機会がほぼないですが、個人開発時にはLINE通知の方が色々と便利だと思って、導入してみたというのがきっかけでした。

# やりたいこと
構成は非常にシンプルです。
1. CodeCommitにコードをpushする
1. コミット通知がSNS経由でLambdaに送信される
1. Lambda関数でユーザーのLINE Notifyトークンを使い、コミット情報をnotify-apiのエンドポイントにpostリクエストを送信する
1. コミット情報がLINE Notifyの公式アカウントによって、特定のLINEグループに送信される

![Screenshot 2022-12-22 at 17.30.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954734/fbb8edf1-5583-7de6-61ac-9d242f0c6929.png

元記事を表示

Elixir Bumblebee を AWS Lambda で動かす(Livebook でデプロイ、実行編)

## はじめに

前回の続きで、ローカルでビルドしたコンテナを Lambda にデプロイし、実行します

前回までをまだ見ていない方は先にこちらをどうぞ

https://qiita.com/RyoWakabayashi/items/366b05239af67b128f43

https://qiita.com/RyoWakabayashi/items/a63b6e75da9321daf998

実装したコンテナはこちら

https://github.com/RyoWakabayashi/elixir-learning/tree/main/lambda/resnet

デプロイ用のノートブックはこちら

https://github.com/RyoWakabayashi/elixir-learning/blob/main/livebooks/aws/lambda.livemd

## 実行環境

– MacBook Pro 13 inchi
– 2.4 GHz クアッドコアIntel Core i5
– 16 GB 2133 MHz LPDDR3
– macOS Ventur

元記事を表示

Elixir Bumblebee を AWS Lambda で動かす(ローカル実行編)

## はじめに

前回の続きで、今回はまずローカル(Dockerコンテナ上)実行します

前回を読んでいない方はまずこちらをどうぞ

https://qiita.com/RyoWakabayashi/items/366b05239af67b128f43

実装の全文はこちら

https://github.com/RyoWakabayashi/elixir-learning/tree/main/lambda/resnet

参考にさせていただいた Elixir on Lambda の先駆者様はこちら

https://qiita.com/erin/items/2aa7a70c34b0b2a64e5b

先駆者様が実装してくださったモジュール FaasBase はこちら

https://github.com/imahiro-t/faas_base

## 実行環境

– macOS 13.1
– Rancher Desktop 1.7.0

## プロジェクトの実装

まずプロジェクトを作成します

“`bash
mix new resnet
“`

### mix.exs

生成

元記事を表示

Elixir Bumblebee を AWS Lambda で動かす(前提条件編)

## はじめに

以前、 Bumblebee を SageMaker で動かしてみました

https://qiita.com/RyoWakabayashi/items/6cad17cd6047cc7113c0

しかし、もっと安く、気軽に AWS 上で動かしたいですよね

というわけで今度は AWS Lambda を使います

https://aws.amazon.com/jp/lambda/

実用的かどうかは、、、:joy:

長くなりそうなので、この記事では前提条件の説明だけにとどめます

次回ローカル実行、その次にデプロイ、クラウド実行を紹介します

## Lambda とは

Lambda はサーバーレスという仕組みで動いています

開発者は関数を書いて Lambda にデプロイしさえすれば、すぐにクラウド上で関数を実行できます

サーバーの構築や保守が不要なのですごく楽です

しかも処理が呼び出されたときに必要な数だけコンテナが起動するようになっているので、使っていないときは何も動いていない状態で、大量アクセスがあればその分だけ大量にコンテナが動いてくれます

つまり可用

元記事を表示

今さらJavaラムダ式

## 1. ラムダ式とは
– JavaSE8から導入された構文
– 関数型インターフェースを簡潔に記載することができる

“`java
List list = new ArrayList<>(Arrays.asList(“A”, “B”, “C”));

// こういうやつ
list.forEach(i -> System.out.println(i));

// 結果
// A
// B
// C
“`

## 2. 無名クラス(匿名クラス)と関数型インターフェース

### 無名クラス(匿名クラス)とは
– 名前がないクラスのこと
– 一度きりしか使わないといった場合に使用する
– コードの記載が綺麗になる

無名クラスを使用する場合、new class名()の後に{}を記載します
※関数型インターフェースのConsumerを使用していますが後で説明あります

*無名クラスを使用しない場合*
“`java
class CustomConsumer implements Consumer {
@Override
public v

元記事を表示

Fast API x Lambdaでmono lambdaができるMangum

# お約束
* 本記事は ARISE analytics Advent Calendar 2022 の22日目の記事です
* 昨日は @skybee8 さんの [強化学習を用いたレコメンドを検証してみた件](https://qiita.com/skybee8/items/c8dd2bb3038eb30d1b5c)
* 明日は、@tsukasaI さんの [Goでの日付比較チートシート](https://qiita.com/)

# はじめに
皆さん、AWS Lambdaはお好きですか?私は大好きです。
さて、皆様はPython x lambdaでAPIをつくるときどうしてますか?
Chaliceを使う?シングルlambdaでルーティングはAPI gateway任せてますか?

多分、皆様の誰でも普段使ってるフレームワークのdjangoやStarlette、FastAPIとかをそのままlambdanに持っていきたいと思ったことないでしょうか?けど、なんか無理ぽいなと試したり、感覚で感じ取られてないでしょうか?

その夢叶えられます。そうMangumならね
https://mangum.

元記事を表示

業務でGraalVMとKotlinを使ってサーバレス開発やってみたのでちょっとハンズオンしてみる

# 3行で結論
JavaとかKotlinみたいなJVM系言語でLambdaを動かすと激遅。
でも、GraalVMを使えば爆速で動く。
案件としてリリースできそうまで持って行けたのでハンズオン書くよ

# サーバレス開発って何
この記事ではサーバレス開発を以下の様に定義します。

世の中のシステムはネットワーク構築とかサーバ運用とかのインフラが必須ですが、
AWSなどが提供するクラウドインフラのマネジメントサービスをつかうことで
**サーバを使わない**(=**サーバレスにする**)ことでインフラの運用管理のコストを下げたり、 **柔軟なスケーラビリティ**(拡張性)を実現する開発のことを**サーバレス開発**といいます。

– サーバレスに使える代表的な技術
– コード実行:AWS Lambda、GCP CloudFunction等
– データベース:AWS RDS、GCP CloudSQL等

# GraalVMとは

GraalVMは、Java仮想マシン(JVM)上で実行されるプログラム言語を統一的に実行するランタイムの1つで、AOTコンパイラでバイナリ出力が可能。

元記事を表示

[go] [terraform] lambdaのsource_code_hashが毎回更新される

# 前提
goのバージョンとterraformのバージョンは以下
今回の記事の対象は恐らくgo 1.18以降を使っている人
“`shell
go version
go version go1.19.2 darwin/arm64
terraform -v
Terraform v1.3.6
“`

# 今回の問題
terraformで以下のようなコードでlambdaのリソース管理をしていた
“`terraform
resource “aws_lambda_function” “go_function” {
filename = “go_function.zip”
function_name = “go_function”
handler = “main”
source_code_hash = filebase64sha256(“go_function.zip”)
runtime = “go1.x”
}
“`
`go_function.zip` はgithub actionsのworkflow内でbuild

元記事を表示

SREはトイルの削減にどう立ち向かうべきか?

# はじめに

Googleが提唱するSREプラクティスの一つにトイルの削減 [^toil] があります。*トイル (toil)* という言葉は日本語であまりなじみがありませんが、「苦労する・こつこつ働く」といった意味合いがあります。
SREにおけるトイルの定義は、原典とも言える書籍 [*SRE サイトリライアビリティエンジニアリング*](https://www.oreilly.co.jp/books/9784873117911/) 内で次のように定義されています。

> トイルとは、プロダクションサービスを動作させることに関係する作業で、手作業で繰り返し行われ、自動化することが可能であり、戦術的で長期的な価値を持たず、作業量がサービスの成長に比例するといった傾向を持つものです。

本記事では、システム運用におけるトイルの定義を再確認し、トイルを削減する上での実践的なノウハウの一例を紹介します。

# トイルの定義

*SRE サイトリライアビリティエンジニアリング* では、次の分類に1つ以上当てはまるような業務はトイルとなる性質が高いと紹介されています。

|分類|説明|具体例|
|

元記事を表示

Amazon EventBridgeを使ってEC2の状態変更(Stop)を検知しLambdaで自動起動を実行する。

## はじめに

[アイレット株式会社 22新卒 Advent Calendar 2022](URL “https://qiita.com/advent-calendar/2022/iret-22”)に投稿される22日目の記事になります。

https://qiita.com/advent-calendar/2022/iret-22

本記事は、Amazon EventBridge、Lambdaを使用しEC2の状態変更(Stop)を検知しLambdaで自動起動を実行するまでのハンズオンをまとめたものになります。
上記サービスに加え、IAMの概要を**簡単**に説明していきながら進めていきます。
また、AWS SOA試験ラボの対策にもなると思いますので、最後まで読んでいただけたら幸いです。

## 1. EC2インスタンスの起動
![スクリーンショット_2022-12-13_22_15_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953955/21008ab9-9d36-d001-806a-d1

元記事を表示

AWS Lambda を ECR のコンテナイメージで動かすとき、:latest を指定して良いのか悪いのか

以下の状況のときに、Lambda 関数はいい感じに更新できるのかどうか不安になったので試してみたログ。

– CodeBuild で Lambda 用コンテナイメージをビルドして ECR に push する
– このとき ECR のコンテナイメージにはタグを付けず、 `latest` を更新し続ける
– ECR のコンテナイメージを Lambda で動かす

## 動かすサンプルアプリ
“` Dockerfile:Dockerfile
FROM public.ecr.aws/lambda/python:3.9

COPY main.py ${LAMBDA_TASK_ROOT}

CMD [“main.handler”]
“`

“` main.py
def handler(event, context):
return “foo”
“`

実行したら `foo` と返ってくるだけの Lambda 関数

## 事前準備
– `lambda-test` という名前の Lambda 関数を作っておく
– `lambda-test` という名前の ECR リポジトリを

元記事を表示

【AWS】Lambda関数でEC2の情報を取得する、ということ

# 初めに

閲覧いただきありがとうございます。

突然ですが、私は最近クラウド未経験からAWSシステム担当のエンジニアに転職を果たしました!

そんな私ですが、コスト削減として社内の研修環境の不要なEC2削除をするために
EC2の情報を取得するLambda関数を作成するお仕事をする機会がありました。
そこで、かなり沼った&あまりクリティカルな記事がネットになかったので備忘も兼ねて記事にしたいと思います。

最終的には結構複雑なことをするLambda関数を作成したいのですが、
段階的に、まずは**EC2の情報を単純に引っ張ってくるだけのLambda関数を作りたい**と思ったので
今回のゴールとしてはそれを実施し問題なく取得した情報を確認できることとしたいと思います。

ちなみに私のレベルは以下程度で、かなり初学者的な詰まり方をしているので、
その前提で温かく読んでいただければと思います。。
・AWS実務経験ほぼなし
・SAAは2022年10月取得済み
・VPCやLambdaの機能は机上で学習しているが、具体的な挙動をきちんと理解できていない

# 実施すること

やること自体は非常に

元記事を表示

【初心者向け】整形されていないログなどを活用できるようにするための簡単なログ検索基盤を作成してみる

こんにちは。こちらは[AWS for Games Advent Calendar 2022](https://qiita.com/advent-calendar/2022/aws-for-games) 21日目の記事です。

# はじめに
クライアントで開発中に出力されるログや様々な情報は一時的には使われますが、調査や分析などされる目的で出力されていないのでゲームサーバーなどで出力されるログに比べて活用されている機会はまだ少ないと思います。そのため、ログを出力していてもフォーマットが定まっていなことが多いと思います。もし活用するとなっても元のログを整形や加工を行なってデータベースに投入する必要があります。また、これらのログの管理はクライアントエンジニアが行なっていることが多く、分析や可視化をするまでのデータパイプラインなどの作成に慣れていない方が多いと思います。そこで今回は` 開発中にクライアントなどで出力される整形されていないログを検索できる`ようにしたいと思います。

# 今回作るもの
入力用S3に投入されたデータをLambdaで加工、整形し、出力用S3に出力し、最終的にAthe

元記事を表示

全員集合!必ず定刻に始まるオンラインミーティングサービス by TencentCloudビデオ通話SDK

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77444/35212bcf-130f-dd6b-f8b6-861fe9f10f84.png)
TencentCloudビデオ通話SDKを使ってオンライン会議サービスをつくってみました。

# 解決したいこと
オンラインミーティングやオンライン飲み会って、時間どおりに人が集まらなくてなかなかスタートできない時ってありますよね?
定刻に始まらない理由は色々とあると思いますが、ミーティングのURLを探している間に時間が過ぎちゃった、とか、いつものことだらかどうせまだ始まらないだろう…とか、あっ・ミーティング忘れてた!というのもありがちだと思います。

## 解決方法
これを解決するために、TencentCloudを使用した「必ず定刻に始まるオンラインミーティングサービス」を作ってみました。
– ミーティングの開始時間になったら、端末にPushコール&ウェークアップ着信
強制的に呼び出しがかかるので、もう電話に出るしかありません。着信に応答する

元記事を表示

CDKのAPIGateway+Lambda構成をOpenAPIの定義から作成する

本記事は[NECソリューションイノベータAdventCalendar 2022](https://qiita.com/advent-calendar/2022/nec_solution_innovators)の12/19の記事です。

## どんな内容か

CDKにてAPIGateway+Lambdaの構成を作る際に、[RestApi](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.RestApi.html)ではなくOpenAPI定義からAPIGatewayを作ることができる[SpecRestApi](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.SpecRestApi.html)を使ってみたという内容になります。

今回のソースコードは[こちら](https://github.com/ststake/cdk-openapi-apigateway-lambda)においています。

## OpenA

元記事を表示

Lambda PowerToolsとCW Logs Insightsがいいぞ!

## はじめに

この記事は、[ミロゴス Advent Calendar 2022](https://qiita.com/advent-calendar/2022/milogos) 20日目の記事です。

Lambda のログを CloudWatch Logs で見ている。けれども、調査時にログの検索がし辛いと感じたり、そのログからとある値を集計したい要件があったりするかと思います。
このような場合に対して CW Logs には CW Logs Insights が 用意されています。

本記事では CW Logs Insights を使ったログ検索のクエリの一例を記載します。
また、CW Logs に 構造化ログの形で出力できるPython のライブラリ、aws-lambda-powertools を使うことで CW Logs Insights がどう便利になるのかを紹介します。

対象者としては下記のような方を対象としています。

– Lambda を使ってるが CW Logs の検索に辛さを感じている。
– CW Logs のログから抽出し集計をするスクリプトを作っている。

#

元記事を表示

OTHERカテゴリの最新記事