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

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

AWS Amplifyで生成したDynamoDBのテーブルにcsvデータを流し込む

## 概要
AmplifyのAPI機能で生成されたDynamoDBのテーブルに対し、S3に保存されたcsvデータを流し込む一手段です。

流れは以下3ステップ。
 1. “apmlify add API” + “amplify push” でDynamoDBテーブルを作成(ここは説明しません)
 2. S3バケットに流し込みたいcsvファイルを保存(複数可)
 3. Lambdaにデータ流し込みの関数を作成し実行

## 背景
職場で、アプリケーションのバックエンドをLaravelからAWS Amplifyに移行することとなりました。
それに伴いデータもMySQLからDynamoDBにデータの移行が必要となり、
テーブルデータをcsvに書き出した後Dynamoでインポートしようと試みました。

このミッションに壁として立ちはだかったのが、DynamoDBにはcsvのインポート機能がありません。
(エクスポート機能はあり。)
![スクリーンショット 2020-12-03 23.30.29.png](https://qiita-image-store.s3.ap-north

元記事を表示

AWS SAM CLI で Lambda Container Support をお試し

この記事は [**セゾン情報システムズ Advent Calendar 2020**](https://qiita.com/advent-calendar/2020/sisco) 4日目の記事です。

## はじめに
AWS re:Invent 2020 で AWS Lambda の Container イメージサポートが発表されました。

:rocket: **AWS Lambda now supports container images as a packaging format**
https://aws.amazon.com/about-aws/whats-new/2020/12/aws-lambda-now-supports-container-images-as-a-packaging-format/

ついに AWS にも Cloud Run のようなものがきたか!と思ったそこのあなた
残念ながらあらゆるコンテナイメージを簡単に Lambda で動かすことができるという機能**ではありません**。
Lambda 関数をコンテナイメージとしてパッケージ化してデプロイでき

元記事を表示

reInvent2020で発表されたLambdaContainerをCDKで実装してみる

# 1. はじめに

日本時間の2020年12月2日午前1時ごろから始まった1つ目のKeyNoteで、
突如LambdaContainerが発表されました([参考](https://dev.classmethod.jp/articles/lambda-support-oci-container-image/))。

私も、この発表はリアルタイムでみていて「うぉぉぉぉ!」と心の中で雄叫びを上げました。
コンソールなどではすでに利用できるみたいです。

また、驚いたのが、[AWS CDK](https://github.com/aws/aws-cdk)でも、LambdaContainerの発表から数時間後には
versionが`1.76.0`に上がり、その際にLambdaContainerがサポートされたみたいですねw

# 2. 実装

CDKでの実装に関するドキュメントは[公式](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.DockerImageCode.html)にて提供されており、これまでの

元記事を表示

AWS Lambda 上で Jinja2 を使う場合の実行時間を削減する方法

# はじめに
[DMMグループ Advent Calendar 2020](https://qiita.com/advent-calendar/2020/dmm) 3日目の記事です。

AWS Lambda 上で HTML を生成するアプリケーションを動かす場合に、 Python ランタイムを選択し [Jinja2](https://pypi.org/project/Jinja2/) を利用することが考えられます。
AWS Lambda では [コードの実行時間に対して課金される](https://aws.amazon.com/lambda/pricing/) ため、Jinja2 による HTML 生成にかかる時間が小さい方がコスト的に嬉しいです。

そこでこの記事では、AWS Lambda 上で Jinja2 により HTML を生成する際に実行時間を小さくするための方法を検討します。

# 前提
下記の環境を前提とします。

* AWS Lambda ランタイム: Python 3.8
* AWS Lambda メモリ割り当て: 128MB
* Jinja2: 2.11.2

#

元記事を表示

サービステストをLambda+unittest用ライブラリで実装してみる

あるサービスのテスト(外部サービスとの結合テスト)を、Lambda(python)+unittestで実装してみます。

# やること

「特定の条件を満たすメールを受信した場合はBacklogに課題を起票する」というサービスをテストするエンジンをLambda+unittestで構築します。
unittestライブラリをunittestよりも上のレイヤーの試験に使います。案外使い心地がいいです。

![アーキテクチャ (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43631/eb7a25a6-a128-5b83-0caa-46c6bba75132.png)

## テスト対象サービス

以下の条件を満たすメールを受信した場合に、Backlogに課題を起票します

– メールタイトルに特定の文字列を含む
– 送信元が許可された特定のメールアドレス

## テストエンジン

– Lambda(python)にunittestライブラリでテストシナリオを記述し実行
– 各テストケースは、概

元記事を表示

Go+serverlessでSQS→Lambda→SES

本記事は[Fusic Advent Calendar 2020](https://qiita.com/advent-calendar/2020/fusic)の3日目の記事です。

普段の仕事ではもっぱらPHPばかりですが、最近はGoの勉強を楽しんでいます。
弊社では最近週一で有志のメンバーでGo+serverlessの勉強会を行っておりまして、今回はその課題で作成した内容の備忘録です。Serverless Frameworkを使用しています。
https://www.serverless.com/

## 環境
Serverless Framework: 2.14.0
aws-cli(動作確認用): 2.1.4

## 構成
色々と省略していますが、以下のような構成でSQSに来たメッセージをLambdaで取得してSESでメール通知を行うことを想定します。そして、Goを使いたいという理由でLambdaはGoで記述します。
本来、API Gateway→SQS→Lambda→SES/SNS/DynamoDBみたいなものを作ろうとしているのですが、それの一部を切り抜いている形です。エラー処理

元記事を表示

LambdaLayer用zipをCodeBuildでお手軽に作ってみる。

# 背景

– Lambdaはサーバーレス構成に必須なサービス
– LambdaLayerは複数のLambdaで共通するモジュールを使いまわしできるサービス
– LambdaLayer用のzipを作る際には、その作業用のAmazonLinuxのEC2立てたり、Dockerコンテナ作ったりするのが理想
– 公開されているライブラリだけでなく、自身の共通モジュールも含めたりすると構築環境への転送も必要

一言でいうと、使いたいが面倒くさい。

# CodeBuildがあるじゃないか

[AWS CodeBuild](https://aws.amazon.com/jp/codebuild/) は、CodeCommitやGiuhubなどのソース管理システムからソースをcloneして、各種ビルド処理後に成果物(アーティファクト)をS3にアップロード出来るサービス。
ビルド用のマシンの環境はまっさらな状態(awscliとかの基本的なのは既に入っている)。本ビルド処理前にライブラリのインストール処理とかも可能だったり、独自のAMIを使ったりする事も出来る。

– 他のライブラリなどが入っていない綺麗

元記事を表示

メモリ上限10Gで Lambdaのコア数はどうなった!!(Re:Invent2020対応版)

# 余談
TISという会社に所属している、小西です。
昨年は、Re:Invent2019 に初めて行き、まさに「熱量」を感じる機会を得られましたが、
今年は、普通に業務で、セミナーはあまり聞けませんが、新機能をウォッチしていきたいなと思います。
3年近くサーバレスをやってきたので、サーバレスをウォッチしていきたい。

# 概要
Re:Invent 2020 で、High Performance Lambdaがリリースされ、メモリー上限が10Gとなり、コア数も最大6コアになりました。
ただ、メモリー設定でどうコア数が変わるかは公開されていないので実際に確認してみました。

なお、Re:Invent 2020 で、メモリー設定が64MBステップから1MBステップに変わったのですが、
検証は、64MBステップで行っているので、正確な切り替わりポイントでない可能性があります。すいません。

# 結論
以下の通り、最低2コアで、3Gから2G毎にコア数が上がるようです。
これまで、1536Mまで1コアでそれ以上が2コアだったようですが、大きく変更となりましたね。
課金単位も変わりましたが、実質的

元記事を表示

serverlessでslackbotローカル開発環境構築 – serverless-offline編 –

#何を作ろうとしている
slack apiフレームワークのboltをAWS Lambda上で動かして、さらにはDynamoDBとかも連携したSlackbotを作ろうとしている。

#目指す開発環境

####ここから
マジで何も分からないところからどうにかこうにかserverlessを使ってAWSに簡単なlambda関数をデプロイ出来るようになりました
でも結構速いPCでもデプロイに一回1分以上かかる

####こうなった!

serverless-offlineを使って、コードの編集が5秒ほどで自動で反映されてすぐ試せるローカルサーバーを立ち上げた。それをngrokでWEB上にURL公開、Slackからのエンドポイントに指定してローカルの方にリクエストを投げて逐次試しながら開発できる。

**この記事はserverless-offlineでローカル開発環境をserverlessの設定から立ち上げるところまでの備忘録です。**

#serverless-offlineとは

https://github.com/dherault/serverless-offline

AWS Lam

元記事を表示

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

元記事を表示

CircleCIでLambdaのデプロイを改善した話

# はじめに
この記事は[CircleCI Advent Calendar 2020 – Qiita](https://qiita.com/advent-calendar/2020/circleci)の3日目の記事です。

自分のチームではLambdaを使って、バッチなどを動かしています。
LambdaはAWS SAMで管理していましたが、デプロイを自動化しておらず、手動で反映していました。

そんな状況をCircleCIを使って改善した話をしていきます。

# 改善前
改善前のデプロイフローが下記になります。

![改善前.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39671/177ccb4c-249a-75f1-8022-46b7b73d1bd0.png)

このデプロイは下記のような課題を抱えていました。

* ローカル上で依存解決して実行しないといけない
* 変更セットをレビュアーが隣で確認しないといけない

このような作業を行っているため、環境変数の書き換えがミスがあったりし、ダブルチ

元記事を表示

AppDynamics Lambda Extension による Python 関数性能監視

この記事はシスコシステムズ有志による Cisco Systems Japan Advent Calendar 2020 (2枚目) の 3 日目として投稿しています。

2017年版: https://qiita.com/advent-calendar/2017/cisco
2018年版: https://qiita.com/advent-calendar/2018/cisco
2019年版: https://qiita.com/advent-calendar/2019/cisco
2020年版: https://qiita.com/advent-calendar/2020/cisco
2020年版(2枚目): https://qiita.com/advent-calendar/2020/cisco2

# はじめに

2020年10月にプレビューとなった AWS Lambda Extensions により,コード変更なしに Lamba 関数の AppDynamics での監視が可能となりました。

[AWS Lambda Extensions(プレビュー)を構築する](https:/

元記事を表示

【初心者向け】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

元記事を表示

OTHERカテゴリの最新記事