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

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

re:Invent Andy Jassy Keynoteの気になったもの

# 背景
さっきre:InventのメインイベントのAndy JassyのKeynoteが終わりました
たくさん新サービスは出ましたが、気になったものをピックアップしてみます
新サービスが発表されて詳細を見たいってなったら、だいたい[AWS News Blog](https://aws.amazon.com/jp/blogs/aws/)に記事が出るので、それを見てました

# 気になったもの一覧
## コンピューティング
### Lambdaコンテナ対応

[New for AWS Lambda – Container Image Support | Amazon Web Services](https://aws.amazon.com/jp/blogs/aws/new-for-aws-lambda-container-image-support/)

### AWS Proton

[Preview: AWS Proton – Automated Management for Container and Serverless Deployments | Amazon Web Serv

元記事を表示

パソコン初心者がおうむ返しlinebotを作ってみた話

##はじめに
これは
この記事はこちらの記事を参考してかいています。
詳しくはこちらまでhttps://qiita.com/inoue2002/items/a87df2b520f8b6e37f42
##目次
1 環境構築(必要なものをダウンロード)
>ngrok
node.js
git
VScode

##環境構築(ngrok)
[ngrok](https://ngrok.com/download)をダウンロードします。
 ↑こちらからサイトに飛べます。
![5DC24C03-CAE7-4AE0-999D-3AAC0D000A2A.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763535/d726b334-f324-fbef-b775-5788fd673c41.png)
下の方にこちらがでてきます。あとは解凍するだけ。![6F4250F8-367F-4386-952D-6A3065A0EAC8_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northe

元記事を表示

LambdaのProvisioned Concurrencyと1年付き合ってみて思ったこと。

# 1年付き合って見て思ったこと。

Lambdaは毎年たくさん機能アップデートがあるけど、やっぱりLambdaの醍醐味はそのシンプルさだと思います。シンプルに使えるように、Lambdaだけでシステムやロジック設計をするのではなくて、AWSのビルディングブロックの組み合わせで適材適所で活かしあった方が良いなと思う1年でした。

Provisioned Concurrencyによって、より多くのワークロードでLambdaが利用された1年になりましたが、それ以上にProvisioned Concurrencyを利用しなくても、そのまま素で自動的にスケールしてくれるLambdaの良さを再確認した1年でもありました。

# この記事について

執筆時はre:Invent 2020の前日です。
ですので、re:Invent2020の内容は一切含みません。

そしてProvisioned Concurrencyは2019年のre:Invent時期に登場したAWS Lambdaの機能です。
今回は、そろそろこなれ感のあるこの機能について解説します。

https://aws.amazon.com/a

元記事を表示

【初心者向け】AWS Lambda(Python) + API Gatewayで運行情報をお知らせしてくれるSlackAppを作るハンズオン!

## はじめに
こんにちは!DMM WEBCAMPでメンターをしています@piyorです。

通学・出勤の時に電車が遅延しているかの確認をSlackで出来たら
チームメンバーなどで共有ができて便利ですよね

という訳で、運行状況をPythonでスクレイピングしてその結果をSlackに送信するものを作成しました。

### 対象者
– サーバレス(AWS Lambda)に興味がある方
– Webスクレイピングに興味がある方
– SlackAppに興味がある方

※今回Pythonのコードについては基本的には説明しません
※スクレイピングとはなに?って方は[こちらの記事](https://www.sejuku.net/blog/51241)などを参考にしてください
※スクレイピングを禁止しているサイトも存在します。[こちらの記事](https://qiita.com/n_oshiumi/items/b4efd1f40ec0a1b77376)などを参考にしましょう

### 作るもの

?こんな感じに、遅延・運休してる路線を通知してくれます
![スクリーンショット 2020-12-01

元記事を表示

【Lambda】Lambda関数②

## 同時実行数
**同時実行数**:ある時点で同時に実行されているLambda関数の数(デフォルトでは同一アカウントの同一リージョン内につき最大1,000)

– 関数レベルの同時実行数を設定することも可能
– アカウントレベルの同時実行数 – 関数レベルの同時実行数 = 他のLambda関数で共有される同時実行数

## スロットリング
**スロットリング**:各アカウントごとに設定されているリソースの利用上限を超えた場合に、利用が制限されること

スロットリングされたリクエストの処理方法

|イベントソースのタイプ|処理方法|
|:–|:–|
|同期呼び出し
(プッシュ型)|・429エラーを返却する
・リトライするためには、呼び出し元でリトライ作業を行う|
|非同期呼び出し
(プッシュ型)|・最大6時間自動的に間を空けてリトライする
・デッドレターキューを設定することで、スロットリングされた原因を調査可能|
|ストリームベース
(プル型)|・データの有効期限が切れるまでスロットリングされたデータの処理を試みる
・処理の順序を保つため、データ

元記事を表示

【Lambda】Lambda関数①

## 基本設定
– メモリは最小128MBから最大3,008MBまで64MB単位で選択可能

→ 最適なメモリサイズを指定することでコスト最適化が可能
– タイムアウト時間は最長15分まで指定可能

→ タイムアウト時間を超えるLambda関数の実行は全て失敗となる
– メモリに比例するCPUが割り当てられる(メモリと独立しての設定は不可)
– Lambda関数の設定情報として環境変数を定義しコード内から参照することで、処理に応じて関数内の変数の値を変更可能

## Lambdaレイヤー
複数のLambda関数でコードを共有するための機能

– 複数のLambda関数で用いられる共通機能をレイヤーとして登録すれば、それをLambda関数で利用するレイヤーとして指定するだけで複数のLambda関数を利用出来る
– 1つのLambda関数につきレイヤーを5つまで指定可能

## バージョン / エイリアス
### バージョン
Lambda関数のバージョンを発行する機能

– 全てのLambda関数には **$LATEST** という特別なバージョン(常に最新のバージョン)が存在

元記事を表示

【Lambda】AWS Lambdaとは

## Lambdaとは
サーバーの準備・管理をすることなく、Lambda関数と呼ばれるコードを実行出来るコンピューティングサービス

**FaaS(Function as a Service)**:イベントが発生したときに起動させる機能(Function)だけを利用者が開発し、それ以外のサービスはすべてAWSなどのクラウドサービス企業が責任を持つ形態

### メリット
– トランザクション量に応じて自動でスケーリングする
– 起動時点で高可用性が保証されている
– Lambda関数の実行中のみが課金対象で、アイドル時間については利用料がかからない

## Lambda関数
Lambdaの中心となる構成要素としてプログラミング言語で記述された機能

– イベントソースでのイベントをトリガーとして実行される
– 詳細 → [【Lambda】Lambda関数①](https://qiita.com/777cb_/items/f39218b5524ceca64514)、[【Lambda】Lambda関数②](https://qiita.com/777cb_/items/e5895c6d57d

元記事を表示

Bolt for Python が FaaS での実行のために解決した課題

## Bolt とは & 自己紹介

近年、Slack のプラットフォーム機能開発チームは、Slack 連携アプリを作るための公式フレームワークである「[Bolt(ボルト)](https://api.slack.com/tools/bolt)」の開発と普及活動に力を入れています。私はこの Bolt の開発を担当しています(特に Python と Java は大部分を私が手がけたので、思い入れもひとしおです)。

Bolt を使うと Web API を使ってメッセージやファイルを投稿して通知するだけのシンプルな連携ではなく、ボタンやモーダルを活用したインタラクティブなアプリを簡単に作ることができます。また、そのような UI 部品を使わない場合でも、Bolt を使うと Events API の受信とリスナー関数の実装を非常に簡単に実装することができます。

今年のアドベントカレンダーは、まだそこそこ空きがあるようなので、埋まらなかった日については、この Bolt のノウハウを中心に記事を投稿していこうと思っています。

## それでは本題

この記事では、[Bolt for Python]

元記事を表示

node.jsとserverlessを使ってlambdaでアプリを動かす -複数の関数をlambdaにアップする-

## 前回までのあらすじ
[node.jsとserverlessでローカル環境のコードをlambdaにアップできましたとさ](https://qiita.com/udonnamerou/private/734a35bf94af4dcdecbb)

## 目的
ローカル環境で作成した複数の関数をLambdaにアップして動かしたい

## 実践
#### 環境
node.js v12.18.2

#### ディレクトリ構成
“`
ls -a
. .gitignore node_modules package.json
.. handler.js package-lock.json serverless.yml
“`

#### package.jsonの確認
“`
{
“name”: “application-no-namae-desu”,
“version”: “1.0.0”,
“descriptio

元記事を表示

[AWS][Aurora]テーブルにレコードが挿入された際にLambdaを呼び出す方法

##はじめに
“Aurora DBのテーブルにレコードが挿入されたらLambda関数を呼び出す”という方法に関して情報が少なかったため、備忘録として残しておきます。

##参考
[Amazon Aurora MySQL DB クラスターからの Lambda 関数の呼び出し](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Lambda.html)
[AuroraへのInsert TriggerでLambdaを呼びだしてServerlessで処理する](https://qiita.com/ukitiyan/items/bdd25946bbbf7a70903e)
[ストアドプロシージャの基本的ななにか](https://qiita.com/setsuna82001/items/e742338eb93e3a48ba46)

##何がしたかったか
以下の処理を実現させるために、AuroraのInsert Triggerを利用してLambdaを呼び出す実装を行

元記事を表示

BoltとServerless Frameworkを使ってSlackチャットボットをAWS Lambdaで実行する

# はじめに

AWS LambdaとBoltフレームワークを使って、Slackのチャットボットを作成しました。
[Bolt入門ガイド](https://slack.dev/bolt-js/ja-jp/tutorial/getting-started)の手順では、`ngrok`を使ってローカルPC上にボットを起動します。
実際の運用ではローカルPC上ではなくサーバ上にアプリを起動すると思いますが、AWS環境へのデプロイ方法の詳細は記載されていないため、備忘録も兼ねて投稿します。

# 各種ツールやライブラリの概要

名称 | 概要
—- | —-
Slack | チャットツール。アプリを作成しカスタマイズできる。
Bolt | Slackアプリ開発のためのフレームワーク。
AWS Lambda | AWSが提供するサーバレス環境。
Serverless Framework | AWS Lambdaを始めとしたサーバレス環境にデプロイするためのフレームワーク。
ngrok | ローカル環境をhttpsで公開できるサービス。開発環境として利用。

**今回実行した環境**

項目

元記事を表示

AWS LambdaからPythonを実行してみた

# やったこと
AWSの勉強がてら、「[QiitaマイページからLGTM / View / ストック数の一覧を確認できるようにしてみた](https://qiita.com/koob/items/20881aa910eaa2cad3a9)」で作ったpythonファイルをAWS Lambdaから定期実行できるようにしてみました。
(過去記事ではHerokuで定期実行させていました)

ちょうど同じ時期に[AWS Lambdaでpythonプログラムの定期実行](https://qiita.com/hiiii/items/0f442a2284cfdce7fbcf)という記事が上がっていたので、全体の流れはこちらを参考にさせていただきました。

ところどころ追加で調べた箇所があるので、この記事はそちらをメインにした内容になります。
また例によって、AWSアカウントは作成済みとします。

ちなみに料金の方は
> AWS Lambda の無料利用枠には、1 か月ごとに 100 万件の無料リクエスト、および 40 万 GB-秒のコンピューティング時間が、それぞれ含まれます。

とあるので今回のよう

元記事を表示

AWS LambdaでAPI開発するときのパターン集

# 結論
AWS LambdaでAPI開発をする場合は以下の4パターンが考えられます。それぞれにメリットデメリットがあるので、要件やメンバーのスキルセットなどをもとに選択することになると思います。

###① Functions(別ソース)パターン
![functions pattern.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234396/a37a57da-4ab4-b301-72d9-ca3b41abfaea.png)

###② Functions(同一ソース)パターン
![functions pattern2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234396/0f854adb-be5a-a915-2004-4e9c453e331b.png)

###③ WebFrameworkパターン
![proxy integration pattern.png](https://qiita-image-sto

元記事を表示

Serverless Frameworkを使用して AWS Lambdaにデプロイ

## 環境
* Mac OS Catalina 10.15.7
* AWS Lambda
* Serverless Framework standalone (
* Framework Core: 2.11.1 (standalone)
* Plugin: 4.1.2
* SDK: 2.3.2
* Components: 3.3.0

## Serverless Framework スタンドアロンのインストール
nodeのバージョン依存に関係なく使用するため、npmでのインストールではなくスタンドアロンを使用した
[Get started with Serverless Framework Open Source & AWS](https://www.serverless.com/framework/docs/getting-started/) に記載の通り

“`
curl -o- -L https://slss.io/install | bash
“`

## AWSのクレデンシャルの設定

[AWS – Credentials](https:

元記事を表示

AWS Lambda boto3でCognitoのユーザーを削除する

# はじめに
AWS LambdaでCognitoのユーザーを削除します。
ランタイムは`python`です。
環境変数`COGNITO_MAX_RESULTS`には、`50`を指定します。
ユーザープールの数が50以下である事を想定しています。
Cognitoからユーザーを削除する場合、ループ処理となり、たまにコケることがあるため、リトライ処理を追加しています。

**Lambdaのスクリプト**

“`python:Lambda
import os
import boto3

cognito = boto3.client(‘cognito-idp’, region_name=’ap-northeast-1′)

def handler(event, context):

user_pool_name = ‘ユーザープール名’
user_ids = [‘ユーザーID’]

# Cognitoからユーザーを削除する
response = delCognitoUser(user_pool_name, user_ids)

return respo

元記事を表示

AWS Lambda boto3でWAFのIP setsを更新する

# はじめに
AWS LambdaでWAFのIP setsを更新します。
ランタイムは`python`です。
WAFは`CLOUDFRONT`のものとなるため、AWSリージョンはバージニア北部の`us-east-1`となります。
WAFのIP Setsの更新は、渡したIPアドレスのリストで上書きされるので、登録・更新・削除が同じメソッドとなります。
リスト`ip_adresses`は重複していても問題なく、WAFに登録されます。

**Lambdaのスクリプト**

“`python:Lambda
import boto3

waf = boto3.client(‘wafv2′, region_name=’us-east-1’)

def handler(event, context):

ip_set_name = ‘IP Sets名’
ip_adresses = [‘IPアドレス’]

response = update_ip_addresses(ip_set_name, ip_adresses)

return response

def

元記事を表示

Lambda(Python)からChatworkに通知を送る

##はじめに

特に真新しい内容ではないですが、備忘録として記載しておきます。

この記事の続編です。

>・AWS MediaLiveチャンネルの停止忘れを防ぐための自動通知設定
https://qiita.com/ktsuchi/items/fe74125df4ee79c97d5d

以前作成したLambdaの通知先としてChatworkを追加しました。
SNSは使わずにLambdaから直接メッセージをチャットワークに飛ばします。

##構成図
![ScreenShot 2020-11-26 21.35.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277934/541a295f-77e0-7343-d5f7-7cabc2684b04.png)

##手順

Chatworkに通知する手軽な方法を探していたところ、
requestsモジュールのPOSTメソッドを利用する方法に行き着いたので、その方法を採用することにしました。

Lambdaの設定箇所のみ記載します。

###requestsモ

元記事を表示

一からAWS API Developer Portalを構築する

AWS API Gateway Developer PortalをAWSコンソールからデプロイし、ポータルでAPIを管理できる状態までセットアップする手順をまとめました。

#### 補足

– デプロイの方法は下記の2種類ありますが、今回は1の方法について補足を残します

1. AWS Serverless Application Repositoryを利用してAWSコンソールからデプロイ
2. GitHubからアプリのリポジトリをCloneし、SAM経由でデプロイ

– 公式ドキュメント:[サーバーレス開発者ポータルを使用して API Gateway API を分類する](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-developer-portal.html#apigateway-developer-portal-best-practices)

– なお、2の方法を試されたい場合は、上記公式ドキュメントの他、こちらのクラスメソッド様の記事を参考にしていただくと良いかと

元記事を表示

serverless framework DE typescript for AWS Lambda開発

###既に作ったserverlessプロジェクトにTypescriptを入れたい

現在AWSでSlack Botを動かすために、開発環境を作れるserverless絶賛勉強中です。
プロジェクトを作る時にtypescript対応するのは見つかったのですが、
もう作っちゃったプロジェクトに追加する方法は見当たらなかったのでまとめます。

プロジェクト作成時の場合はcreateするときに`-t aws-nodejs-typescript`というテンプレートを指定すればいいらしい。次はそっちでやってみます。
参考:[ServerlessでTypeScriptの開発環境を作る](https://qiita.com/iewori/items/837dbe4edb77426a11d9)

#serverlessプラグインを追加

https://www.serverless.com/plugins/serverless-plugin-typescript/
serverless-plugin-typescriptという素敵なプラグインを見つけたので使います。

>**Features**
・Ze

元記事を表示

毎朝起こしてくれる彼女ができた。

### 唐突ですが、彼女ができました。
はい。嘘です。ごめんなさい。

今回は、[Line Notify](https://notify-bot.line.me/ja/)を使って毎朝指定した時間に、その日の予定を教えてくれる『彼女みたいな存在』のBotを作りました。
![IMG_8606.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415015/2d7ac38e-d21f-0706-67a0-f4ddf0a7a078.jpeg)

# 0. アイディアと開発について。
アイディアに関しては、スタバから家に帰ってる途中に思いつきました。
帰宅してそのまま(手洗いうがいはしました!!)開発をはじめました。

### プログラミング言語
言語に関しては、Pythonを採用しました。
採用理由としては、サーバレス(Lambda)で実装したかったのと前日にPythonを書いており、気分がPythonだったからです。

### 使用したサービス
開発環境: [Cloud9](https://aws.amazon.

元記事を表示

OTHERカテゴリの最新記事