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

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

UnityでLambdaを介してDynamoDBにアクセスするAPI連携を実装する方法

# 今回実装したこと
Unity ⇆ API gateway ⇆ Lambda ⇆ DynamoDB ⇆ S3
S3上に置いた画像データをおき、そこに至るパスをDynamoDB上にストックし、Unityからの入力をキッカケにAPI gatewayを経由してLambdaを起動して、入力情報に応じてDynamoDBから必要なS3のパスを返す実装を完成しました。
文字だけだと呪文にしか聞こえないので、実際に動いているところを共有します。

UnityでAWSのサービスを使用する場合、余計なSDKやプラグインなどを使用せず、あくまでAWSのサービスのみで完結する方法についてまとめました。
これができれば、フロントサイドは別にUnityじゃなくてもさまざまなサービスを利用することが可能です。

# 注意点
AWSの使用は従量課金制となりますので、ここから先を進んだ場合に使用量が発生する可能性があります。そのため、ここから先に進んで費用が発生しても自己責任でお願いいたします。

# AWS側の設定

## AWSへのログイン
他の記事やgoogleで検索し、AWSのコンソール画面まで進んでください

元記事を表示

Microsoft365の監査ログを取得するLambda

# はじめに
Microsoft365の監査ログの保存期間がデフォルト90日なので、それを長期間保存するためS3に出力するLambdaを作成しました。

# 参考

https://github.com/nickadam/exo-lambda

# 構成図

構成図は以下の様になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/d856cd57-3909-6efd-7a94-67f958ac718a.png)

– 任意のサービスが、対象のLambdaをInvokeします。
– Step Functionsを想定
– 与える引数は以下
– 監査ログ取得対象開始日時
– 監査ログ取得対象終了日時
– 保存先バケット
– オブジェクトキー名
– Microsoft365への接続に使う情報はSystemsManagerのParameter Storeから取得します。
– 格納先のPar

元記事を表示

AWS Lambda でLine bot を作成する

Line bot を作成し、自動でメッセージを送受信する方法を解説します。

## LINE Developersコンソールからチャネルを作成

下記手順を参考にLINE Developersコンソールからチャネルを作成します。
[LINE Developersコンソールでチャネルを作成する](https://developers.line.biz/ja/docs/messaging-api/getting-started/#using-console)

– [LINE Developersコンソール](https://developers.line.biz/console/)へログイン
– `Messaging API`のチャンネルを作成
![image](https://user-images.githubusercontent.com/38905609/181906073-e2371056-01c9-4329-abf1-5e3334fdc3f0.png)

## Webhook用のLambda関数を作成する

?これより先は下記記事の内容を前提とします
[REST AP

元記事を表示

[AWS.3] Lambda関数へのトリガー追加 (API Gateway)

# 1. 概要
AWS.1 および AWS.2 は、すでに広まっている情報を思いっ切り焼き直した記事でした。
もう少し高度なサンプルも予定していますが、その前に作成済みの Lambda 関数を Amazon API Gateway に対応させてインターネットから簡便に呼び出せるようにしておきます。

## Amazon API Gateway とは
バックエンドで動くビジネスロジックへアクセスするための「フロントドア」として機能する仕組み、とのことです。
具体的には RESTful API や WebSocket API の作成・公開・管理 を一手に担い、Lambda 関数をはじめとするビジネスロジックへアクセする「API」を提供します。

Amazon API Gateway
https://aws.amazon.com/jp/api-gateway/

### Lambda プロキシ統合について
API Gateway を利用する際は、クライアントから渡される情報を「呼び出し先のロジックがアクセスできる領域」へマッピングする必要がありました。
マッピングの考え方自体はともかく、定義

元記事を表示

LambdaのコードとCFnテンプレートの環境変数を同時に変更すると一瞬死ぬかも

# はじめに
Lambda関数をデプロイする際、CloudFormation(以下、CFn)を利用される方も多いと思います。
今まで知らなかったのですが、Lambda関数に乗せるソースコードとCFnテンプレートの両方で環境変数名を同時に変更するとダウンタイムが発生する場合があったので、備忘録として検証記事を書きます。

# 使用するCFnテンプレート
今回の検証に利用する、最小構成のLambda関数をデプロイするためのCFnテンプレートです。
Lambda関数のリソース定義において、Environmentに`HOGE: 1234`を追加し、Codeに`HOGE`を参照するPythonコードを直接書いています。

“` minimum_template.yml
AWSTemplateFormatVersion: 2010-09-09

Resources:
LambdaFunction:
Type: AWS::Lambda::Function
Properties:
Runtime: python3.9
FunctionName: hoge

元記事を表示

Go+API Gateway+Lambda+DynamoDBでサーバレスなAPI

# はじめに

こちらの記事はGoとAPI Gateway + Lambda + DynamoDBでサーバレスなAPIを作る記事となっています。
前回の記事の続きとなっているため、一部手順を省略しています。

https://qiita.com/tkhs1121/items/b1e332acdbc50fad8c45

https://qiita.com/tkhs1121/items/18d8ba86f1afdec13381

# 環境
MacBook Air M1
開発言語 Go

# 手順
## Lambda関数の作成

一から作成のままランタイムを`Go.1.x` アーキテクチャを`x86_64`にして関数の作成をします。
![Lambda.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1391445/e76764b3-3f67-c9c6-092f-efcfdf99e889.png)

### 必要なパッケージのインストール
“`
go get -u github.com/aws/aws-sdk-

元記事を表示

CloudWatch Syntheticsを使用してAPI監視を実現する

# はじめに
本記事はAWS環境でCloudWatch Syntheticsを使用して、API監視を行うための方法について記載しています。

クラウド環境におけるシステム監視を行うためには、クラウドを提供するサービスプロバイダーによってビルトインされたモニタリングシステムや、Datadogなどサードパーティ製ツールを使用するなどの手段があります。

AWSではモニタリングシステムとしてCloudWatchが無料で利用できます。
Syntheticsの監視についてもサードパーティ製ツールを使用せずに、コストを下げてAWSでインテグレーションしたモニタリングシステムを構築できます。

一見便利そうなSyntheticsですが、仕様が分かりにくかったり、痒い所に手が届かない部分もあります。
本記事ではSyntheticsを使ってたナレッジについてまとめました。

## CloudWatch Synthetics
日本ではAPIなどエンドポイントに対する監視のことを外形監視といった表現が多いですが、AWSはDatadogと同じ**Synthetics**と呼び、CloudWatchの**Syn

元記事を表示

関連づけられてないEBSをSlack通知 & 削除するLambda

# はじめに
以前、[「関連づけられてないEIPをSlack通知 & 削除するLambda」](https://qiita.com/suzuki_kento/items/6adb5e7e70bb17148699)を作成しました。

今回は上記のLambdaを応用し、何も関連づけられていない(= 「使用可能」状態)のEBSボリュームを削除するLambdaを作成してみました。

なぜ、作成するに至ったかというと、自分の所属するチームの検証環境には**59台の「使用可能」状態のEBSが存在しており、毎月3000円ほど無駄な費用がかかっていた**ためです。

また、**「使用可能」状態のEBSは「終了時に削除」が有効化されていないAMIからインスタンスを作成してしまうと、作成者の意図しないところで湧き出す**のです。
なので、定期的に駆除したいと感じていました。

# 仕様
– 検証環境に存在する何も紐づけられていないEBSをSlack通知・削除(全リージョン)
– Amazon EventBridgeと組み合わせて毎日定時で実行
– 容赦ない削除、慈悲はない
– 削除されたくない場合、以下

元記事を表示

Seleniumの通信ログを確認したい(on AWS Lambda)

# 自動化っていいですよね
ブラウザ操作を自動化してくれる「Selenium」。
テストやスクレイピングなどで使われている方も多いかと思います。
便利なんですが、エラーが起きた場合にその原因が分かりにくいな、Seleniumがどんな通信を行っているのか確認したいな、と思うことも。
この記事ではSeleniumの通信内容を簡易的に取得する方法を検証します。

# この記事のゴール
1. コンテナ形式のAWS LambdaにてSeleniumを動作させる
1. Seleniumの通信ログ(HTTP/HTTPS)を確認する

# 前提および注意事項
* 開発環境としてAWS Cloud9を使用します
Cloud9の環境には予めDockerやAWS CLIなどがインストールされているため、それらのインストール手順は本記事では触れていません。
また、デフォルトのディスク容量だとすぐに不足するため、本記事の内容を検証した際は30GBに拡張しています。
* コンテナ形式のAWS Lambdaで動作確認を行っています
Lambdaは実行時間やメモリなどに応じて課金されますが、本記事の内容を実行する場合

元記事を表示

【AWS】Lambda関数のLayerを使ってみた

# 1.はじめに
どうも、ARIの名古屋支社に勤務している愛知県民です♪
(/・ω・)/

先日、AWSのLambda関数をテストしようとしたところ、以下のエラーが出ました。

|![010_エラー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/cddbe3fd-68c5-f097-946d-11a59a1ca870.png)|
|:–|

どうやら、必要なライブラリが含まれていないことが原因のようですが、
他にも同じライブラリを使うLambda関数を作成予定だったため、
「いちいち設定するのは面倒だな・・・」と思いました。

解決する方法がないか、調べたところ、
**Lambda関数のLayerという設定を使うことで、
複数のLambda関数に同じライブラリを入れられるようです!**

そこで今回は**Lambda関数にLayerを設定する方法**を記事にしてみたいと思います♪
AWSやLambda関数について勉強中の方の参考になれば幸いです。
(*^^)v

# 2.用語の説明
#

元記事を表示

Lambdaの関数URLとNetworkXを利用してネットワークグラフをWeb画面に表示する

AWS Lamdbaに関数URL(AWS Lambda Function URLs)という機能が搭載され、爆速でAPIを構築できそうかつ、フロントとバックの画像のやりとりを実現してみたかったので、いじってみました。
NetworkX( https://networkx.org/ )はあくまで、グラフを描画するためだけなので、深くいじりません。

Web画面はreactを利用し、lambdaのコードはPythonで書いていきます。

## 関数URLの準備
本当に早くてびっくりしました。
1. 関数の作成から、関数名を入力します
![スクリーンショット 2022-07-27 19.22.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1412976/189ede0c-7e5c-fb9a-9b0b-cb172491a27f.png)

2. 下の方にスクロールをして、「詳細設定」を開き、以下を選択します
– 関数URL
– 認証タイプ -> NONE
– オ

元記事を表示

[AWS.2] Lambdaサンプル(C#) の作成とデプロイ

## 1. 概要
本記事では、.NET6(C#) で Lambda関数プロジェクトの作成方法 および AWS へのデプロイ方法について説明します。

:::note warn
同様の記事はネット上に溢れており、開発ツールのバージョンアップも頻繁に行われています。
本記事の内容もあっという間に陳腐化すると思われますので、ご注意ください。
:::

#### サンプル仕様
次の仕様でサンプルを作成します。
 a. 単一の文字列を入力値として受け取る。
 b. 入力値に「年月日」を付加した文字列を作成し、関数の返却値とする。

このサンプルは、プロジェクトテンプレート「lambda.EmptyFuction」を使って作成します。

#### 本記事を作成する際に参考にしたサイト
初級:AWS Lambda + .NET C# の最初の一歩
https://qiita.com/nanananamememe/items/8c57b17e5f7f60b768d4

.NET Core Serverless WebAppをMacからAWSへデプロイ
https://qiita.com/ryohei0

元記事を表示

[AWS.1] .net AWS Lambda 開発環境(for mac) の構築

## 1. 概要
2022年2月、AWS Lambda で .NET6 が利用できるようになりました。
VisualStudio 2022 for MAC によって Mac上でも .NET6 アプリケーションを作成できるようになったため、本記事では C#(.NET6) で AWS Lambda 関数を作成するための環境構築について整理していきます。

:::note warn
同様の記事はネット上に溢れており、開発ツールのバージョンアップも頻繁に行われています。
本記事の内容もあっという間に陳腐化すると思われますので、ご注意ください。
:::

#### VisualStudio 2022 for MAC
.NET コンソールアプリケーションを作成する環境であり、プロジェクトを包括的に管理することができる統合開発環境です。
.NET6 を正式にサポートする Visual Studio ですが、Visual Studio Code でも同様の開発環境を整えることは可能です。

Visual Studio for Mac
https://visualstudio.microsoft.com

元記事を表示

AWS Lambdaを用いたサーバーレスアーキテクチャでWebAPIの構築 #1

## はじめに
この記事は[サーバーレスアーキテクチャで翻訳webAPI](https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Serverless-1-2022-confirmation_422.html)を構築するを参考に記事にしました。

## 構築するアーキテクチャ
以下の図ようなアーキテクチャを構築する。流れとしてはAPI Gatewayがリクエストを受け付け、lambdaを呼び出す。そしてlambdaから翻訳サービスであるAWS Translateを呼び出し結果を取得し、API lambdaに返します。その結果をレスポンスとしてユーザに返す。DynamoDBはその履歴を取得するために利用する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2040882/d0cc68dc-f18d-4efa-7fec-5eeb08491759.png)

## なぜサーバーレスアーキテクチャなのか?
サーバーを

元記事を表示

Ruby で Lambda 入門 (1)

## 概要

– Lambda と DynamoDB の勉強がしたい
– API Gateway を使わなくとも Lambda に HTTP エンドポイントを作成できるようになったらしいので使ってみたい

以上の状況だったのでちょっとそのあたりを触ってみました。
なおタイトルにもある通り、ランタイムは Ruby 2.7 を選択しています。
※選択肢の中では自分が Ruby に慣れているというだけです

## やったこと

1. コンソールから Lambda 関数を作成
2. コンソールから DynamoDB のテーブルを作成
3. ローカルの apache にファイルを置いて、そこから Lambda にリクエスト
4. 受け取ったデータを使って DynamoDB のアイテムを作成
5. コンソールから追加されたアイテムを確認

## 手順詳細

### コンソールから Lambda 関数を作成
![](https://i.gyazo.com/9212952e70415079a6b90341a1d24676.png)
![](https://i.gyazo.com/bbe861d6f1

元記事を表示

【Notion API × LINE Notify】Notionに記録した内容を整形して定期的にLINEに送信する

Notionに書き込んだ情報の必要な部分だけを取得&整形して
定期的にLINEに送ってくれる仕組みを実装してみたので、簡単にまとめます:vulcan:

## :sunny: 完成イメージ・使い方

Notionのデータベース名やLINEメッセージの整形をカスタムすれば
もちろん上記以外の用途にも応用できます:ok_hand:

### Notion
![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1322014/b1384ba8-fcb0-f377-1d7d-8bba81b07788.png)
1. 毎月レコード(行)を増やして、家賃・光熱費・通信費を書き込む
2. 書き込みが完了したら、ステータスを「Done」に変更する

### LINE
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1322014/797e5290-a38f-988b-0b62-2cbb347d7b4c.png

元記事を表示

AWS LambdaでPostgreSQLのRDSプロキシを使用する方法 – Node.js

はいさい!ちゅらデータぬオースティンやいびーん。

# 概要
RDSデータベースへの接続を管理してくれるRDSプロキシを介して、AWSのLambda関数でPostgreSQLのデータベースに接続する方法を紹介します。

今回は、Node.js用のLambda関数を使います。

## 背景
Lambda関数でコネクションを張ると、パフォーマンスの問題が大きく関わってくるので、直接に接続するのは避けた方がいいです。

そこで、RDSプロキシを使用すると、Lambda関数の中で効率よくデータベースにアクセスできます。

前回の記事で、PostgreSQLのRDSプロキシの作り方を紹介しましたが、それを元に今回の記事を書いていきます。

https://qiita.com/tronicboy/items/c982eb046907b2965d08

# 目次
1. Node.jsのLambda関数のソースコードを書く
1. Lambda関数を作成する
1. RDSプロキシを設定する
1. 実行してみる

# Node.jsのLambda関数のソースコードを書く
ローカルで作成したLambda関数

元記事を表示

AWS SAMを使って最もシンプルにLambda × S3 のS3イベント駆動プログラムを構築する

# 概要

今回は以前から紹介しているAWS LambdaのAWS サーバーレスアプリケーションモデル (Serverless Application Model)、AWS SAMの続編になります。

【以前の記事】
導入編:[AWS Lambda SAMとは?~AWS SAMを使ってPythonのLambdaプログラムを簡単に作成する~](https://qiita.com/fkooo/items/2dc5ded5149379d7305a “AWS Lambda SAMとは?~AWS SAMを使ってPythonのLambdaプログラムを簡単に作成する~”)
第1回:[AWS SAMを使って最もシンプルにLambda × APIGatewayのWebAPIを構築する](https://qiita.com/fkooo/items/e08cdea0f73f60dabd3d “AWS SAMを使って最もシンプルにLambda × APIGatewayのWebAPIを構築する”)
第2回:AWS SAMを使って最もシンプルにLambda × S3 のS3イベント駆動プログラムを構築する

第1

元記事を表示

Lambda関数をローカル環境からワンタッチでデプロイする

ローカルPythonコードからboto3を経由してLambda関数を更新します。
作成済のLambda関数のロジック修正が簡単に実施できるので便利だと思います。

## コード説明

– デプロイ対象のLambda関数はPythonを前提とします。
– デプロイ対象のLambda関数は作成済であることを前提とします。
– このPythonファイルを置き換えたいLambda関数と同一フォルダへ配置します。
– Pythonファイルが置かれたフォルダ名がLambda関数名と一致することを前提とします。
– Lambda関数の中身を更新します。

`upload_lambda.py`

“`python
import io
import os
from zipfile import ZipFile
import boto3
import pathlib

def main(funcName):
print(“main start”)
file_name = “lambda_function.py”
buf = io.BytesIO()
with ZipF

元記事を表示

RIEを使ってLambdaコンテナイメージをローカルでエミュレートする

# はじめに
前回Lambdaコンテナイメージを、AWS以外のベースイメージから作る方法を記事にしました。

https://qiita.com/a_b_/items/337c4afee2e330efefe1

作成する際AWS Lambda Runtime Interface Emulator (RIE) を使って、ローカルでLambdaをエミュレートする方法を試しましたので記事にしました。

# 参考

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images-test.html

https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-container-image-support/

# やったこと
前回同様に、プロジェクトのディレクトリを作成し、Pythonのファイルを作成します。
Dockerfileは、エミュレータを含めるかどうかで記述が変わりますので、ここではファイルを作成するだけです。
“`bash
# プロジェクトディレクトリ作成
mkdir sam

元記事を表示

OTHERカテゴリの最新記事