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

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

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関数を作っていきます.

## 実装

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

Slack Bolt で簡単に複数ワークスペースにインストールできるアプリを開発しよう!(TypeScript, Lambda, Serverless Framework によるサンプルコード付き)

![Slack_User-token-install.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110368/8ddbd1be-c1d0-f7f1-b1a6-d4aac5b030ba.gif)

# はじめに

## おやくそく

この記事は [「Develop fun!」を体現する Works Human Intelligence #2 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/whi-2) の 21 日目の記事です。
昨日は @etnk さんの「[自然言語処理のサービスのAWS上での構成を考えてみる](https://qiita.com/etnk/items/92b2871d332d923236c7)」でした。

本日は私 @irongineer が Slack 開発をより Develop fun! していくような記事をお届けできたらと思います。
記事を書くのはこれが初めてです。どうぞよろしくお願いいたします。

LINE WORKSで担当のBacklog課題をリマインドしてみる

# はじめに
普段タスク管理に[Backlog](https://backlog.com/ja/)を利用しているが、1日のはじめにその日の自分の担当課題を通知してくれる仕組みが欲しいと思い、LINE WORKSボットを使って自分の担当であり開始日が過ぎている課題をプッシュ通知してみた。

# 構成

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241369/cf2cd314-9d1d-18be-e40e-80b7d4a0a1fc.png)

– AWS Lambdaを使ったサーバーレス構成とする。
– Lambda関数はEventBridge (CloudWatch Events) からのCronイベントによってトリガーされる。
– LINE WORKSのパラメータはSystems Managerパラメータストアで管理する。
– LINE WORKSのアクセストークンは定期的に実行されるLambdaにより更新される

# 仕様
– Python 3.7
– デプロイ: [Serverless Frame

Webサイトパフォーマンスを継続的に計測する基盤をサーバーレスアーキテクチャで作った話

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

# はじめに

こんにちは、EXNOAでフロントエンドエンジニアとして働いている[@_kentaro_m](https://twitter.com/_kentaro_m)です。

本記事ではWebサイトパフォーマンス (以下、パフォーマンス) を継続的に計測する基盤のプロトタイプを作った話をしたいと思います。

# モチベーション

まずはパフォーマンスを継続的に計測したいモチベーションについて、触れておこうと思います。

昨今ではGoogleが[Core Web Vitals](https://developers-jp.googleblog.com/2020/05/web-vitals.html)と呼ばれるWebサイトにおけるユーザー体験の質を定性的に示す指標を公開し、ユーザー体験がこれまで以上に重要視される流れになることが予想されます。

そして、パフォーマンスはユーザー体験に大きな影響を与える要素となってお

AmplifyでREST API作成する時、ファンクション名にハイフンを付けない

※すでにこの内容は [@jagaimogmog](https://twitter.com/jagaimogmog) 氏によりAmplifyチームに要望いただきました。感謝!

SAMとCodebuildでLambdaの自動deployをする with Julia on Layer

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

LambdaとServerlessのadvent calendarなのでLambdaの事を書きます。
コンテナをそのままLambdaのランタイムに使えるようになってたりとかそのへんが気になってますが、個人的に好きな組み合わせを紹介いたします。

# これやります

**SAM(Serverless Application Model)**にて管理するLambdaを**CodeBuild**を使ってdeployをする話を書きます。
githubにpushすると、CodeBuildが実行されてLambdaがdeployされる仕組みです。
ついでにcustom runtimeを使って実行するJuliaのLayerもdeployします。

## 何がいいのか

SAMやChalise、Serverless FrameworkなどのツールはCLIからtestからdeployまで出