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

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

関連づけられてない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

元記事を表示

Lambdaでpythonの外部ライブラリをレイヤーで使用する方法

# この記事で出来るようになること
#### 結論:外部ライブラリをAWS Lambdaのレイヤーに追加することで、インラインコード編集をできるようにする。

pythonを使用する際に、外部ライブラリを使用することはよくあります。
しかし、Lambda関数自体にローカルでpipしたライブラリファイルをアップロードすると
`Lambda 関数「***」のデプロイパッケージが大きすぎて、インラインコード編集を有効にできません。ただし、関数を呼び出すことはできます。`
と出てしまう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748917/23335e1f-2df6-2cce-8154-60eea8e17667.png)
すると、インラインコード編集が出来なくなってしまう。
インラインコード編集を使用しない人にとっては問題はないが、便利であるので使える状態にしておきたい。

# ローカルで外部ライブラリをzip化する
本記事の例ではLINE APIで使用する`line-bot-sdk`を

元記事を表示

mysql2/promise を使用し、VPC内のLambdaから RDS Ploxy 経由で RDSに接続してみた [Node.js]

# はじめに
RDS Ploxy 経由で MySQL にアクセスするLambdaをVPC内で実行させましたので、手順をまとめます。

以前、`mysql`モジュールを使用して同様の処理をしましたが、`mysql2`モジュールの方がコード量が少ないため、今回は`mysql2`を使用してみます。

https://qiita.com/hirai-11/items/b0b9abc25e8f49c3815b

![スクリーンショット 2022-06-23 22.00.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/6391a70c-3d26-f29d-2a5c-a8db47bbb6c3.png)

# RDS Ploxyの作成
RDS Ploxyは、以前作成した記事がありますので、こちらを参考にしてください。

https://qiita.com/hirai-11/items/07b25f81f1a983e0191c

# private subnetにLambdaを作成

## 設定

元記事を表示

Redmineに対してREST APIを実行してみる

# AWS Lambdaを使ってRestAPIを実行してみる

– RedmineにはRestAPIでのアクセスができる(https://www.redmine.org/projects/redmine/wiki/Rest_api にAPIの概要)

## 1. Redmineの管理者で `RESTによるWebサービスを有効にする`をチェックONにする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/8316574e-d9a6-b6c0-b3f3-41ee88a9814f.png)

## 2. Redmineの画面で個人設定画面の右より、APIアクセスキーを発行する
![redmine-api-key.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/55654d6f-0b14-0517-07a5-97ca52acb602.png)

## 3.AWS Lambdaのマネジ

元記事を表示

「AWS CDKのコマンドオプションでサービスのENV変えてーなー」と感じた方へ

CDKでStackを簡単に組めるのはとても便利ですよね。

ただ、デプロイ先のアカウント(dev / test / prodなど)によって、
例えば
・APIの制限
・消費ユニットの制御
・テストデータの参照
などをしたい時、変数で簡単に制御できればいいなと思ったので、
今回復習も兼ねてデプロイオプションでサービスのenv値を変更する方法を紹介します。

編集するファイルは全部で3つです。
① app.py
② cdk.json
③ *_stack.py (自身のstackファイル)
→以下StackファイルはDynamoLambdaStackとします。

### ① app.py
“`python
#!/usr/bin/env python3

from aws_cdk import App

from dynamodb_lambda.dynamodb_lambda_stack import DynamodbLambdaStack

app = App()
# 以下2行追加
cdk_env = app.node.try_get_context(“cdk_env”)
prin

元記事を表示

AWS Lambda

# AWS Lambda とは
Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。Lambda は可用性の高いコンピューティングインフラストラクチャでコードを実行し、コンピューティングリソースの管理をすべて担当します。これにはサーバーおよびオペレーティングシステムのメンテナンス、容量のプロビジョニングおよびオートスケーリング、コードのモニタリングおよびログ記録などが含まれます。Lambda を使用すると、実質どのようなタイプのアプリケーションやバックエンドサービスに対してもコードを実行できます。必要なのは、Lambda がサポートするいずれかの言語でコードを指定することだけです。

コードを Lambda 関数に整理します。Lambda は必要に応じて関数を実行し、1 日あたり数個から 1 秒あたり数千個のリクエストまで自動的にスケーリングします。課金は実際に消費したコンピューティング時間に対してのみ発生します。コードが実行されていない場合、料金は発生しません。

Lambda API を使用して [Lambda 関数](h

元記事を表示

ServerlessFrameworkでサービス名を長くしすぎるとデプロイできない

# はじめに
ServerlessFrameworkでAPIGateway, Lambdaへのデプロイした際に発生したエラーについて記録に残したいと思います。

# 原因
デプロイの際、作成されるIamRoleの文字数制限を超えてしまい、エラーが発生する。

### エラー内容
“`bash
Error:
CREATE_FAILED: IamRoleLambdaExecution (AWS::IAM::Role)
1 validation error detected: Value ‘XXXXXXX-XXXX-XXXXXXXXXXXXXX-XXXX-XXX-dev-ap-northeast-1-lambdaRole’ at ‘roleName’ failed to satisfy constraint: Member must have length less than or equal to 64 (Service: AmazonIdentityManagement; Status Code: 400; Error Code: ValidationError; Request ID

元記事を表示

docker/ecr/lambda(python3.9)を使って、chromeとseleniumでスクレイピングする

serverless-chromeを使った記事は割とあるが、chromeのバージョンやらpythonのバージョンやらをいい感じにできない。
ecrを使うとlambdaにデプロイできるサイズ上限が一気にあがるので、普通に自前でchromeビルドして全部dockerimageに突っ込んじゃえばよくね?というもの。

https://github.com/adieuadieu/serverless-chrome

ローカルでdockerを使います。
python3.9のlambdaで動かします。

# ファイル
“`
.
├── test.py
└── Dockerfile
“`

# コード

この例ではchrome103とlambda(python3.9)

“`Dockerfile:Dockerfile
# chromeのセットアップ用
FROM public.ecr.aws/lambda/python:3.9 as build
RUN yum install -y unzip && \
curl -Lo “/tmp/chromedriver.zip” “https://

元記事を表示

OTHERカテゴリの最新記事