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

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

AWS SAMでAPIGatewayからLambdaをエイリアス指定で呼び出す

# はじめに
AWS CloudFormationの拡張機能であるAWS SAMを使って、APIGatewayとLambdaを管理するユースケースは多いと思います。SAMのメリットのひとつとしては、少ない記述量で済むことが挙げられると思います。

さて、このSAM。APIGatewayとLambdaを素直に管理するのには良いのですが、プロジェクトが成熟したときに出てくるかもしれない、このような要望には少々難しいところがあります。

私「できた。SAM最高。」

SRE「そういえば、LambdaをバージョニングしてAPIGatewayからはエイリアス指定のLambdaを呼び出すようにできたりしますかー?」

私「Lambdaをデプロイするタイミングで最新バージョンに向いてしまうのはアレですもんね。エイリアスLambdaをトリガーするようにしつつ、エイリアスは手動で張替えしたいということですよね。バージョニングは何かあったときにROLLBACKもできますし。」

私「調査します!」

… 数時間後 …

私「SAMだけでは、できなくないかい…これ…?」

# Versio

元記事を表示

Go言語でAWS Lambdaの開発をサポートするパッケージを作った

仕事でGo言語 + AWS Lambdaを用いる機会が多く、特にセキュリティ監視関連基盤のバックエンド処理を開発しています([これ](https://techlife.cookpad.com/entry/2020/03/18/073000)とか[これ](https://techlife.cookpad.com/entry/catbox)とか[これ](https://techlife.cookpad.com/entry/2019/11/21/073000))。

開発をすすめる中で「こうすると便利だな」というちょっとしたtipsはいろいろあったのですが、あまりに細切れな処理すぎるのでプロジェクト間でコピーするなどして開発に利用していました。とはいえ管理しているプロジェクトが多くなってきたことで挙動がまちまちになってしまったり、ある程度tipsの数が溜まってきたのもあって、パッケージとして切り出してみました。

https://github.com/m-mizutani/golambda

AWSが公式で提供しているPowertools([Python版](https://github.c

元記事を表示

VSCode、ローカルでLambda開発環境準備->デプロイ->AWSのURLで確認までの手順

#自己紹介
先ずは簡単な自己紹介させていただきます。
僕は今まで10年間以上のWeb開発経験があり、その中に、4年間ぐらい日本での開発してきました。
日本人ではないので、投稿に日本語の文法がおかしい所があるかもしれません。
技術的な面を主にご覧いただければ、いいかなと思います。

#今回の内容について簡単な説明
●VSCode利用して、ローカルでLambda(Node.js)開発環境の構築
●AWSのLambdaにソースコードのデプロイ
●AWS API Gatewayの作成(プロトコル:HTTP)
●AWS API Gatewayにより、生成されたURLで画面内容の確認

#開発フォルダの初期化
手順は以下になります。
①VSCodeで新規フォルダを開く
②npm環境の初期化(事前にnpmのインストールが必要)
③aws sdkのインストール

“`shell
cd /Users/name/Documents/workspaces/lambda/nodejs/TestProject1/
npm init
npm install aws-sdk
“`

![test3.p

元記事を表示

AWSでよく使うSQS+Lambdaの組み合わせで気をつけるべきこと

今回はSQS+Lambdaを組み合わせて使う場合に気をつけるべきことについて書きました
サーバレスなアーキテクチャを考えた時に、何かと候補に上がる組み合わせだと思います
一部、自分が体験した失敗から学んだこともあるので、反省の復習をしつつ同じ失敗をする人が減ってくれれば良いなと思います

# なんでSQS+Lambdaなのか?

そもそもこの組み合わせを選ぶのはなぜか?ということですが

* サーバレスなアーキテクチャを組みたい
* Lambdaを使用するにはトリガーとして全段にサービスが必要(SQS、APIGateway・・・など)
* Lambdaの処理が失敗した場合、再実行したい

このような理由からSQS+Lambdaの組み合わせを選択します

# 【ケース①】SQSの標準キューはメッセージの配信を1回”以上”保証する

SQSの標準キューとはこれです

![スクリーンショット 2020-12-24 20.58.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/198158/650c553e-

元記事を表示

AWS LambdaがContainer Image Support 言うから 疑似Cloud Run

# はじめに

メリークリスマス!! :christmas_tree: :christmas_tree: :santa: :christmas_tree: :christmas_tree:

[Ateam Lifestyle Advent Calendar 2020](https://qiita.com/advent-calendar/2020/ateam-lifestyle)の25日目は、
株式会社エイチームライフスタイル 執行役員CTO @tsutorm が担当します!

# Lambdaがコンテナイメージサポートと聞いて

今年のアドカレどうしよっかなー :thinking:

ポエム系になるけど 「ビジネスが間違えやすいエンジニアの”開発生産性”」 みたいなのを書こうかなー

せっかくのクリスマス :christmas_tree: だしなー。プレゼントになるようなコードがあるほうがいいよなー

と思っていた所…


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76

元記事を表示

Serverless FrameworkでAWS Lambda関数作ってRDSのデータで色々レポーティングする

# はじめに

– 少し使ってるバージョンが古いです(Node.jsのバージョン上げれば大丈夫なはずだけで環境用意してなくて未実施。)
– ソースコードは書き殴ったままなので見る人が見たらアレルギー反応出ちゃうかもしれません
– 年末大掃除の1つ。

# 動作環境、使ってるもの

– Serverless Framework
– AWS Lambda
– Node.js 8.10 (現時点でLambda関数が新規作成できないです)

# なぜ作ったか

~~SQLをプログラム中で組むのが面倒だった。~~
集計用のSQLは重くなりがちなので、チューニングしやすいようにSQLそのもので管理したかった。
依頼されているレポートをまとめて作りたかった。
レポートを10前後(重いのは2つ程度)を毎日作成することから解放されたかった。

# 仕組み

– 指定のディレクトリに格納されているすべてのSQLを実行する
– 実行結果をCSVファイルに書き込む
– (記事中に載せてない処理)
– すべてのCSVファイルをzipファイルにまとめる
– zipファイルをSlackに投稿

#

元記事を表示

【AWS】Lambdaの実行ログから指定した文字列を検知してslackに通知

今回は自分が触れる機会の多いAWSのサービスを使用して運用の際などで利用できる通知方法の一つをご紹介します。

#使用サービス
+ Lambda
+ CloudWatch
+ Slack

#実装フロー
1.Lambda関数からCloudWatch Logsへログを出力
2.CloudWatch Logsから指定した文字列を検知
3.検知された文字列をトリガーにSlack通知用のLambda関数を発火
4.通知用LambdaでSlackへ文字列を通知

#フロー詳細
実際に上記のフローで実装していきます。

__手順1__

今回は「test」という文字列でCloudWatch Logsへ出力します。
![スクリーンショット 2020-12-23 16.14.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404045/b67ff6df-0bcf-b9d5-c88e-d034741ec338.png)

__手順2__

文字列検知にCloudWatch Logsのサブスクリプションフィルター(La

元記事を表示

Application Load BalancerのTarget GroupにHealthy Hostが1台もなければ、独自設定のSorry Pageを出す

# 概要
Application Load Balancerのリスナールールに設定されたTarget Gropuにて、Healthy Hostが1台もなかった場合に、独自設定のSorry Pageを表示させる。
例えば、AutoScaling GroupをApplication Load BalancerのTarget Groupに設定した場合、Health Checkで失敗したInstanceはAuto Scalingグループから外れ、代わりに「起動設定」に従って新規にインスタンスが起動される。この時、仮にすべてのインスタンスが同時に外れた場合などを想定している。
また、Auto Scaling Groupを利用せず直接Target Groupにインスタンスを登録した時、全ホストがUnhealthyになった場合は、Application Load BalancerはUnhealthy Hostへルーティングを行うため、不適切なページが表示される可能性がある[^1]。

ここで、Healthy Hostが1台もなかった場合に、独自設定の

Amazon SNS に設定されている iOS アプリの APNs 証明書の有効期限についてアラートを通知する

# 0.はじめに

![unnamed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/161939/9dd2b630-35ce-de02-5137-6e644442f44a.png)

iOS アプリの通知について、[Amazon SNS](https://aws.amazon.com/jp/sns/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc) を利用しており、以下の記事を参考にして、先日 iOS アプリの APNs 証明書の更新したんですが…、

– [iOS アプリの Certificate \(証明書\) を更新後、Bitrise の Code Signing の設定を更新する \- Qiita](https://qiita.com/kusokamayarou/items/1f418e54b610e6459112)

[Bitrise](https://www

AWS Lambda&Seleniumでサイトから定期的に情報を取得する

#はじめに
[AWS Advent Calender](https://qiita.com/advent-calendar/2020/aws) 22日目担当させていただきます,スライと申します.
#やること
僕が利用しているとあるサイトは毎日0時~6時までメンテナンスでアクセスできないようになっています.そこには大学の講義動画にアクセスするためのURLなどが記載されています.

つまり上記のサイトは一日のうち6時間も停止しているわけです.さらに0時~6時といえば(生活リズムの乱れた)学生のゴールデンタイムです.僕にとってもこれは致命的なので,定期的にどこかに情報を保存することにしました.

#システム構成図
![ac.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269896/7d408309-45f9-2c94-6410-9d66f10f8638.jpeg)

auth.html・・・ユーザー名とパスワードを入力する画面
ac.html・・・ワンタイムパスワード入力およびデータの表示を行う画面
au

API Gatewayで「Lambdaオーソライザー」と「APIキー認証」を一緒に利用する

# はじめに
タイトル通り、API GatewayでLambdaオーソライザーとAPIキーを同時に設定してみたので、そのまとめです。

Lambdaオーソライザーとは、
> Lambda オーソライザー (以前のカスタムオーソライザー) は、Lambda 関数を使用して API へのアクセスを制御する API Gateway の機能です。

本稿では説明しませんので、詳しく知りたい方は[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html#api-gateway-lambda-authorizer-flow)を見てください。

今まで、API GatewayのAPIキーと、Lambdaオーソライザーをそれぞれ片方ずつ利用したことがあったのですが。今回、API実行数の制御を行いながら、認可をする必要があったため同時に利用することにしました。

# Lambdaオーソライザー
“`golang
package m

AWS LambdaでAmazon EFSを利用してみた

本記事は [株式会社ピーアールオー(あったらいいな!を作ります) Advent Calendar 2020](https://qiita.com/advent-calendar/2020/pro-japan1) の22日目です

昨日(21日目)は @koinori さんの「[【2020年12年版】Flutter + Android SDK + VS Code にてリモートホストにある Remote Container から別ネットワークの実機でデバッグ](https://qiita.com/koinori/items/a1cd4df34ce599a59175)」でした

是非、よろしければこちらもどうぞ
[2019年のカレンダーはこちら](https://qiita.com/advent-calendar/2019/pro-japan1)

# 経緯
プロジェクトでAWS Lambdaを利用してデプロイしているのだが、Lambda実行時に利用する「/tmp ディレクトリのストレージ」が上限の「512MB」を超えてしまいデプロイができなくなった

今後も開発は継続する予定で緊急な対応が

AWS Lambda External ExtensionsをAWS SAMで管理する

# SAMに移行する対象のモジュール

[python-example-extension](https://github.com/aws-samples/aws-lambda-extensions/tree/main/python-example-extension)にアップされているこちらのモジュールですが、AWS Command Line Interfaceベースの手順になっているので、こちらをAWS SAMベースに置き換えるのを目標にしたいと思います。

まず、元々のモジュールを確認しておきます。

“`bash
├── extensions
│ └── python-example-extension
└── python-example-extension
├── extension.py
└── requirements.txt
“`

* extensions
* コンパイル言語やシェルスクリプトではなく、スクリプト言語であるPythonを実行対象とするため、一度`python-example-extension`というシェルスクリプト

aws lambdaでPython + Selenium + Headless Chromium

Lambdaでスクレイピングを定期実行してDynamoDBに貯めるアプリケーションを作っています。

早速ググるとたくさん記事が出てくる。ありがたい。
こちらの記事を参考にさせていただいてトライしていたが、2日くらいハマってしまったポイントがあったのでメモ。

AWS Lambda(Python)でSelenium + Headless Chromeの実行

* chromedriver 2.43 https://chromedriver.storage.googleapis.com/index.html?path=2.43/

   こちらの`chromedriver_linux64.zip`

* serverless chrome v1.0.0-55  https://github.com/adieuadieu/serverless-chrome/releases/tag/v1.0.0-55
   `stable-headless-chromium-69.0.3497.81-amazonlinux-2017-03.zip`

* selen

カスタムdockerイメージでlambdaを動かす

[AWS & Game Advent Calendar 2020](https://qiita.com/advent-calendar/2020/aws-game) の 20 日目の記事になります。

## agenda

* はじめに
* 利用するツール
* ローカルでの実装
* Lambdaへのdeploy
* 動作チェック
* まとめ

## はじめに

2020年のre:Inventで、Lambdaがコンテナをサポートする発表がありました。
今までカスタムランタイムでLambdaを動かすには面倒なセットアップが必要でしたがこのアップデートでかなり使いやすくなるのではないでしょうか。

この記事ではコンテナを使ってミニマムの(bashを使ってイベントデータを表示させる)関数をLambdaで動作させる解説を行います。

## 利用するツール

* sam: Lambdaのdeploy
* docker: コンテナイメージのビルドなど
* ECR: イメージのレジストリ
* bash: 何でも良いのですが今回はbashでechoをさせます

### samのインストール

samはH

Lambdaポリシーが変わった部分を見てみる

# はじめに
下記のようにLambdaに関するポリシーが変更されるとのことで、どう変わるのか見てみました
名前としては `_` が追加されているみたいで、頑張ってるなぁって思いますね

– Before
– AWSLambdaFullAccess
– AWSLambdaReadOnlyAccess
– After
– AWSLambda_FullAccess
– AWSLambda_ReadOnlyAccess

# ポリシーの確認
とりあえずCLIから落としてみたかったので下記で叩いてテキストまで落としました

“`bash
#!/bin/bash

function get_policy_statement () {
POLICY_NAME=$1
POLICY_ARN=arn:aws:iam::aws:policy/${POLICY_NAME}
POLICY_VERSION=$(aws iam get-policy –policy-arn ${POLICY_ARN} \
–query ‘Pol

Lambdaから指定したS3に入出力するGlueを起動させる話

##背景
仕事の中でAWSのGlueを使う機会があり、その際に指定したS3からデータを読み込み、Glueでデータを加工して別の指定したS3バケットにデータを出力することを行ったので、その流れと方法をメモがてら残しておこうと思います。

##構築内容

##S3(Input)->Glue->S3(Output)
###引数(パラメータ)を取得

“`python:
# パラメータを取得
args = getResolvedOptions(sys.argv, [
‘JOB_NAME’, ‘source_path’, ‘out_path’])
# 各パラメータを変数におく
source_path = args[‘source_path’]
out_path = args[‘out_p

Word2vecモデルをAWS Lambdaで動かしてみる

## はじめに

これは,[mediba Advent Calendar 2020](https://qiita.com/advent-calendar/2020/mediba) 23日目の記事です.

medibaの野崎です.
現在は,バックエンドエンジニアとして [au Webポータル](https://portal.auone.jp/) などのプロダクトの担当し,バックエンドアプリケーションやインフラ範囲の運用を行っています.
また,兼務でテクノロジーセンターにて,TechLeadチームにも所属しています.
※参考:[2020年度エンジニア組織について | mediba Creator × Engineer Blog](https://ceblog.mediba.jp/post/622861990882328576/2020%E5%B9%B4%E5%BA%A6%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E7%B5%84%E7%B9%94%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)

[

lambdaとfargateの性能テストを行ったので

lambda + serverless framework + node express と ecs + fargete + node express
で性能比較をしたので、メモ

処理時間 100ms/req ほど、処理時間の大半はcpuはほぼ使わずDB待ち

ざっくり lamda 512MB 300台(?) と fargate 2core 1台で同程度の負荷に耐えられた

アプリのタイプによって比率は大きく変わると思うけど、参考までに

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

[Increments × cyma (Ateam Inc.) Advent Calendar 2020](https://qiita.com/advent-calendar/2020/increments-cyma) の21日目は、Increments株式会社の @kiitan が担当します

## はじめに

Amazon Web Services(AWS)は、オンラインで開催中の年次イベント「AWS re:Invent 2020」で、[AWS Lambdaのコンテナサポートを発表](https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-container-image-support/)しました。要するにECRリポジトリにPushしたイメージをLambda関数で使うことができるようになったよってことでした。そこで早速触ってみました.

## 作るもの
S3に動画をアップロードされると gif 作成してS3にアップロードしてくれるLambda関数を作っていきます.

## 実装

今回のファイル構成は以下のようになります.