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

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

フリートプロビジョニング前にフックするLambdaの作成例

https://qiita.com/takmot/items/eda7c2f519581b40ec3f
前回記事の続きとして、フリートプロビジョニング前にフックするLambdaの作成例を記載します。

## プロビジョニング許可/拒否判定方法

1. シリアルナンバーと、プロビジョニング許可/拒否を表す値を記載したCSVファイルをS3に格納
2. LambdaからこのCSVファイルを参照し、デバイスから通知されたシリアルナンバーからプロビジョニング許可/拒否判定

以下CSVファイル例

“`
SerialNumber,Effect
1,Allow
2,Deny
3,Allow
“`

## Lambda関数

### 変更前コード

“`python
import json

provision_response = {‘allowProvisioning’: False}

def isBlacklisted(serial_number):
#check serial against database of blacklisted serials

def l

元記事を表示

Seleniumとheadless chromeをAWS lambdaに入れてみました。(Win10環境下の注意点等)

Python でWeb Scraper を作る時に、対象ターゲットのがclient-side javascript で取得している際、単純にurlopenではほしい情報を取得できないことが多いです。そのため、SeleniumかAPI(もしあれば)で取得することが多いと思います。

一方で、定期的に、かつ経済的に何かを実行したい時には、on-demand のAWS lambdaとCloudEvent を使用するのが良いでしょう。

では、スタート

## 手順

### 環境構築

Windows環境下でAmazon LinuxをOSにしたAWS lambdaを使うには、**Ubuntu on Windows 10** かその他remote linux server の支援が必要です。今回はより経済的な方法として、Ubuntu on Windows 10 を選択。

具体的なインストール方法は以下参照すると良いでしょう。

[Windows 10でLinuxを使う](https://qiita.com/whim0321/items/093fd3bb2dd287a72fba)

次に、P

元記事を表示

API実行ログをSlackに出力する

##はじめに
[前回の記事](https://qiita.com/ktsuchi/items/f99a7b5017306f4e6537)の続きです。

前回は、WebページのボタンからAPIを実行させるところまでを実装しました。
今回は実行ログの出力について記載します。

前回作成したAPIは限定された人しか実行できないようにしている訳ではなく、
Webページにアクセスできる人であれば誰でもボタンを押すことで実行できてしまいます。

そのため、どのIPから、どのような端末で、いつ実行したのかが記録として残るように、
API実行ログを出力させる方法にしました。

##構成図

赤枠で囲った部分が、今回のログをSlackに出力する構成です。

2つのLambdaを使って、API GatewayからCloudWatch Logsに出力されたログを整形してSNSに送り、
SNSに来たメッセージをSlackに送信してます。
(もっと効率的な方法があるかもしれませんが)

![ScreenShot 2020-10-08 9.06.38.png](https://qiita-image-store

元記事を表示

AWS Lambda LayersへZenpyをデプロイしてみる

[Zendesk API](https://develop.zendesk.com/hc/en-us/categories/360000003388)をPythonから簡単に呼び出せるようにするラッパー[Zenpy](http://docs.facetoe.com.au/zenpy.html#)をAWS Lambda Layerに入れてみます。

# なぜLambda Layerを使うのか?
AWS Lambdaへプログラムをデプロイする際に関連するライブラリ群も一緒に入れる必要があります。そのため、複雑なプログラムになるとデプロイパッケージが肥大化しがちでした。
ライブラリやカスタムランタイム、その他の依存関係をまとめたZIPパッケージです。

– AWS公式ドキュメント: [AWS Lambda レイヤー](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html)

# この記事で行うこと
AWS Lambda Layerへ`Zenpy`ライブラリをデプロイする。

# 事前準備
*

元記事を表示

lambda_handlerの引数eventの中身を知る方法

何かのイベントにフックしてlambdaを実行する際、eventの中身がわからくて困ったとき用メモ

“`
import json
import urllib.request
def post_slack(message):
send_data = {
“text”: message,
}
send_text = json.dumps(send_data)
request = urllib.request.Request(
‘slackのwebhookURL’,
data = send_text.encode(‘utf-8’),
method = “POST”
)
with urllib.request.urlopen(request) as response:
response_body = response.read().decode(‘utf-8’)

def lambda_handler(event, context):
message =

元記事を表示

API Gateway 開発者に読んでほしい、意味がわかると便利な実行ログ

API Gateway (REST API) では、開発やトラシューに役立つ実行ログ (Execution Logs) を出力することができます。
AWS サポートに問い合わせる際にも、この実行ログがあるとスムーズです。

実行ログは、ステージから設定できます。
![スクリーンショット 2020-10-06 16.07.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651869/1b6b93fc-aef5-04d6-db91-f2dc16371b81.png)

設定後、API Gateway にリクエストを投げると、CloudWatch Logs に出力されます。
ロググループ名は、API-Gateway-Execution-Logs_\/\<ステージ名> です。
![スクリーンショット 2020-10-07 17.50.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651869/475c6

元記事を表示

【AWS Lambda】推しを広めるTwitterBotをほぼ無料で運用した

# 作ったモノ

## 谷崎早耶?さややん?画像bot

谷崎早耶ちゃん(さややん)の画像・動画をツイートするボットを趣味で作りました。
2019年の5月に公開して、1.5年くらい運用しています。

![スクリーンショット 2020-10-06 11.18.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255210/2b0b8ef5-ad11-abf2-a65c-cff437efdea8.png)

AWS Chaliceの開発環境をdockerで構築し、超高速でサーバーレスアプリケーションをデプロイしてみた

# AWS Chaliceの開発環境をdockerで構築し、超高速でサーバーレスアプリケーションをデプロイしてみた

ChaliceもLambdaも初めてですが、
初めてのサーバーレスアプリケーションに興奮したので書きます

ソースコード [naokit-dev/python3_chalice_on_docker](https://github.com/naokit-dev/python3_chalice_on_docker)

## Chalice (チャリス?)

AWSが提供するPythonフレームワーク
Lambdaを使ったサーバーレスアプリケーションを簡単にデプロイできる
[Documentation — AWS Chalice](https://aws.github.io/chalice/index.html)

## 環境

– macOS Catalina
– VS Code
– Docker Desktop

“`
docker –version
Docker version 19.03.13, build 4484c46d9d
docker-compose –

元記事を表示

白いマスクから怪人マスクへ、AWSでサーバレスLINE写真処理アプリの開発記

# 0.はじめに

初めまして、中国から参りましたポンです。
今は野村総合研究所で働いている新人エンジニアです。
日本語がまだ下手ですから、もし変な日本語が入りましたらご容赦ください。
どうぞよろしくお願いいたします。

コロナ時期の旅行写真には、白いマスクが多すぎで、
もう我慢できないですよね?
ちょうど今は新人開発研修があって、これを研修の課題にしました。
これを解決するため、写真中の白いマスクを怪人マスクに変換するアプリケーションを開発しました。
「できるだけ作業量を減らす」というコンセプトに基づいて、
AWSの色々なサービスを活用してサーバレスLINE写真処理アプリとして開発しました。
**マスクだらけの写真にうんざりした方**も、**サーバレスに興味ある方**も、
ぜひ、この開発記をお楽しみください。

# 1.なぜこのアプリを開発?

元記事を表示

AWSSAAに落ちた時の悔しさを書く

## はじめに
##### 自分のスキル感
+ 実務4ヶ月程度(メインはバックエンド)
+ AWSたまに触るぐらい(超主要なサービスは理解していた)

よーするに**AWSあんまり知らない駆け出しエンジニア**ということになります。

#####資格を取りたいと思った理由は以下の2つ
+ 昨今AWSがインフラに使われるのは主流になってきていて自分も体系的な知識をつけたいと思っていたから。
+ 資格を持っていると**AWSに関してこれぐらいの知識ありますよ〜**という明確な基準ができるから。

一口に「AWS触ったことがある」と言ってもどのサービスなのか、どれぐらいの知識があるのかなど、線引きがしづらいと思っていた。
そこで資格の勉強をしてみようと思いました。

## 勉強したこと
勉強期間は**1ヶ月ちょっと**です。
基本的に勉強したのは下記の2つのみです

[この1冊で合格!AWS認定ソリューションアーキテクトアソシエイト テキスト&問題集](https://www.amazon.co.jp/%E3%81%93%E3%81%AE1%E5%86%8A%E3%81%A7

元記事を表示

WebアプリへのLINEログイン実装で少しハマったところ

WebサイトへLambda+Node.js+APIGateWayを含めて、LINEログイン機能を実装しようとした。
参考にしたサイトが
**「WebアプリにLINEログイン機能を組み込む」**
[URL] http://xp-cloud.jp/blog/2019/11/27/6116/

非常に分かり易くて参考になったが、一部どうしても動かない(LINE認証画面が出てこない)為、エラーメッセージを眺めてみると、「stateが無い」といったことを言われているので、あらためて、LINE公式を確認すると

“`
“queryStringParameters”: {
“error”: “invalid_request”,
“error_description”: “‘state’ is not specified.”
},
“`

stateというパラメータは「必須」ということだった。

![20201006-1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509691/bef57cfc-93b9

元記事を表示

初めてのAWS Lambda〜自作関数を動かす

# 前回の記事
[初めてのAWS Lambda〜Hello World](https://qiita.com/johnny1204/items/ef37459d96d74b0e62df)

# 今回の目標
Lambdaで自作関数を作成して、Slackに通知を送る

# 前準備
Slack通知を行いたいワークスペースにIncoming Webhookを追加し、Webhook URLを取得する
![slack_webhook.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236230/a6808192-8800-1ba3-a43e-ca3cd6b6bb20.png)

# 関数の作成
## AWSコンソール
今回は関数を自作するので、「一から作成」を選択し、関数名を入力。
言語はお好きなものを選択。今回はNode.jsにしてみた

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

元記事を表示

Java Lambda で巨大 JSON を扱う

InputStream を Lambda の入力にする記事を書きました。

Java Lambda の入出力型を試してみた〜Stream 編〜
https://qiita.com/kazfuku/items/6f0f55ffa3a88d76cfaa

InputStream を使用した場合のメリットとして、巨大な JSON を扱えると書いてます。そこで、実際のところどうなのかを検証してみました。

## テストデータ
まず、巨大 JSON を用意しました。name と text を持った object が 6000 個含まれるデータで、Lambda の入力サイズ上限 6MB に近い、約 5.9MB です。

“`Json
{
“data”:[
{
“name”:”vrZPwIw3T7″,”text”:”Ku7aQqW3WzUeiRdXnNB26iVElWdOUj8mQhvHksvN1sMmQ2fT3M8navvbTJuspda2q0bY3FWvsDoguE33tTNtoxuiHjdkUIHmylIezYGitmhJ2bbgcHhcHPzGr4eg3Ger9Ei

元記事を表示

StreamAPIについてまとめてみた

## StreamAPIとは
> Stream APIは名前の通り、ストリーム(Stream)という流れてくるデータやイベントを処理するためのAPI群です。
> Java SE8で追加された
> StreamはListやMapなどのデータ集合をもとに生成し、0回以上の中間操作と、1回の終端操作を実行することで結果を得る。

## StreamAPIの使い方
ざっくりと概要を掴んだ上で実際にソースを見てstreamを使用した処理と使用していない処理を比べて見ます。
サンプルとしてListを加工して一件づつ処理を行うコードを記載します。
※ラムダ式については詳しく記載しません。詳しくはこちらの記事を参照してください
[Javaラムダ式についてまとめてみた](https://qiita.com/yqxxnaxr1109/items/4045a7925340088bd7e3)

“`java:streamなし
List integerList = Arrays.asList(1, 2, 3, 4, 5);
for (Integer i : integerList)

元記事を表示

AWS SAM CLIの設定切替

# 経緯
新規プロダクトサービスの一環で、AWS SAMでServerlessを使ったんですが、今後の開発環境どうしよう?となりまして。
基本的なテストはローカルでいいにしてもステージング的な環境は欲しいし、複数のリリース先ってどうやって管理するん?
sam deployの設定をお手軽に切り替える、そんな機能ないの?
ドキュメントやhelp(当時sam –version 1.2.0)見てもそれっぽいものは見つからなかったんですが、AWS SAMのissue探してみたらあっさりありまして。

https://github.com/aws/aws-sam-cli/issues/1615

Release 1.3.0 – Support for Multi Config
https://github.com/aws/aws-sam-cli/releases/tag/v1.3.0

**ついこないだリリースされてた。**
※気づいた時点でちょうど1週間前

しかしまだあんまり情報ないようなので、とりあえずざっくり情報書いておきます。
あんまり詳しいわけではないので、間違ってたらごめんね!(

元記事を表示

ALB + Lambdaでお手軽3分ベーシック認証

## 概要

ALBのリスナールールの変更とLambdaの追加でベーシック認証を行います。

ベーシック認証の処理の流れとしては以下となります。

– ALBで`Authorization`ヘッダーを検証する
– 認証OKであれば、正規のターゲットグループに転送する
– 認証NGであれば、Lambdaをターゲットとするターゲットグループに転送する
– Lambdaではベーシック認証を要求するレスポンスを返す(なお、ALBからのヘルスチェックに対しては`200`を返すようにします)

## 1. Lambda関数の作成

まず、ALBが存在するリージョンで、Lambda関数を作成します。

– `一から作成`を選択
– 関数名を入力(今回は`BasicAuth`とします)
– ランタイムは`Node.js 12.x`を選択
– 実行ロールは`基本的な Lambda アクセス権限で新しいロールを作成`を選択
– VPCは特に何も選択しない
– `関数の作成`ボタンを押下

![Lambda関数の作成](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

AWS Lambdaの書き方まとめ

AWS Lambda使って○○がしたいときってありますよね。

そんなときLambdaやプログラミング言語のスキルが低い私はけっこう苦戦したので、攻略方法を自分のためにも世のためにもまとめます。

なおこの記事で扱う言語はPythonのみです。

# 基本
## 何をしたいのかを整理する

まずLambdaで何をどうしたいのかを整理します。
(他のサービスで実現できないかを考えておくことが前提)

以下、例を挙げていきます。

– **RDSのスナップショットを2時間おきに取りたい**

自動スナップショットは1日1回しかバックアップを取得してくれないため作成する。必要なことは、RDSインスタンスの一覧を取得して、タグのついた対象のRDSインスタンス名を取得、スナップショットを実行する。もしくはRDS名を指定してスナップショットを実行する。

– **EBSをスナップショットしたら別リージョンにコピーしたい**

EBSのスナップショットはAmazon Data Lifecycle Manager (DLM)を用いれば自動化できるが、リージョンコピーまではできないため作成する。必要なこ

元記事を表示

Java Lambda の入出力型を試してみた〜Stream 編〜

Java Lambda の入出力の型には、いろんなパターンが使えます。

* Map 方式
* POJO 方式
* InputStream/OutputStream 方式

公式ドキュメントでは [ここ](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/java-handler.html#java-handler-types) に書かれています。

[POJO 編](https://qiita.com/kazfuku/items/095b4fb9c37638f57457) では、POJO クラスを使用して JSON を扱う方法を紹介しました。

最後に、InputStream/OutputStream を使った Stream 編です。

前回の POJO 編に手を加えて、Jackson を使って自前で Parse、Generate するコードになります。

“`Java
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.servic

元記事を表示

Java Lambda の入出力型を試してみた〜POJO 編〜

Java Lambda の入出力の型には、いろんなパターンが使えます。

* Map 方式
* POJO 方式
* InputStream/OutputStream 方式

公式ドキュメントでは [ここ](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/java-handler.html#java-handler-types) に書かれています。

[Map 編](https://qiita.com/kazfuku/items/6b2e9131eb5e6e175922) では、Map 型を使用して JSON を扱う方法を紹介しました。

Map 方式のコードをみてみると、Object 型から String/Integer/Long 型などへのキャストが多数現れます。

“`Java
public class MapFunction implements RequestHandler, Map> {
@Override
public Map

元記事を表示

OTHERカテゴリの最新記事