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

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

S3 イベント通知でLambdaを実行する構築ハンズオン

## はじめに
『S3にオブジェクトが作成されると、EventBridgeを利用して後続のStepFunctionsを起動して、、、』のような案件を経験して、完全に『S3からのイベント通知の際はEventBridgeだ!』という凝り固まった偏見を持っていました。
全然そんなことはなく、S3のイベント通知には`Lambda関数`,`SNSトピック`,`SQS キュー`の方法がありますので、凝り固まらないように『S3にオブジェクトが生成されるとイベント通知を行い、Lambdaが実行される』構築を行っていきます。

————

## 構成図
![](https://cloud5.jp/wp-content/uploads/2022/12/スクリーンショット-2022-12-25-9.02.14-640×250.png)

————

## ハンズオン
### 構築の流れ
#### 1.Lambda作成
#### 2.S3作成
#### 上記の順番で構築を行なっていきます。
最終的には、S3からのイベント通知を受けて、Lambdaのログ(CloudWatchLo

元記事を表示

DynamoDB テーブルに保存されている項目にLambda 関数で、アクセスしたい時

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/5cde6041-14ee-708d-00d9-ea2b22ea82f5.png)

___
__DynamoDB テーブルに保存されている項目にアクセスするLambda 関数を作成したい時に、使う項目を確認してみた。__
___

AWSのサービスからAWSの別のサービスを利用する時にする事の基本は、

IAM ポリシーを作成し、IAM ロールにアタッチする。事だと、改めて、基本的な事を確認した。

DynamoDB テーブルへのアクセスを許可する IAM ポリシーを作成し、
このポリシーを Lambda 関数の IAM ロールにアタッチする。

AWSのブログが、わかりやすかったので、ご紹介致します。

IAM ポリシーとロールを使用してアクセスを制御することで、認証情報をコードに埋め込む必要がなく、Lambda 関数がアクセスできるサービスを厳密に制御できます。このポリシーには、Lambda 関数が Amazon Clo

元記事を表示

飲食店横断検索サービス「おうだん君」を作って公開してみた?

## 完成品
https://www.restaurant-search.net/

出来上がったものがこちら!!

## 概要
アドベントカレンダーで色々tipsを書いていたのですが、最終成果物として1つwebアプリケーションを作ってみたのでそれの紹介

## なぜ?
アプリケーションを作ろうと思ったきっかけは以下の2つ
– アドベントカレンダーを埋めるにあたって最終的に何かを目指して開発をしていったほうがネタが集まりやすそう
– 最近新しいサービスを作れてなかったから作りたかった

## 「おうだん君」とは?
![スクリーンショット 2022-12-24 23.07.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83409/b3a4f08f-be58-4773-e287-7e9f6c206622.png)
おうだん君とは、タイトルに有るように**飲食店横断検索サービス**です。
皆さんお店を探す際にGoogleMapだったり食べログだったりRettyだったりいろんなサイトを見て判断の材料にして

元記事を表示

AWS lambdaを使ったslackとDocBase連携システム作成手順

## やったこと
DocBase APIとslack WebhookURLを利用してAWS lambdaで、1日前(月曜日だけは金、土、日曜日の3日間)にDocBaseの自分が所属する事業部宛に投稿された記事を取得して、slackに通知するシステムを作成しました。

## 背景
以下の記事に書かれている通り、DocBaseのオーナー管理者権限を持っていればDocBaseのWebhookURLを利用して簡単にslackと連携することができます。
今回、私は上記の権限がなかったため、DocBaseのメモ検索APIをlambdaで呼び出し、slackのwebhookURLを利用して通知するシステムを作成しました。
この先、同じようなシステムを作りたいという人が現れた際に、この記事が少しでもお役に立てれば幸いです。

https://help.docbase.io/posts/13676

# 手順

## ①slackのWebhookURL発行
1.slack API( https://api.slack.com/apps )にアクセスする
2.`Create an App`を押して、`Fr

元記事を表示

Go言語をつかった Lambda関数の開発をもっと楽にしたい〜Codespacesを添えて〜

メリークリスマス!
この記事は[朝日新聞社 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/asahi)の24日目の記事です。

## TL;DR
Dockerコンテナ上で RIE と air つかってサクサク開発環境を作りましょう
サンプルは https://github.com/duck8823/sample-lambda にあります。
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=581006091)

## 今回の開発スタイル
こんな感じで開発するとしましょう。

– スキーマをOpenAPIで管理したい
– Go でLambda関数を書きたい
– curl で動作確認したい
– ホットリロードほしい
– スキーマから生成されたクライアントを試したい

## Lambda

元記事を表示

UnityとAWSを無理やり繋げて物体認識アプリ作成

この記事は [NTTテクノクロス Advent Calendar 2022][Advent] 23日目の記事です。

NTT-TXの定行です。普段はARやVR関連の業務をしたり、たまにデータ解析の業務をしています。

今年もアドベントカレンダーに参加させてもらう事になりました。昨年はUnityで簡単なARアプリの実装手順の記事を書いています。今年はUnityとAWSを連携させたアプリ実装について書いてみようと思います。UnityやAWSを勉強中の人で何かアウトプットをしてみたいと思っている人は是非トライしてみてください。

今回作るアプリはこんな感じです。カメラで撮影した画像をAWSへ送信して画像に移っている物体の解析を行います。そして認識結果ををアプリ上に反映してみようと思います。

今回の構成はAIアプリをとして処理をする流れとしては最適ではなくアプリ上の表示もスムーズではありません。個々の要素を理解するためにとりあえず繋げてみたものになっています。

AWSの構築はすべて”ap-northeast-1”で行っています。

![構成.jpg](https://qiita-image

元記事を表示

LambdaでCognitoユーザプールのSub情報からCognitoのユーザを削除する

# 概要
Lambdaでsub情報からCognitoのユーザーを削除する方法を紹介します。

# 環境
– ランタイム:Python3.9
– リージョン:ap-northeast-1

# Lambda関数
“`Python
import boto3

cognito = boto3.client(‘cognito-idp’, region_name=’ap-northeast-1′)
user_pool_id = <ユーザープールのID>

def get_cognito_user_name(sub):
response = cognito.list_users(
UserPoolId=user_pool_id,
Filter=’sub = “‘ + sub + ‘”‘
)

user_name = response[“Users”][0][‘Username’]

return user_name

def delete_cognito_user(user_name):
r

元記事を表示

【AWS CloudFormation】DependsOnでハマった話

## はじめに
はじめまして
Qiita初投稿です

現在プロジェクトで初めて本格的にAWSに触れる機会を頂き、いくつか記事にできそうなネタができたので少しずつ投稿していけたらと思っています

今回はSAMテンプレートでLambdaを構築した際にリソース間の依存関係でハマった話を書きたいと思います

## 問題のテンプレート

### スタックの構成
* LambdaLayers
* LambdaFunction
* LambdaPermission
* CloudwatchLogsLogGroup

“`template.yaml
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31

Globals:
Function:
Runtime: python3.9
Timeout: 180
Handler: lambda_function.lambda_handler
Architectures:
– x86_64
Layers:

元記事を表示

【Androidアプリ開発】S3に格納した画像のPre-Signed URLを発行し、kotlinで表示する

## やりたいこと
S3においた画像イメージをLambda経由で取得しkotlinで表示する。

## 問題
元々はS3に格納した画像をLambdaで呼び出し、ByteArray形式に変換してクライアント端末に渡していたのですが、Lambdaにはレスポンス6MBの制限があり、大量の画像データを扱えなくなりました。

## 解決方法
S3のPre-Signed URLを使います。
Pre-Sined URLを使うと、S3オブジェクトへの限定的なアクセスを提供することが可能で、URLを渡すため、ByteArrayを渡すより格段に容量を減らせます。

## 実装例

### S3
TESTバケットにsample.jpgを格納

### Lambda
– 環境:AWS Lambda Python 3.9

– アタッチするポリシー:
“`JSON
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “VisualEditor0”,
“Effect”: “Allo

元記事を表示

Lambda×Step Functionsで大量S3オブジェクトを移動させてみた。

## この記事で紹介していること
この記事がQiita初投稿です。
普段はNTT東日本で、ひかりクラウドスマートスタディの開発エンジニアをしております。
今回は駆け出しエンジニアである私が、LambdaでS3を操作した過程をまとめてみました!

– Lambda×Pythonを使って、S3のオブジェクト移動
– boto3の制約を乗り越え、1000件以上のオブジェクト移動
– Lambda×Step Functionsで実行制限(15分)を超越

## 前置き

S3のアクセスログからコンテンツの利用頻度をAthenaを使って分析したいという要望を受け、
早速バケットの中身を見てみると、**過去数年分の溜まりに溜まったアクセスログ**が一つのプレフィックスに格納されていた。。。(絶望)[※ちなみにS3にはフォルダという概念はないらしい](https://dev.classmethod.jp/articles/amazon-s3-folders/)
![Untitled (4).png](https://qiita-image-store.s3.ap-northeast-1.amazon

元記事を表示

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.

元記事を表示

OTHERカテゴリの最新記事