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

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

Serverlessバッチで定期的にデータを集計するアーキテクチャーの紹介

# はじめに
本記事は [QualiArts Advent Calender 2019](https://qiita.com/advent-calendar/2019/qualiarts) 16日目の記事です。

昨日は @tnbe21 さんの [mongoDB3.2から3.4へのアップデート作業](https://qiita.com/tnbe21/items/4458f47a9a9e8d80c455) でした。
明日は @Koheinimi さんの xxxxx です。

# QualiArtsのエンジニア施策の紹介
QualiArtsでは2019年前期にイノテックレポートという技術レポートをエンジニアが書く施策がありました。
また、後期は[もくもく会](https://creator.game.cyberagent.co.jp/?p=6633)という隔週で2時間の業務時間内に勉強時間を確保するエンジニア施策があります。

# このアドベントカレンダーを書くにあたって
今回の内容はイノテックレポートの内容を外部用に加筆したもので、
このQittaはもくもく会の時間を使い編集しています

元記事を表示

RUNTEQの動画配信基盤-HLSエンコード編-

# はじめに
本記事では動画のアップロードをトリガーとして, MediaConvertのジョブテンプレートからジョブを生成し, HLS形式へと変換するフローを解説します.

# S3バケットの作成
まずはmp4ファイルを格納するバケットと変換されたファイル群を格納するバケットを作成しましょう
(ここではあえてバケットを分けていますが,分けなくても問題ありません.)

# IAMの作成
### MediaConvert用のロール
`AmazonS3FullAccess`, `AmazonAPIGatewayInvokeFullAccess`をアタッチ.
### Lambda用のロール
LambdaからMediaConvertを呼び出すためのカスタムポリシーを作成します.

“`json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “VisualEditor0”,
“Effect”: “Allow”,
“Action”: [

元記事を表示

AWS の利用料金の合計を Cost Explorer APIで取得する

# 概要
AWS の利用料総額を、Slack 通知する Lambda 関数を Python 3 で作成します。
Python/AWS 共に初心者レベルで修行中の身のため、極力単純な内容にしています。
勉強のため軽く見たいけど応用例みたいな記事しかなくて困ったので、そういった方の参考になれば幸いです。

# AWS 使用料金について
[Cost Explorer API](https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/ce-what-is.html) を利用するため、1回の実行当たり 0.01 USD が最低でも発生します。
連続実行などはされないかと思いますがご注意ください。

また、この記事では AWS Cost Explorer 画面の(おそらく)デフォルトで選択されている 非ブレンドコスト ではなく、ブレンドコスト を Cost Explorer API にて取得します。

# Slack 設定
Slack 通知するための Incomming Webhook 設定は [こちらの記事](ht

元記事を表示

CircleCIを利用してAWS SAMで自動デプロイする(Python)

## 概要
AWS SAM + Pythonで開発したサーバーレスアプリケーションをCircleCIからデプロイする機会があったので、解説したいと思います。

下記の記事を参考にさせて頂きましたが、今回の設定では一部修正しないとうまく動作しない部分がありましたので、その点について記載したいと思います。
[CircleCI と GitHub で AWS SAM のサーバーレスアプリを自動デプロイしてみた (開発環境 & 本番環境) | Developers.IO](https://dev.classmethod.jp/cloud/aws/aws-sam-auto-deploy-for-circleci/)

Pythonでの経験が少ないため、間違った記載がありましたらご指摘いただけると嬉しいです?‍♀️
普段はAWS SAM + Goを利用することが多いです。

## ソースコード
https://github.com/kobayashi-m42/aws-sam-circleci-deploy-sample

## 解説
CircleCIの設定ファイルはこんな感じで作成しました。

実行

元記事を表示

lambdaのNode.jsバージョンを上げるときはログのフォーマット変更にも注意

# バージョンでログ出力が違うから注意

2019年末にlambdaのNode.js 8.10がEOLを迎えます。
ログ出力の部分で微妙に動作が違うので念の為確認してからバージョンアップしましょう。
特にログ出力をライブラリで行っている場合、そちらの実装がどうなっているか見ておいた方が良いです。
kibanaとかでパースするロジックに変更が必要になるかも。

## Node.js 8.10

### 関数コード

“`
exports.handler = async (event) => {
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify(‘Hello from Lambda!’),
};
// デフォルトのテンプレートにconsole.log入れただけ
console.log(`”This is Node.js 8.10 log.”`);
return response;
};
“`

### Exe

元記事を表示

AWS SAM CLI 再入門 2019.12

この記事は [**AWS Advent Calendar 2019**](https://qiita.com/advent-calendar/2019/aws) 16日目の記事です。

## はじめに
2018年の5月に[aws-sam-local 改め aws-sam-cli の新機能 sam init を試す](https://qiita.com/hayao_k/items/841026f9675d163b58d5)という記事を投稿しました。
AWS SAM CLI は GitHub 上で開発がおこなわれていますが、リリースのペースが早く
日々機能追加や改善が行われています。結果として上記の記事の内容は一部古いものとなっています。
本記事では12/15時点の最新バージョンである v0.37.0 までのリリースを踏まえた使い方をご紹介します。

## AWS SAM と AWS SAM CLI
Serverless Application Model(SAM)はLambdaやAPI Gateway, DynamoDBのようなサービスを活用した
サーバーレスアプリケーションのデプロイに

元記事を表示

AWS IoTボタンで自分の訃報をツイートする「死んダッシュボタン」を作ってみた

# 死んダッシュボタンとは
自分の身にもしものことが起こった(死んでしまった)とき、自分の訃報をできるだけ早く周囲に知らせたい!
そんなとき、ワンクリックで自分の訃報をTwitterに投稿してくれる便利なボタン!
それが **死んダッシュボタン** です。

# なぜこんなものを?
友人と話しているとき、自分が死んだときってどうやって周囲に伝わっていくのか?という話題になりました。
親族や親しい友人にはすぐに伝わるでしょうが、たまにしか合わない友人や知人には伝わるまでにタイムラグがあるはずです。
そんな人達と生前たまたま飲み会や遊ぶ予定が入っていた場合は、ドタキャンと思われかねない。
連絡も返さない嫌なヤツになってしまう。
そんな不安から作成を決意しました。

# 準備
まず、[AWS IoT ボタン](https://aws.amazon.com/jp/iotbutton/)が必要です。
クリック、ダブルクリック、長押しで色々なことができるデバイスです。
あとはAWSアカウントとTwitterアカウントを用意します。

# Twitter APIの登録
自動でツイートを行うには、Tw

元記事を表示

直近の予定をGoogleカレンダーから取得して毎朝LINEで通知する

![screenshot-2019-12-13-155539.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35655/5af83558-e6c7-5811-9efb-e0dfd0dcd380.png)
我が家では当日〜明後日までの予定を毎朝LINEに通知してくれるちょっとだけ便利なものを導入してます:rolling_eyes:

# 概要

![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35655/b78a3ec4-b606-66ad-d09c-24b5da3f3dc9.png)

– S3から静的なデータを取得する
– GoogleカレンダーAPIで明後日までの予定を取得してくる
– LINE Notify APIで設定したトークルームへ通知する

## 材料
– AWS Lambda … 1つ
– Googleカレンダー … 1つ以上
– GCPのサービスアカウント … 1つ以上

元記事を表示

Backlogの課題内容に自動バリデーションをかける

2019-12-15 00-08-45.png

Backlog の課題登録時に、項目を未入力のまま課題登録をしてしまうケースがよくありました。
手作業でのチェックが面倒だったので、自動でバリデーションをかけて、問題がある場合には担当者を課題作成者に差し戻す簡単な処理を、API Gateway/Lambda/CDK で作成してみました。

方針としては、以下の通りです。

– Backlog 上での課題登録・更新時に webhook でチェックツールにデータを飛ばす
– API Gateway で POST リクエストを受け、Lambda でバリデーション処理を行う
– チェックのルール定義には、とりあえず [JsonLogic] を用いる
– もっと良いものがないか探し中
– バリデーションエラー時は、状態

元記事を表示

ObnizとAWS LambdaとLINEを使って家のエアコンをスマート化した話

# きっかけ
僕の家は最寄駅から徒歩20分くらいありまして、その道を毎日歩いて通勤しています。春先や秋などは良いのですが、真夏日だと蒸し暑い中で家と会社を往復しています。
会社に行く時は電車に乗れさえすればエアコンが効いてて快適です!ただ帰りの場合は、家についても中は暑く、時には外よりも蒸し暑い時もあります。
どうせなら駅に着いた瞬間エアコンをつけて、駅から家まで歩いている間に涼しくなってくれればいいのに・・・

# 作ったもの
LINEから「冷房」などとメッセージを送信すると、家のエアコンの冷房スイッチをONしてくれるbotを作成しました。

![out.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329420/8b5a576c-a018-be7c-9338-5026622d0820.gif)

LINEなので当然、ローカルネットワークではなくインターネット回線越しです。なので家の外でも会社でもどこでも、家のエアコンをつけたり消したりできます!
これ作ったのほんとは夏頃なのですが、冬用に暖房ON機能

元記事を表示

[小ネタ]VSCodeからSAMによるLambdaのローカル実行で「Error with child process: Building resource ‘awsToolkitSamLocalResource’」がでて動かない場合の対処

# 要約
SAMの内部にあるpipのversionとローカルのpipのversionが合わないと動かない時があるので、ローカルのpipのversionを修正する必要がある。

# 実行環境

|項目名|バージョン|
|—|—|
|OS|MacOS High Sierra 10.13.6|
|VSCode|1.40.2|
|SAM|0.37.0|
|Python|3.7.3|
|pip|19.3.1(記事内で19.2.3に変更)|

# 問題
VSCodeの「Run Locally」からAWS Toolkitを使用してローカル環境で試験したい時に動かない場合があります。例えば以下のようなエラーです。

“`python

Local invoke of SAM Application has ended.
Preparing to run app.lambda_handler locally…
Building SAM Application…
An error occurred trying to run SAM Application locally: Error

元記事を表示

AWS SDK for Python(Boto3)ではClient APIよりResource APIを使おう

# はじめに
この記事は[AWS初心者 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/aws_beginner)
の14日目の記事です。
もし誤りがあれば指摘してもらえると幸いです。

# 要約
Boto3の中ではサービスによってリソースAPI(boto3.reosurce(‘サービス名’)で呼び出すもの)があります。リソースAPIの方がクライアントAPIより抽象化されていて不要な情報を書かずに実装できるので、それぞれのAPIで同じことができる場合はリソースAPIを優先して使用した方が良いです。

# 記事全体の構成
まずBoto3、クライアントAPI、リソースAPIとは何だったのかを再確認します。
その後に両方のAPIを使用した場合にSQS、S3、DynamoDBの使用パターンを1ケースずつとりあげて比較してどう違うのかを具体的に見てみます。
最後に現在リソースAPIが提供されているサービスの一覧と所感を書いてます。

# Boto3とは
Pythonに提供されているAWSのSDKで、コードからAWSの各種サ

元記事を表示

AWS Lambda関数の呼び出し方を改めて確認する(2)

### はじめに
当記事は[AWS Lambda関数の呼び出し方を改めて確認する(1)](https://qiita.com/horit0123/items/0d82d999782d4e4540e5)の続きとしてLambda関数の呼び出し方のパターンを詳細に整理し確認していくものです。
 前述の記事では、WebアプリケーションのバックエンドとしてLambdaを実装した場合の例で呼び出し方としてご紹介しました。Lambda関数の基本的な呼び出し方(起動方法)としては、AWS CLI/AWS SDK/AWSサービスのとの連携という形でご説明しました。当記事では、Lambda関数がLambda関数を呼び出す場合について記載したいと思います。特にVPCと絡めて整理します。

### サマリ
– Lambda関数にはVPC内リソースにアクセスするLambda関数がある
– VPC内リソースにアクセスするLambda関数が別のLambda関数を呼び出す際(※1)にはPublic(インターネット経由)でLambdaのエンドポイントにアクセスする必要がある(※2)。
– VPC内のリソースにアクセスす

元記事を表示

AWS Lambda最小構成

#Lambda最小構成

Lambdaを使うことになり色々と調べていましたが、複雑なことをしているものが多く、
まずは自分が思う最小構成を作ってみようと思いました。

##Lambdaでやりたいこと
S3にテキストファイルがアップロードされたことをトリガーに
テキストファイルの中身を表示するLambdaを作ります。(ランタイムはPython 3.7)
![rapture_20191213184835.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535463/a0163f26-3d23-631e-22ca-efedc72de43e.png)

##Lambdaの設定
ハンドラはデフォルトのまま「lambda_function.lambda_handler」です。
プログラムは以下のようになります。
バケット名とアップロードするテキストファイル名は自身の環境に合わせてください。

“`
def lambda_handler(event, context):
# TODO implement

元記事を表示

AWS Lambda関数の呼び出し方を改めて確認する(1)

### はじめに
AWS Lambdaを皆さんどのようにお使いですか?
数msで終わるような軽量の処理から、900秒まで(2019年12月12日現在)の処理までプログラムを実装して簡易な設定をすればすぐ動作させることができて非常に便利なサービスだと思います。そのAWS Lambda関数の呼び出し方(起動方法)について改めて確認したいと思い、記事を書いてみました。なお、当記事ではWebアプリケーションのバックエンドとして動作するLambdaを例にLambda関数がどう呼び出されるのか説明し、[こちらの記事](https://qiita.com/horit0123/items/86c727d8d3ae74b9e52a)ではVPCと絡めて確認しています。


### サマリ
1. 様々な方法でLambda関数を起動することが可能だが、リクエスターにはIAMポリシーまたは、Lambda関数のアクセス許可ポリシーによる許可が必要
2. 同期で応答を受け取る方式と非同期で受付のみをし別プロセスで受け取る方式がある
3. 呼び出す際には、AWS Lambdaのエンドポイントにアクセスする必要が

元記事を表示

13日の金曜日だ!Lambda関数を守るぞIAM Access Analyzer!

# はじめに

なんと今日は**13日の金曜日**です:hockey:
12月13日(金)は実に6年ぶりで、次回は2023年だそうです。
~~こんな日にAdvent Calenderの記事を投稿する人たちは何を考えているんでしょうか?~~

※13日の金曜日を知らない方は以下のWikipediaをご参照ください。
参考: [13日の金曜日](https://ja.wikipedia.org/wiki/13%E6%97%A5%E3%81%AE%E9%87%91%E6%9B%9C%E6%97%A5)

さて、本題に入ります。
今日は**13日の金曜日**です。きっと**Json**がLambda関数を危ない**ジェイソン**でInvokeしようとしてるに違いありません:fearful:
悲劇が起きる前にIAM Access AnalyzerでLambda関数のポリシーをチェックしましょう!

# IAM Access Analyzerとは

先日行われたAWS re:Invent 2019で発表されたポリシーチェックのサービスです。
**追加費用なし**で以下のリソースのアクセスポリシー

元記事を表示

YouTuber になったから、活動を支えるサービスを React, API Gateway, Lambda, DynamoDB で作りかけた

2019年の7月、YouTube にゲーム実況チャンネルを開設しました。

本記事では、YouTube 活動に際して発生した問題点の紹介と、ツールをつくってそれを解決**しようとした**話をします。

## どのような YouTube チャンネルか。収録環境の説明

開設したチャンネルの特徴は以下です。

– 配信する内容はゲーム実況
– 2人で実況する
– 1人がプレイヤー、もう1人が Skype の画面共有を通じてゲームプレイを見て喋る

収録環境について、図にするとこのようになります。

![20191109_ビリビリトーク_古河.013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41720/a8eb1d42-88f7-2500-bc10-5649008d3d43.png)

本記事では「YouTube 動画撮影の問題点と、その問題点を解決するためのサービスを作ろうとした話」を紹介しますが、**問題点というのはこれから説明する収録環境によるもの**です。

チャットツールは Skype,

元記事を表示

(今更だが己は新鮮)AWS S3にファイルおくだけでWebサーバーか。WordPressから変換させて静的サイトなら格安?他のパターンは・・・

(2019/12/13 事後談追記) レンタルサーバー上にあったファイル数が少なかった(画像含め3MB以下)ので、S3への移行がブラウザのドラッグドロップですぐに完了。Webサイト開始の設定、読み取りセキュリティ設定、ドメインのCNAME設定をしました。無事に稼働を確認し、30分程度で一通り完了(S3バケット作るの初めてだったのですが)、レンタルWebサーバーの廃止ができてしまいました。ごめんなさいGMOさん!(従来はFTPでアップロード、バージョン管理もされていなかったので、Chromeブラウザだけでホイっと終わりバージョン管理もされる上にコストがレンタルサーバーと比較すると 500分の1? 1000分1?と随分と削減になり便利になりました)
・ ・ ・ ・ ・
#サーバーレスってどこまで安価にできるのかな(今までWebサーバーでコスト削減発想がなかった)
AWSで簡易なWebサーバーを簡単に作る方法の「パターン資料」が見当たらなかったので整理してみました。ことの発端はAWS試験勉強でEC2など立てなくてもWebサーバーが立てられることが分かったからコスト削減になるかもしれないと思い

元記事を表示

Chatwork から Slackへの Webhook通知

### 前置き

社内は Slackを多用していて参加チャンネルも多かったのですが、
最近案件の都合でChatWorkのチャンネルにも入ったことで
通知のチェックが大変になってきました。

そこで、ChatWorkの通知をSlackでも受け取りたいと思い
アプリを検索してみたのですが…

以外とないので、Lambdaで適当に作ってみることに。

### 連携イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200155/23cad49a-c963-7337-658d-fc691aabdaa4.png)

こんな流れにで、Webhookの フォーマット形式を良い感じ変換できれば
以外と簡単に実現できそう! (と、思ってました)。

### 作成

データのフローとは逆の形で、エンドポイント側(Slack側)から
対応していく必要があります。

#### 1. Slack – IncomingWebhook

IncomingWebhook のインストールをし、新規Webh

元記事を表示

PHPとAWS Lambdaと私

本記事は、[サムザップ Advent Calendar 2019 #2](https://qiita.com/advent-calendar/2019/sumzap2) の12/14の記事です。

# はじめに
本記事では、AWS LambdaとSAM(Serverless Application Model)の学習と、「Lambdaって、PHP使えないんでしょ!?PHP使えたら、触ってみようかな」っていうPHPer向けに、Lambda怖くないよ!って伝えられればと。

# 主な要素
そもそもLambda(とServerless Application Model)って使い方は良くころがっている気がするのですが、何から始めれば良いか、何を覚えれば良いかみたいなのがまとまったサイトがない気がしますので、まとめたいと思います。
※チュートリアル見れっちゅー話ですが、それもハードルが高い方向けです。

– [ ] **lambdaのレイヤー**
– 既存のものを利用する場合は不要
– 今回は、Stackery社が提供しているcustom runtimeのレイヤーを使用
– [ ] *

元記事を表示

OTHERカテゴリの最新記事