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

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

Lambda + Goでネストされたアプリケーションを構築

![1280px-Go_Logo_Aqua.svg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/525769/2b8f3e0b-9e8b-1355-2e71-ffd3570f9337.png)

LambdaでGoを使ったAPIを作成したときの話
あるサービスでGoを採用し、Lambda上でapiを作成することになった、最初は小規模の認識で開発を行っていたが、仕様がどんどん膨らみ気づいた時にはエンドポイントが150を超え、そしてやってきたリソース制限

“`
Template format error: Number of resources, 206, is greater than maximum allowed, 200
“`

ネストさせることで回避できることを知り、ネストするも“`sam build“`できず、結局ネストされた各アプリケションを個別にビルドし、マージするシェルを書いて運用していた。
苦労した話を書こうと思い調べていると、いつの間にかネストされたアプリケーションのビルド

元記事を表示

AWS Lambda (Python 3.8)からWrikeのAPIを叩いてみる

#この記事の概要
AWS API Gatewayでリクエスト受けてLambdaを実行するという記事は以外にあるのですが、逆にLambdaから他の外部APIを叩くのにサンプルがほしかったのでLabmda & Python 3.8(&標準ライブラリ)からWrikeのAPIを叩いてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2671/90aaf978-d6da-eee8-9124-ee2025c738d6.png)
bearerトークンが使えるAPIが公開されているWeb serviceなら他のサービスでも流用できると思います。

#本記事の投稿者
Python&Lambda初心者(両方とも初めて書いてみた)のでとりあえず動けばいいというレベルです。
#大まかな手順
Wrikeで永続トークンを生成し、LabmdaでPythonの関数つくって実行。

#Wrike公式APIリファレンス(英語)
https://developers.wrike.com/

#永続アクセストークンの取

元記事を表示

AWS ChaliceでEC2とRDSを自動で起動停止するLambdaを作成

任意のタグが付いたEC2、RDSインスタンスをスケジュールで起動停止するためのLambdaです。

[Chalice](https://github.com/aws/chalice)で作ってあるのでハンドラーを変えればAPIエンドポイントから実行したりもできます。

以下実装です。

「AutoStartStop」タグが付けられたインスタンスを対象にして、平日の10時に起動、平日の19時に停止します。

“`python:app.py
from chalice import Chalice
import logging
import os
import boto3

app = Chalice(app_name=’schedule-startstop’)
app.log.setLevel(logging.DEBUG)

env_dryrun = False if os.environ[‘DRYRUN’].upper() == ‘FALSE’ else True

def change_instances_state(event, state=’Start’, dryrun=True

元記事を表示

AWSから行うセキュア動画配信 ~MediaConvertで動画変換~

## はじめに

個人情報を含む動画をAWSからセキュアな環境で配信してみる、の中編の投稿になります。

* [前編](https://qiita.com/r-mizuno/items/79ec52ca77ac0bb1b503): 配信するための動画を、AWS Key Management System (KMS) から生成した共通鍵で暗号化し、S3へ格納する
* 中編: **AWS Elemental MediaConvert を利用して、HLS+AES暗号化の形へ動画を変換する(今回)**
* 後編: Cloudfrontの署名付きCookieを利用して、アクセス可能なユーザを制限する

前回は、KMSを使用してS3へ格納する動画を暗号化(CSE)する方法をご紹介しました。
今回は、S3へ保存された動画をMediaConvertを使用して、HLS+AESの形へ動画を変換して配信用のバケットへ保存していきます。

## 構築予定の環境

構築予定のシステム構成図は以下のようになります。
本記事では、赤字となっている部分を解説します。

![image.png](https://qii

元記事を表示

Alexaスキル開発チュートリアル(AWS Lamda, node.js)

# Alexaスキル開発チュートリアル(AWS Lamda, node.js)
個人で開発した、Alexaスキル開発チュートリアルを記載します。

**今回は自分の目標設定をAlexaに記憶させて、次回起動時に目標期限を自動で算出して教えてくれるAlexaスキルを開発してみようと思います。**

### 完成イメージ

“`
◼︎ 初回起動時
(自分)アレクサ、目標リマインダーを開いて
(Alexa)こんにちは、目標リマインダーへようこそ。目標達成希望日時を教えてください。
(自分)2020年10月9日
(Alexa)ありがとうございます。目標達成日時は2020年10月9日ですね。

◼︎ 次回起動時
(自分)アレクサ、目標リマインダー
(Alexa)おかえりなさい、次の目標達成日時まで1年、残り12日です。目標達成に向けて本日も頑張りましょう
“`

### 前提知識
“`
1. AWS Lambdaについての最低限の知識
2. JavsaScriptについての最低限の知識
3. Alexa(スマートスピーカー)についての最低限の知識
“`

## STEP1 「ログイン」

元記事を表示

AWS LambdaでRESTでデータ取得してSplunkに送信してみる (Python編)

#はじめに

– [AWS LambdaでRESTでデータ取得してSplunkに送信してみる](https://qiita.com/symmr/items/c25fd31ebde1e8ebb095)ではBlueprintを使用してLambdaからSplunkへのHEC送信に成功しました。
– しかしBlueprintはNode.jsでした。Splunk管理者はPythonの方が得意だと思いますので(偏見)、Pythonでできないか調べました。
– PythonでSplunk HECに送信するClass([Splunk-Class-httpevent](https://github.com/georgestarcher/Splunk-Class-httpevent))がありましたので、今回はこちらを使って実現します。
– Splunk-Class-httpeventはレイヤーにしてLambda上のPythonから呼び出せるようにします。
– Splunkで毎日運勢を占えるようになりました。

#環境
– Lambdaからアクセス可能するためEC2などでグローバルIPを持つSplunk E

元記事を表示

【AWS IoT】IoT CoreのRuleでできること:アラート通知とシステムの疎結合化

#はじめに
今回はIoT Ruleでできることというテーマで、アラート通知とシステムの疎結合化の方法について書きました。具体的にはエッジデバイスからMQTT通信でIoT CoreにJSON形式のメッセージを定期的に送信する際、異常な値が検知された場合に誰かに通知したり、特定のサービスを止めたりする想定で、Ruleの解説をしていきます。
**※この記事内で紹介するコードは動作確認していないものも含まれるのでご了承ください。**

#共通部分-Ruleの作成
IoT Coreの画面から「ACT」→「ルール」→「作成」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001699/6d6be26d-15f8-640a-5ae5-c07aa85653cc.png)
**メッセージのフィルタリングにSQL構文が使えます。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001699/

元記事を表示

Amplify×Lambda×SESでメール配信

## 概要
開発中のアプリにレポートを投稿した際にメール通知が必要ということでAWSのSESを利用した検証を行いました。
メール通知やメール配信を考えている方の少しでも参考になればと思います。

## 事前に

### アプリケーション
[Amplify SNS Wrokshop](https://amplify-sns.workshop.aws/ja/10_getting_started/00_what_you_build.html)の「[FOLLOW/TIMELINE機能の実装](https://amplify-sns.workshop.aws/ja/50_follow_timeline.html)」までを実装済みの方を前提としています。
しかし、SESの実装自体は簡単ですので、Amplify SNS Wrokshopをやっていない方でも実装できると思います。

### Email認証
SESの送信元は検証済みのEメールアドレスが必要となります。
検証済みのEメールアドレスがない方は[こちら](https://docs.aws.amazon.com/ja_jp/ses/latest

元記事を表示

LambdaとSNSでごみ収集日をメール通知

##はじめに
平日休みだと、日課のごみ出しを忘れてしまうことがあるので、前日に通知しておきたいと思いました。
せっかくなのでLambda(Python)とSNSを使ってメール通知したいと思います。

##今回構成するサービス
「毎日20時に翌日のごみ収集内容をEメール通知する」というサービスを作ってみようと思います。

大まかな流れは以下の流れで行います。
①SNSでTopicとサブスクリプションの作成
②Topicに対し、テストメッセージを送る
③IAMロールの作成
④Lamdaでテストコードの実行
⑤明日の曜日を判定するコードの作成
⑥SNSでメッセージの送信
⑦Lambda関数の定期的な実行

##SNSでTopicとサブスクリプションの作成
SNSのサービス画面でTopicを作成します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/991082/5ef4b46e-728b-5aa5-a531-389f2a4cc2e4.png)
画面上の指示に従い、以下のようにTopicを作成します。

元記事を表示

[AWS SAM] Python外部ライブラリ(Pandas)のLayer化

関連記事:[[AWS SAM] Lambda Layerの定義(nodejs)](https://qiita.com/takmot/items/6b18a74784fbf346f4ae)

# 目的

– Lambdaで外部ライブラリ(Pandas)を使用するためにLayer化する
– AWS SAMでLayerをデプロイする

# パッケージの作成

外部ライブラリをLayer化するためには

– 外部ライブラリをまとめたzipファイルを作成する
– 使用する外部ライブラリが参照している他の外部ライブラリも含める
– Amazon Linux でデプロイパッケージを作成する ※Lambdaの実行環境がAmazon Linuxのため
– Lambdaの実行環境に合わせたRuntimeで作成する

今回はEC2でAmazon Linuxのインスタンスを使用した

### Amazon LinuxへのSSH接続

デフォルトのユーザ名:ec2-user
EC2からダウンロードした秘密鍵:****.pem

を使用してログインする

### Python3インストール

参考:[【2020年

元記事を表示

AWS LambdaでRESTでデータ取得してSplunkに送信してみる

#はじめに
– RESTで取得してSplunk or Splunk Cloudに取り込みたいデータがある
– Add-onがあればいいんだけど、ないものはない
– Add-on作るのめんどい
– ローカルでREST叩くスクリプト動かすとしても24時間稼働するマシン用意するのもコストがかかる
– うーん、、、AWS Lambda試してみるか → **何これすごい!** というお話です

追記:本記事ではNode.jsを使用します。Pythonでの方法をまとめました。
[AWS LambdaでRESTでデータ取得してSplunkに送信してみる (Python編)](https://qiita.com/symmr/items/074be71bdcc31d3e6079))

#環境
– Lambdaからアクセス可能するためEC2などでグローバルIPを持つSplunk Enterprise、もしくはSplunk Cloud
– AWS Lambda

#設定手順の概要
1. SplunkでHEC設定
2. AWS Lambdaで関数作成
3. CloudWatchでLambdaを定期実行化

#

元記事を表示

【AWS IoT】Greengrass Coreデバイス上でLambdaを起動し、ローカルファイルをS3にアップロードする際の9個のハマりどころをまとめてみた。

#はじめに
AIカメラ等のプロジェクトでほぼ必須(だと思います)の「Greengrass Coreデバイス上でLambda(boto3)を動かしローカルファイルをS3にアップロードする」手順と注意点をまとめました。エッジコンピューティングの基礎でもある機能で、一見すごく簡単そうですが、筆者自身かなりハマってしまいました。ラズパイの初期設定から最後の画像のアップロードまでハマりどころが9つあるのでそれを実際の手順にそって解説しています。
(ちなみにGreengrassはversion1を使っています)

#概略図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001699/c8c852f3-690f-1c49-25c8-42e5eeda2878.png)

#今回やることの大まかな流れ

**初期設定(OSインストール、ラズパイの初期設定、PCからラズパイへSSH接続、Greengrass Coreのインストール&Greengrass初期設定、Filezilla等FTPソフトウェアでラ

元記事を表示

Greengrass(V1)の自動起動設定&コアデバイスの接続情報をLambdaで取得

#はじめに
Jetson nanoにGreengrassをインストールしていますが、毎回電源を入れる度にGreengrassを起動するのが手間でした。
そこで、公式ドキュメントに自動起動の設定方法が記載されている通りに設定をしました。

また、今回はあわせてJetson nanoにssh接続するためのIPアドレスを返すLambdaをJetson nanoにデプロイしました。
結論から言うと、こちらは結果的に不要な作業だったのですが、なぜ不要だったか含めて書き残しておきます。
#1 Greengrassの自動起動設定
公式ドキュメントにある通り、systemdを利用したGreengrasの自動起動設定を行います。
参考:[Init システムを設定して Greengrass デーモンを開始する](https://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/gg-core.html#start-on-boot)
##1-1 ユニットの設定ファイル作成
最初にsystemdでGreengrassを扱えるようにユニットファイルを作

元記事を表示

[Nest.js] API Gateway + Lambda + DynamoDB 構成を実現してみた

#概要

普段、API Gateway + Lambda でAPIを作成する時は、特にフレームワーク等は使用せず一から作成していたのですが、今回機会があり Nest.js を利用したので備忘録として残しておきます。
Next.jsとはなのですが、
・TypeScriptで書けるNode.jsフレームワーク
・GraphQL、TypeORMなどもサポートしている
・基本的な構成が用意されていたり、デコレータを利用したりと、効果的かつ安易に作成することができる
みたいな感じとのことです。

公式サイト
https://docs.nestjs.com/

#前提
・AWSを利用できる環境
・基本的なTypeScriptの知識

##NestJSインストール
NestJSはnpmパッケージとして提供されています

“`
npm install @nestjs/cli -g
“`

インストールしたCLIを使って、プロジェクトの作成を行います。

“`
nest new my-app
“`
インストレーションに従ったあと、プリケーションサーバーとして、以下コマンドで起動してみます。

元記事を表示

AWSでCloudWatch Logsのフィルター後のURLの作り方

## やること
CloudWatch Logsのフィルタリング後(filter pattern)入力後のURLを生成

## 環境
python 3.8
aws

## 背景
CISベンチマークに関するアラート通知を作った。
AWS公式ドキュメントに記載のある、フィルタリング条件で、CloudWatch Logsでフィルタリング後のURLを通知したかった。
https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-cis-controls.html

## やってみた

実際に[CIS3.1](https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-cis-controls.html#securityhub-cis-controls-3.1)を例にやってみる。
CloudWatchLogsには検索文字列、開始日時、終了日時の3つを指定できるため、それぞれ作成して最後にくっつける。

### フィル

元記事を表示

Lambda で返ってくる文字列でハマった

# 問題
Lambda、API Gateway を使って Web ブラウザからの入力結果を処理していた。Lambda 関数の戻り値に不要なダブルクォーテーションがついていた。

以下のような Lambda 関数を作成した。

“`lambda_function.py
if bool:
return ‘Exist’
else:
return ‘NotExist’
“`

lambda_function.pyの戻り値がresponse.text()に格納されるのだが、bool が True であるにも関わらず、result === ‘Exist’ の結果が false になっていた。

“`main.js
fetch(url, requestOptions)
.then(response => response.text())
.then(result => {
if (result === ‘Exist’) {
alert(‘存在します。’);
} else {
alert(‘存在しません。’);
}
})
“`

ログを見ると、res

元記事を表示

【AWS IoT】AWS IoT初心者がAWS IoTを100時間触って「つなぎ」の部分をわかった範囲でまとめてみた

#はじめに

エッジデバイスとAWSサービス(IoT CoreまたはS3)間でとりあえず通信ができるところまでの手順と簡単さ、注意点についてまとめてみた。コード更新のしやすさ、管理のしやすさなどは考慮に入れていない。初心者の記事なので、間違っている箇所があるかもしれないのでご了承いただきたい。

※2021年3月19日追記:ラズパイ上でGreengrass Lambdaを動かしローカルファイルをS3にアップロードする方法へのリンクを追加しました。

#1. 対象となる機種
今回エッジデバイス代表としてはよく使われる以下の2つを対象とした。
ESP32(OSなし)
ラズパイ(Raspbian OS)

##1-1. ESP32
マイコン代表。1000円。ESP8266(500円)に比べてスペックが高いのでZerynthで簡単なPythonが動かせたりAmazon Free RTOSも乗る。NodeREDをかませればAWS IoTとも割と簡単につながる(NodeREDは基本無料)。一番使われているのはArduino IDEでの開発らしい。確かに敷居が低く、ESP32が手元にあればLチカま

元記事を表示

ecsクラスタにあるコンテナたちのヘルスチェックを AWS Lambda(boto3)で実装してみた

## 概要
ECSクラスタ内でバッチ処理を行うコンテナが常駐しているのですが、
ここ最近Fargateのメモリを食い潰してて、よろしくない挙動をしていました。

問題はつくりにあったのですが、それより問題だったのはヘルスチェックが実装されていなかったこと。

そこで既存のコンテナたちを変更することなく、
boto3を利用したヘルスチェックを実装することにしました。

## 図にしてみると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927949/2be1e760-26a5-3156-2691-7ebae0145208.png)

元々内部でログ検知の仕組みがLambdaで動いているので、アラート自体はそちらに任せることにしました。
ヘルスチェックのログを別関数でチェックしてもらうイメージ。

## やったこと
とりあえずLambdaだけで構築なので、Serverless Frameworkでやりました。
ただ一点厄介事がありました・・(詳細は後述

## lambda実装

“`p

元記事を表示

【学習メモ】AWS Lambda

#Lambda
サーバーレス。
FaaS(Functions as a Service)
AWS Lambdaはサーバーがなくても、コードを実行することで効率的なアーキテクチャを実現できるサービス。

##特徴
・実行基盤は全てAWSが管理
・AWSサービスと連携させることで簡単にイベントドリブンなアプリケーションを実装可能
・100ミリ秒単位でコード実行時間に対しての課金でありコスト効率が非常に高い
・オートスケール
・Python/Java/Node.js/C#/Go/Rubyで書かれたコードを実行

##仕組み
イベントの発生がトリガーとして、Lambdaコートが実行される。

##利用モデル
###Pushモデル
・AWSサービスとカスタムイベントが直接実行することによって、Lambdaへイベント通知して、コードを実行する。
※コード実行の順序は保証されない

###Pullモデル

・LambdaはDynamoDBとKinesisなどのデータ処理へポーリングを行い、コードを実行する。
※一度ストリームに入れることによって、イベントの順序を保つことができる

####パーミッ

元記事を表示

aws-sdkを使用して、sesでメールを送信する

lambda内で処理した結果をsesを使用してメールで送信する。

## 環境
“`
serverless -v
“`
>Framework Core: 2.1.1
Plugin: 4.0.4
SDK: 2.3.2
Components: 3.1.3

“`
node -v
“`
>v14.7.0

## 目次
1. メールアドレス登録
2. serverless create
3. コード追加

## メールアドレス登録
awsマネジメントコンソールにアクセス、sesのコンソール画面に移動。
![スクリーンショット 2021-03-14 19.06.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1022774/b2cbc0fa-2a27-243f-2a5e-ac9498bb9442.png)

画面上部のVerify a New Email Addressをクリックする。
![スクリーンショット 2021-03-14 19.07.14.png](https://qiita-image-s

元記事を表示

OTHERカテゴリの最新記事