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

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

Lambda Internal Extensions で Lambdaのチューニングに役立つ情報を取得する

# Lambda Extensionsについて

AWSのblogで丁寧な説明がありますので、Extensionsそのものの詳細な説明は本稿からは割愛します。それでも、話の流れで必要な部分は少しずつ紹介しながら進めます。

##### AWS blog

* [AWS Lambda Extensions (プレビュー) のご紹介](https://aws.amazon.com/jp/blogs/news/introducing-aws-lambda-extensions-in-preview/)
* [AWS Lambda Extensions (プレビュー) を構築する](https://aws.amazon.com/jp/blogs/news/building-extensions-for-aws-lambda-in-preview/)

##### 仕組み

[AWS Lambda Extensions (プレビュー) のご紹介](https://aws.amazon.com/jp/blogs/news/introducing-aws-lambda-extensions-in-p

元記事を表示

AWSサンプルプロジェクトから学ぶサーバレスアーキテクチャ

# 構築してみるAWSサーバレス

[PARONYM Advent Calendar 2020 – Qiita](https://qiita.com/advent-calendar/2020/paronym) の7日目です。

## はじめに

昨今注目を浴びているサーバレスアーキテクチャ。うまく使えばサーバの構築・運用・保守の手間が省けエンジニアはサービスの実装に注力することができます。
しかし便利な反面新たに学ばなくてはならないことが沢山あり、学びはじめのエンジニアは何からはじめたらいいか悩ましいところです。
本記事では、AWS公式で作成されたサンプルプロジェクトを使用してサーバレスアーキテクチャを構築し、サーバレスの学習のきっかけになることを目的としています。

## 注意

サンプルプロジェクトをAWSにデプロイすると料金が発生する場合があります。**デプロイは自己責任でお願いします。**

## 本記事で使用するサンプルプロジェクト

AWSには公式から提供される便利なサンプルプロジェクトがあります。今回はその一つを使用して実際にクラウド上に一つのサービスを展開してみます。

元記事を表示

コンテナイメージを使用してAWS Lambda関数を作成する

この記事は [ユニークビジョン株式会社 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/uniquevision) の7日目の記事です。

# 1. はじめに

この記事ではAWS re:Invent 2020で発表された [AWS Lambda の新機能 – コンテナイメージのサポート](https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-container-image-support/) についてまとめます。

従来、AWS Lambdaの関数を作成するためには関数の実行に必要なものをZIP形式でパッケージ化する必要がありました。
個人的にはローカルで動作確認をする構成とZIP形式のパッケージを作る手順が存在しているのは好みではありませんでしたが、この新機能によって開発時・本番運用時の両方とも同じコンテナイメージを使用することが出来るようになりました。

また、従来のZIP形式ではデプロイパッケージのサイズが250MBに制限されており、例えばTens

元記事を表示

LambdaのProvisioned Concurrencyについて調べました

# はじめに

2019年12月に提供された[LambdaのProvisioned Concurrency](https://aws.amazon.com/jp/about-aws/whats-new/2019/12/aws-lambda-announces-provisioned-concurrency/)に関して調べました。

## 注意

2020年12月6日時点の仕様について記載していおります。

# Lambdaに元々ある概念 → “同時並行性”(Concurrency) (公式でも日本語訳が曖昧)

Lambda関数を並行(水平方向)に実行する際のリソースとなる概念が同時並行性です。

同時並行性には制限が存在しており、定量化として同時実行数(Concurrency Executions)という単位になっています。

制限は、**リージョンごと**に適用され、引き上げることができます。引き上げをリクエストするには、サポートセンターコンソール経由で問い合わせる必要があります。

| リソース |デフォルトの制限|
|——-|——|
|同時実行数|1000|

元記事を表示

AWS Lambdaをローカル環境に用意する(AWS-SAMのインストール)

# 前書き
lambdaを実装する必要があり、ローカルでプログラムのテストができないか調べてたところ、AWS SAMを用いて検証するようなので設定方法を書いていきます。

###前提条件
Dockerがインストールが必要です。
+今回lamdaでgo言語を試すのでgoのインストール必要です。

###検証環境
>OS:Windows 10 Pro 64bit ver 1909
>言語環境:go version go1.14.1

#SAMで構築する検証環境について
AWS-SAMをインストールすることで下記のような環境をローカルに作成できます。

![SAM.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436464/7759e3a7-7ba9-a623-6c4b-39d852144687.jpeg)

ローカルに仮想のAPI GaweWayを作りそこからLambda関数を実行する形です。
実行時にjsonを渡すことでevent発火時の動作も検証できます。

lambda関数の実行時にdockerコ

元記事を表示

AWS Lambdaがコンテナイメージをサポートしたので、Detectron2 を使って画像認識(Object Detection)を行うAPI を作る

この記事は[Fusic Advent Calender](https://qiita.com/advent-calendar/2020/fusic)の5日目の記事です。
昨日は [@ayasamind](https://twitter.com/ayasamind) さんの [PHP8+ Laravel8 + laravel-generatorで簡単CRUD作成からユニットテストまで書く](https://qiita.com/ayasamind/items/a5bfa65ab0b8effb26a8) でした。
[@ayasamind](https://twitter.com/ayasamind) さんといえば、先日大いにバズった [Geeks Bar Tenjin](https://twitter.com/Mr_1484/status/1332262150581075968) を企画した偉大なお方です。
月イチで開催されるらしいので、福岡にお立ち寄りの際は、ぜひ[開催日を確認](https://bar.geekstudio.work/)してみてください!

—-
# やったこと
AW

元記事を表示

AWS Lambdaのコア数を確認

2020年12月01日以降、
Lambdaで以下のアップデートが行われたことが発表されました。
・メモリ上限を10240MB(10GB)に拡大(従来は3008MB)
・vCPU数を上限6に拡大
・コンテナイメージのサポート

[AWS Lambda now supports up to 10 GB of memory and 6 vCPU cores for Lambda Functions](https://aws.amazon.com/jp/about-aws/whats-new/2020/12/aws-lambda-supports-10gb-memory-6-vcpu-cores-lambda-functions/)
[AWS Lambda の新機能 – コンテナイメージのサポート](https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-container-image-support/)

上記アップデートのうち、Lambdaで取り扱われるvCPUについて
Lambda内でCPU情報を取得し、どのようになっているか確認し

元記事を表示

Serverless でLambdaにGraphQL APIを立てる

基本的にはこちらを参考にしました。
How to Make a Serverless GraphQL API using Lambda and DynamoDB
https://www.serverless.com/blog/make-serverless-graphql-api-using-lambda-dynamodb

ただし、イベントハンドラを“`async“`関数にしたり、GETリクエストではなくPOSTリクエストを受け付けるようにしています。
また、上記では、“`GraphQLSchema()“`などを使っていますが、スキーマの定義などに関しては、GraphQL.js公式ページを参考にしました。
Getting Started With GraphQL.js
https://graphql.org/graphql-js/

あれ、「How to Make a Serverless GraphQL API」の方、ほとんど参考にしてない?笑

## 結論
特に難しいことはなく、POSTリクエストで送った値を“`event.body“`から取り出して、“`graph

元記事を表示

Lambda ノート

# はじめに

`Lambda` から `Ruby` で `aws-sdk` つかって `DynamoDB` な話です。何番煎じやねんと思いつつ、本日付のものは一つしかないだろうということで書きます。

# ゴール的なもの

– LambdaつかってサーバレスでクラウドネイティブなWebのバックエンドをブラウザ開発してみる
– 今回はとりあえず、`Lambda` から `Ruby` で `aws-sdk` つかって `DynamoDB` へというとこまでやる
– 最終的には、AWSのあれやこれやのサービスをつなぎ合わせてアプリ作る

# 開発の流れ

1. DynamoDBにテーブルつくる
2. IAMでDynamoにアクセスできるようなロール作る
3. ロールをLambdaに適用する
3. Cloud9上で、aws-sdkつかってDynamoDBを叩くコード書く
4. サーバへのデプロイとかテストとかもWebUIで簡単にできる(ショートカット覚えると快適)

以下、もうちょっと具体的にかいてみます[^1]

[^1]: [ここのページ](https://business.ntt-e

元記事を表示

Lambda関数をコンテナイメージで動かしてみた

# はじめに
この記事は [BeeX Advent Calendar 2020](https://qiita.com/advent-calendar/2020/beex) の12/6の記事です。

==

今年のre:InventでLambdaがコンテナイメージをサポートしたと発表がありました。

* [AWS Lambdaがコンテナイメージのサポート](https://aws.amazon.com/jp/blogs/aws/new-for-aws-lambda-container-image-support/)

前に以下の記事で書きましたが、Lambdaで外部ライブラリを使用したい場合はLambda Layerに別途アップロードが必要でした。
今回発表されたコンテナを使うことで、その部分が簡略化できないか試してみます。
[Lambda Layerに外部のライブラリをアップロードする](https://www.capybara-engineer.com/entry/2020/06/18/160458)

尚、Dockerはほとんど使ったことないので初心者レベルです。

# 環境
PC

元記事を表示

AWS でサーバーレスアプリケーションのあるべき姿について考えてみた

この記事は、[AWS LambdaとServerless Advent Calendar 2020](https://qiita.com/advent-calendar/2020/lambda) の5日目の記事です。

## 自己紹介

バックエンドのエンジニアとしてそろそろ8年になります。
今年度の初めからサーバーレスを用いた API 開発に従事しています。
元々 C#, Java, PHPなどでサーバーアプリケーションの構築に関わっていましたが、
サーバーレスなアプリケーションの構築は初めてで、学んだことをこの場で共有していけばと思っています。

## サーバーレスだからこそ実現できること

よく、サーバーインフラにまつわる設定が必要ないからサーバーレスは楽だよ、という話を聞きます。
実際、マネージドサービスのAWS Lamdbaで業務ロジックを動作させることによって、
サーバー冗長化、プロセス監視、サーバー複数台で構成されている時の様々な面倒くささ(セッション管理・デプロイなど)はなくなります。

しかし、それだとサーバーレスアプリケーションで作るべき理由をあまり感じないです。

元記事を表示

Serverless Framework で SNS + Lambda の Slack 通知を簡単に作る

任意のメッセージを Slack の特定のチャネルに通知する仕組みを AWS SNS + Lambda で作ります。

– アプリケーションから任意のメッセージを通知したい
– 複数の通知先がある(Slackとメーリングリストなど)
– しかし、通知先の設定などはなるべくアプリケーションで管理したくない

こういうときに役に立つと思います

# Slack APP の登録とチャネルの Webhook URL の生成(手動)

https://api.slack.com/apps?new_app=1 にアクセスして、 Workspace に Slack APP を作成します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62103/751eb35a-813f-4f67-ec23-05580b893431.png)

`Incoming Webhooks` を選択します

![image.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

AWS Lambda LayerのTerraform化でハマったこと

# この記事の目的
AWS Lambda LayerをTerraform化しました。
一部手間取ったので、自分と同僚用にメモを残します。

# まず結論
最終的に出来上がったTerraformはこちらです。

## Terraform version
“`
$ terraform version
Terraform v0.12.24
“`

## Layerを使用するLambda側
“`
resource “aws_lambda_function” “main_lambda” {
filename = “../../lambda_function/test_lambda/test_lambda.zip”
function_name = “test_lambda”
role = aws_iam_role.lambda_iam_role.arn
handler = “lambda_function.lambda_handler”
timeout = 30
runtime = “python3.8”

元記事を表示

S3,SNS,SQS,Lambdaを利用したファンアウト構成

#ファンアウト構成とは
一つの入力に対して複数の出力がある構成

Cloudformaionを使用したSNS,SQSの構築は、
検索しても少なかったので書きました。
(需要自体なさそう)

##Amazon SQS(Simple Queue Service)とは
メッセージキューイングサービスです。

送信側はキュー(データを先入れ先出しの構造で保持するもの)にメッセージを送り、
受信側はキューにポーリングしてメッセージを受け取ります。

###標準とFIFO
SQSではタイプとして、標準とFIFO配信を選択できます。

標準タイプでは、メッセージの順番を必ず保証はできません(ベストエフォート)。

FIFOタイプではメッセージの順番を守ります。
SNS、S3などのの連携をサポートしていません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878032/c4c6b2d6-0b10-b443-a5ba-75c5a5252b1c.png)

##Amazon SNS(Simple Noti

元記事を表示

【re:Invent】AWS Lambda コンテナ試して見た

AWS Lambda Container Support が発表されました。最大 **10GB** のサイズのコンテナイメージがデポロイできます。現時点サポートされている、全てのランタイム(Python、Node.js、Java、.NET、Go、Ruby)のベースイメージを提供します。

## 全体像
従来は Lambda コンソールからソース編集かアップロードできますが、コンテナイメージ使う場合、一旦 `Amazon ECR` に保存し、Lambda コンソールからデポロイを行います。

![Lambda (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/b00ae1fa-23e7-64a6-1ade-24442fb673be.png)

## コンテナイメージ

### Amazon ECR (Amazon Elastic Container Registry)
コンテナイメージを AWS に保管しますので、まず `ECR` 作ります。

“`sh
aws ecr create-

元記事を表示

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

元記事を表示

バイク乗り向けハンズフリー音声ツイートシステムについて(iOS+AWS)

## はじめに

いらっしゃいませ。わたしは@shnskfjwrです。
わたしは毎日すごい量のserverless.ymlを書いていますが、だれにも読ませるつもりはありません。

ところで、わたしの趣味はおバイクとTwitterです。
基本はツーリングの休憩中にツイするのですが、運転中に面白いものを見つけたらその場でツイしたくなることもありますよね?
ですが、おバイクは車と違って基本的に両手が塞がってる上にグローブを装着してるので、その場ツイは難しいですね?
だからといって、わざわざ停車してツイする? ~~そのネタ、そこまでするほど面白い?~~

というわけで、それをどうにかしました。

## 何をするか

Siriの音声入力を利用したTwitter投稿

## 必要なもの

– iOS12以上がインストールされたiPhone
– ヘルメット内でsiriを起動できる環境(airpods2がおすすめ)
– AWSアカウント
– Twitterアカウント

## TwitterAPI

Twitterへの投稿はTwitterAPIを利用します。
TwitterAPIをコールするにはキー

元記事を表示

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

#

元記事を表示

OTHERカテゴリの最新記事