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

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

LambdaでDetectron2(物体検出)して、実行速度はかってみた。

## 概要

– モデル:resnet50 + frcnn
– lambdaのメモリサイズ:8192MB

結論先に書くと、
コールドスタートありで9秒ほど。
コールドスタートなしでなんと3秒!

簡単にapi作るにはいいかもですね。

(メモ書きです。)

## ファイル郡

“`Dockerfile
FROM nvidia/cuda:10.1-cudnn7-devel

ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
python3-opencv ca-certificates python3-dev git wget sudo \
cmake ninja-build && \
rm -rf /var/lib/apt/lists/*
RUN ln -sv /usr/bin/python3 /usr/bin/python

WORKDIR /home

ENV PATH=”/home/.local/bin:${PATH}”
RUN wget https://boot

元記事を表示

【AWS Lambda】Pythonで超シンプルに任意のコンテナ Imageを使用する

## 概要
AWS LambdaでContainer Image Supportが発表されました。
[AWS Lambda の新機能 – コンテナイメージのサポート](https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-container-image-support/)

しかし、AWS公式ドキュメントに書かれているサンプルコードは、
癖があって少しわかりづらい内容です。

本記事では、出来るだけシンプルなデプロイ・実行方法について書いていきます。

## 対象読者

– Dockerやコンテナの知識がある。
– AWSのLambdaのざっくりとした知識がある。
– aws-cliをインストール・セットアップしている。

## ハンズオン
以下の流れで行います。
1. ファイルの準備
2. Image作成・ローカルでの実行
3. Imageのデプロイ
4. Lambdaの設定・実行

今回のディレクトリ構成です。
応用が効きやすいよう、できるだけシンプルにしました。

“`sh
# ディレクトリ構成
├── Dockerfi

元記事を表示

API GatewayからLambdaを呼び出すときにevent.bodyをオブジェクトで受け取る

# はじめに

AWS API GatewayからLambdaを呼び出すこと、よくあると思います。
Lambdaでは`event.body`でリクエストボディを取得できますが、
デフォルトではこの`body`は文字列なので、
`Content-Type:application/json`の場合も「JSON文字列」になります。
そのため、一度JSONをパースしてあげないといけません。

たとえばNode.jsの場合はこんな感じ。

“`js:index.js
exports.handler = async (event) => {
const body = JSON.parse(event.body);
console.log(‘api received!’, body);

const response = {
statusCode: 200,
body: JSON.stringify([body.hoge, body.fuga, body.piyo]),
};
return response;
};
“`

元記事を表示

python3.8でlambda-uploader使用した時にpython3.8が見つからないとエラーを吐かれた時の原因調査

##事の発端
AWSのLambda上にそれなりに複雑になる予定のpythonの関数を追加する事になったが、lambda上ではpipが使用できないため、外部モジュールを使用する関数を使用する場合、
**[一つ一つ使用している外部モジュールを\Python〇〇\Lib\site-packages\] から探し出し纏めてzip化するという賽の河原のようなおちねり作業が発生する。**
当然ながら人間は信用ならない生物のため、こんな作業を毎回手作業でやろうものなら**パンジャンドラムとマーマイトをガンギメした某ブリテンの暴走青列車(ブルートレイン)の如く事故が発生する** 

**事故は起こるさ? 事故は人間が起こすものなんだよ!**
(※加えてこの作業にとても時間が取られる)

そこでlambda-uploaderを使用し、外部モジュールの抽出作業を任せてしまうことで効率化と事故発生率を少しでも下げようと画策した。

##作業環境
– Windows10(64bit)
– python3.8(64bitインストーラ使用)3.8なのは2020/12月末時点でlambdaがpython3.8以降

元記事を表示

docker-compose環境でRuby on Jetsの構築からデプロイまで<後編>

## 概要

以前の記事でRuby on Jetsのローカル環境を作成するところまで書きました。

[docker-compose環境でRuby on Jetsの構築からデプロイまで<前編>](https://qiita.com/takashi-5/items/74b8ac4a342ae7372205)

今回は実際にデプロイするところまでまとめてみたいと思います。

## ユーザを準備

コンソールからIAMユーザを作成し、credentialを取得してください。

[https://console.aws.amazon.com/iam/home#/users](https://console.aws.amazon.com/iam/home#/users)

今回デプロイするためだけのユーザということで「プログラムによるアクセス」にチェックを入れます。

![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923148/7649b37b-4e94-b873-4b58-657238748

元記事を表示

Slack – APIGateway – Lambda(Python) – RedShift インタラクティブアプリの作り方

## 概要

表題のとおりのSlackアプリケーションを作成する。
まともに書くと長文になるので、以下の要点ポイントのみを重点的に記載する。

– Slackアプリケーションの留意点
– Slack側のアプリケーション設定(権限周り)
– SlackのHomeView(Homeタブ)やattachmentに関して
– Lambda(python)周りの実装とライブラリ利用
– APIGateWay設定

なお、シンプルに試すだけならWebHookURLを設定してLambdaとかをスケジュール実行してPOSTすれば終わるが、SlackClientライブラリを利用したインタラクティブなリクエストに対するメッセージ通知ができるようなシーンを想定している。

手順通りにやれば動くものが作れるというよりは、
調べるのが面倒だったり、案外ハマったポイントを断片的に紹介する点はご承知おきください。

## Slackアプリケーションを作成するにあたっての留意点

#### レスポンスは3秒以内に一旦返す
ボタンをクリックし、レスポンスを返す場合などは3秒を超えるとエラーになる。

これは、処理でひと

元記事を表示

Serverless FrameworkとAWS Lambda with Pythonの環境にpipインストール

pipインストールが必要なAWS LambdaのPythonスクリプトをServerless Frameworkでデプロイする方法です。

gemインストールが必要なAWS LambdaのRubyスクリプトについては[前回](https://qiita.com/suzuki-navi/items/1369b11a8f5d7f467645)の記事で書きました。

# 手順概要

プラグインを入れれば簡単にできます。

1. `serverless plugin install -n serverless-python-requirements`
2. `requirements.txt` 作成
3. あとは普通にデプロイすると勝手にいろいろやってくれる

# 手順詳細

## Serverless Frameworkのサービス作成

“`console
$ serverless create –template aws-python3
Serverless: Generating boilerplate…
_______

元記事を表示

UIFlowでM5Stackはじめーる

# はじめに
積まれていたM5Stackをすぐに始めるための備忘録です。

# 開発環境
– M5Stack
– Windows 10 PC

# 導入
1.[UIFlow Quick Start](https://docs.m5stack.com/#/en/quick_start/m5core/m5stack_core_get_started_MicroPython)を参考にします

2.ドライバーをインストールします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/620173ce-bef9-c2d1-a971-ce5874fc5494.png)

3.M5Burnerを起動します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/2ec80c98-8223-e011-b892-e8a714e5ad71.png)

4.UIFLOW(CORE)のファームウェアをBur

元記事を表示

Kinesis Data StreamsをLambda関数で処理する場合のCloudWatchメトリクスの読み方[Lambda編]

Kinesis Data StreamsのレコードをLambda関数で処理するアプリケーションについて、CloudWatchメトリクスを分析することで以下の様な用途に役立てることができます。

* アプリケーションの動作におけるエラーの兆候を見つける
* 入力されるデータ量が増えるに従ってKinesis Data Streamのシャードを拡張するといった例にみられるように、リソースの拡張が必要な兆候を見つける
* AWSサービス利用料が適正であるかを分析し、コスト削減につなげる

上記の様な目的でCloudWatchメトリクスを分析した経験から、Kinesis Data StreamsとLambda関数のCloudWatchメトリクスをどのように分析するのかをまとめてみたいと思います。

# Lambda関数のCloudWatchメトリクス
ここでは、Kinesis Data Streamsのレコードを処理するLambda関数に関連するCloudWatchメトリクスの中でコスト、エラー検知、拡張性の観点で注目すべきメトリクスを取り上げたいと思います。

### Invocations

元記事を表示

【無料で】クラロワAPIをlambdaから叩いてLINEに送る

以前、[クラロワAPIをlambdaから叩いてLINEに送る](https://qiita.com/meihei/items/98a21ac0b41fe7193e40) という記事を書きました

システム自体はこちらで完成なのですが、結構お金がかかるという問題がありました

この問題の原因はクラロワAPI([Clash Royale API](https://developer.clashroyale.com/#))がアクセス可能なIPを制限しているため生じていました
今回、RoyaleAPIが提供している公開Proxyを使うことで、**無料でクラロワAPIをlambdaから叩いてLINEに送る**ことが出来たので記事にしていきます

## 概要
### 完成したもの

以前の記事と全く同じで、`プレイヤー名`と`放置している期間`がLINEに届きます

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280373/4b15322a-6fb8-75ae-bced-bf6e5a91c59c.png)

###

元記事を表示

AWS Lambda(python)で Selenium を動かしてハマった点まとめ

# はじめに

Python を用いてスクレイピングをするにあたり、認証周りで躓き手っ取り早く解決するために Selenium を用いて実装したものの、Lambda で実行しようとしたときに躓いたので、メモとして残します(書きっぷりが雑になっているかもしれません…)
※ この記事は SAM を使わずに実装してます:bow:

# 作業環境

* Windows 10
* python 3.7 が望ましいけど、3.8 でも大抵はどうにでもなった
* (使い方にもよるので、バージョン管理で切り替えられるようになっているとよい)

# ハマりポイントその1

Q. Selenium を使うにあたって、headless-chromium と chromedriver を使えばいいの?
A. この2つを圧縮して、レイヤーに登録する

## 詳細

AWS Lambda で使用できるヘッドレスブラウザとして以下が提供されています
この、chrome と chromedriver のバージョンを合わせて1つのファイルとして圧縮します
https://github.com/adieuadie

元記事を表示

API GatewayとLambda(Python)でLINE BOT(Messaging API)開発 [後編]

# API GatewayとLambda(Python)でLINE BOT(Messaging API)開発 [後編]

## はじめに
[前編](https://qiita.com/w2or3w/items/1b80bfbae59fe19e2015)では主に環境構築と、「こんにちは!」と返すだけの簡単なサンプルを載せました。
後編となる本記事では、line-bot-sdkを利用して以下のことを実装してみたいと思います。
・文字列の応答
・ユーザー情報の取得
・選択肢の提示、選ばれたものの取得
・位置情報の受信、位置情報の送信

## line-bot-sdkのインストール
Lambdaでデプロイする前提ですので、lambda_function.pyと同じ場所にインストールする必要があります。
インストールしたライブラリ類をまとめてzip圧縮できるよう、適当なフォルダ(ここではsource)の中で行いましょう。

“`
|- source
|- lambda_function.py
“`

ライブラリはpipでインストールします。

“`bash
$ cd source
$

元記事を表示

API GatewayとLambda(Python)でLINE BOT(Messaging API)開発 [前編]

# API GatewayとLambda(Python)でLINE BOT(Messaging API)開発 [前編]

## はじめに
先日、以前より興味のあったLINE BOT(Messaging API)を初めて作ってみました。
思っていたより簡単だったので、今後も気軽に作ってけたらなと思ってます。
せっかく作れるようになったので、このフレッシュな気持ちがなくなる前に記事を書いておきます。

前編と後編と、2つに分けて書こうと思います。
前編では主に環境構築。何か話しかけると「こんにちは!」とだけ返すBOTを作成します。
後編ではline-bot-sdkというライブラリを利用して、メッセージ以外のやり取りをする実装についても書こうと思ってます。

## LINE Developpersでプロバイダーとチャンネルの作成
まずはLINE Developpersで作業します。
[LINE Developpers](https://developers.line.biz/ja/)にアカウントが必要ですが、登録手順については割愛。
[LINE Developpers の コンソール](ht

元記事を表示

AWS AmplifyでLambdaを使うwith Go

Amplifyはちょくちょく使う機会があるのですが、Amplifyを介したLambdaってほぼ使った事ないぞ、と思ったので使ってみようと思い立ちました。
そしてLambdaでGoが使えるけど、ちゃんと使った事なかった気がするので使ってみたいなとついでに。

# Functionが使えるらしい
FUNCTIONS – Overview
https://docs.amplify.aws/cli/function

## 環境

– win10 Home(surface go) + WSL2 + ubuntu18.04
– node v14.1.0
– npm 6.14.5
– go version go1.10.4 linux/amd64

# 使ってみる

## 前置き

vueを使う設定にてamplifyをsetupしておきます。
詳しくはこのあたりから。
https://docs.amplify.aws/start/getting-started/installation/q/integration/vue

“` bash
$ vue create myamplifyprojec

元記事を表示

Serverless FrameworkとAWS Lambda with Rubyの環境にgemインストール

gemインストールが必要なAWS LambdaのRubyスクリプトをServerless Frameworkでデプロイする方法です。

# 手順概要

プラグインを入れれば簡単にできます。

1. `serverless plugin install -n serverless-ruby-layer`
2. `Gemfile` 作成
3. あとは普通にデプロイすると勝手にいろいろやってくれる

# 手順詳細

## Serverless Frameworkのサービス作成

“`console
$ serverless create –template aws-ruby
Serverless: Generating boilerplate…
_______ __
| _ .—–.—-.–.–.—–.—-| .—–.—–.—–.
| |___| -__| _| | | -__| _| | -__|__ –|__ –|
|____ |___

元記事を表示

AWS LambdaがコンテナイメージをサポートしたのでPuppeteerしてみた

あけましておめでとうございます。

AWS Lambdaがコンテナイメージをサポートしたので、Puppeteerでキャプチャを取るLambdaをつくてみました。

クラスメソッドさんの以下の記事の通りで、ローカルでの実行はうまくいきましたが、Lambdaへのデプロイするとうまく動作しませんでした。(Chromeの起動タイミングでエラー?)

Lambda コンテナイメージで Puppeteer を使ってみた | Developers.IO
https://dev.classmethod.jp/articles/try-using-puppeteer-with-a-lambda-container-image/

試行錯誤の結果が、こちらとなります。

# ソース

全体はこちらにアップロード済みです。
https://github.com/moritalous/m5core2-yweather/tree/master/lambda

## Dockerfile

クラスメソッドさんはGoogle Chromeとpuppeteer-coreの組み合わせでしたが、puppeteer単体で

元記事を表示

個人的に気になる最近のサーバーレス事情(2021/01)

# 思い
EC2の管理~~なんて~~したくない。
個人開発の金銭的ハードルが高い。
バーストアクセスでダウン…?まじかよ。。。

**サーバーレス** って素敵なワード… :star2:

# 気になったお話
それぞれわかりやすそうな記事を貼り付けていますが公式のものは各記事からリンクで飛んでください :pray:
– [Lambdaの実行時間の課金単位が1ミリ秒に短縮されました](https://dev.classmethod.jp/articles/lambda-billed-duration-1ms/)
– [RDS ProxyがGAされました!!](https://dev.classmethod.jp/articles/rds-proxy-ga/)
– [Lambda 関数が VPC 環境で改善されます](https://aws.amazon.com/jp/blogs/news/announcing-improved-vpc-networking-for-aws-lambda-functions/)
– [Lambdaのメモリ割り当てを自動で最適化!!AWS Lam

元記事を表示

Jets触ってみた(ruby serverless)

# Jetsとは?
rubyをサーバーレスで動かせ、なおかつRailsライクにコードがかけるフレームワークです。
DBとしてRDBとDynamoDBの両方に対応されている。(今回はRDSと組み合わせました)
=> RDBはORマッパーとしてActiveRecordが採用されているので本当にRailsのようにかけました
https://rubyonjets.com/

# 背景
Railsは使い慣れているけどEC2なりFargateなどの料金を地味に取られ続ける。。
=> 個人開発ではなるべく金額下げたいなぁというお気持ち

Serverless Frameworkを利用してlambda x rubyを試してみる
=> lambdaとRDSの相性が悪いがDynamoよくわからん…(個人開発としてはこれも頑張って勉強したい :muscle: )

ちょっとした個人開発用にRailsをサーバーレスで動かせないかなぁ。。。。
そんな時に二つの記事に初めまして
[「Lambda-RDS」パターンももう怖くない!?フェイルオーバーももっと早くなるよ! RDS Proxyがプレビュー公開されまし

元記事を表示

`chromedriver’ executable may have wrong permissions. を解決する

先日seleniumをlambdaで運用しよとしたときに遭遇しました。

permissionなんて設定したっけな?と思いましたどうやらosに対応していないバージョンを使用するとこのエラーが出てきてしまうようです。

### 解決法

lambdaのOSはLinuxなのでLinuxに対応したバージョンをインストールしてからレイヤーにアップロードする。

こちらに関してはLinux環境を用意する必要があるのでaws cloud9を使用すると簡単です。

[>>Lambdaでseleniumを使ってスクレイピング](https://qiita.com/ichihara-development/items/5e61c3424b3176bc6096)

元記事を表示

‘lambda_function’: No module named ‘selenium’ が出るとき

## seleniumのPATHが間違っている
pythonの場合lambdaレイヤーは
・python
・python/lib/python3.x/site-packages

配下を自動で読み込むため、アップロードしたseleniumzipファイルが上記のディレクトリ構造になっているかをもう一度確認してみてください。

## zipファイルを解凍していない

外部からダウンロードしてきたseleiumをzipのままで保存し、親ディレクトリごと圧縮してしまうとlambdaでseleniumを使用することができません。

![スクリーンショット (146).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536448/46f56de0-83cc-22f3-7ebf-ac8c815b696e.png)

一度解凍してから再びフォルダを圧縮しアップロードしなおすと上手くいきます。

元記事を表示

OTHERカテゴリの最新記事