- 1. Lambda(Python) + Rekognition で顔検出
- 2. AWS APIGateway+lambda+S3を使ってダウンロード機能を実装する
- 3. AWS+NodeJSでサーバレスな環境構築④
- 4. AWS+NodeJSでサーバレスな環境構築③
- 5. クロスアカウントでLambdaの自動デプロイをしてみた
- 6. Java8 ラムダ式の filter() で使用する条件をパラメータで渡す
- 7. AWS+NodeJSでサーバレスな環境構築②
- 8. 【Python3+Lambda】Slackで2020年のご挨拶
- 9. API Gateway + Lambda プロキシ結合の使用有無による違い
- 10. Lambda + OpenCVで画像処理 (グレー画像作成)
- 11. AWS Amplifyを利用してS3へファイルアップロードとLambda呼び出し
- 12. Terraformを用いたSageMaker Endpointの構築
- 13. AWS lambda+scrapyで定期的にサーバレスなスクレイピング その1.8
- 14. 【Golang+Lambda+CloudWatch】で、Dynamodbへのデータ挿入を定期実行
- 15. 続・Provisioned Concurrency for Lambda Functions ちょっと試してみた。
- 16. サーバーレスな郵便番号検索APIを作成してみた
- 17. AWS Lambdaのログをtailする
- 18. AWS+NodeJSでサーバレスな環境構築①
- 19. 年末なのでコブラの名言をランダムに表示するクソアプリ作った
- 20. docker-lambda + minioで環境構築
Lambda(Python) + Rekognition で顔検出
# Lambda(Python) + Rekognition で顔検出
この記事は[サーバーレスWebアプリ Mosaic](https://mosaic.w2or3w.com “Mosaic”)を開発して得た知見を振り返り定着させるための[ハンズオン記事](https://qiita.com/w2or3w/items/87b57dfdbcf218de91e2)の1つです。
以下を見てからこの記事をみるといい感じです。
* [Lambda + OpenCVで画像処理 (グレー画像作成)](https://qiita.com/w2or3w/items/e6feac50c751bbc64697)
* [AppSyncをフロントエンドとバックエンドで利用する](https://qiita.com/w2or3w/items/70f6b6d8d13b60afaee5)## イントロダクション
顔検出を実現する手段としてOpenCVが最初に思い立つ古い人間なのですが、OpenCVで納得いく検出をさせようと思うとなかなかしんどいんです。で、このAWS Rekognitionを利用してみたので
AWS APIGateway+lambda+S3を使ってダウンロード機能を実装する
# 背景
AWS使ってサーバーレスで自分用の家計簿的なwebサービスを勉強も兼ねて開発中。大分自分が欲しかった機能は実装出来てきた。
今後の為にもDynamoDBをバックアップをしたい。DynamoDB自体にバックアップ機構はあるものの、間違えてテーブル自体を削除してしまった時(構築スクリプトミスとか)の為に、CSVやjsonファイルなどでローカルPCに置いておきたい。# 方法を考察
手法は色々あると思うが、大きく分けて以下の2つになる。– どこかサーバー側で、aws-cliなどを使ってファイル出力する
– web画面にダウンロード機能を追加するやっぱりここはダウンロード機能。このサービス開発は勉強も兼ねてるし。
ここで、単純にwebページからダウンロードと言ってもまたそこで細かい手法が存在する。1. データを取得して、クライアント側で文字列作成してダウンロード処理
2. サーバー側で生成したファイルストリームをダイレクトレスポンスで返す
3. S3にアップして、そのアドレスを返し、リダイレクト
4. S3にアップ。フォルダ一覧ページも用意してそこからリンク
AWS+NodeJSでサーバレスな環境構築④
# はじめに
今回は[前回](https://qiita.com/isacRU/items/b4ab67d12f2d2377aea8)の続きで、DELETE(対象ユーザーの削除), GET(全ユーザーの取得) PATCH(対象ユーザーの更新)を作っていきます。# DELETE(対象ユーザーの削除)
指定されたidを元に、対象のユーザーが削除されるようにしていきます。
### Lambda関数の作成と設定
ソース
“`javascript:index.js
‘use strict’;
const AWS = require(‘aws-sdk’);
const myRegion = “us-east-2”;AWS.config.updat
AWS+NodeJSでサーバレスな環境構築③
# はじめに
[前回の記事](https://qiita.com/isacRU/items/f5a16683331779805a1b)ではDynamoDBのテーブルと項目作成、Lambda関数で使うロールやインラインポリシーの設定を行いました。今回はその続きで、API Gateway(REST APIでCRUD実装)をトリガーにし、Lambda(NodeJS)関数呼び出して、DynamoDBに参照や更新をできるようにします。
表現等が不適切の場合はご指摘いただければ、幸いです。
※サーバレスに関してよくわからない方は、[こちら](https://qiita.com/isacRU/items/fe4751603d3da32b2daf)をご覧いただければと思います。# アーキテクチャ図
![serverless.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43096/d77beb25-d5cd-0908-9502-7645b2c76bdb.png)# 流れ
– ソースで直接(Api gatewa
クロスアカウントでLambdaの自動デプロイをしてみた
今回`Lambda`の自動デプロイをクロスアカウントで実行したので覚書として残しておきます。
`Lambda`のデプロイには`CloudFormation`で実施しています。
`Lambda`の`CloudFormatino`の設定については下記を参照してください。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html
完成図としては以下となります。
![アーキ図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556143/6240f03e-c320-48ea-b4d3-c0fc59d99d6b.png)* ソースコードは開発アカウントの`CodeCommit`で管理します。
* masterブランチにソースコードがPUSHされると、開発環境の`CodePipline`が動作します。
* 開発アカウントの`Codebuild`上で“Cloud
Java8 ラムダ式の filter() で使用する条件をパラメータで渡す
ラムダ式は変数に代入して再利用することができますが、そのフィルタ条件などは固定されています。
[Java8 ラムダ式を変数に代入して再利用する](https://qiita.com/blueskyarea/items/169a04b77a297ead9774)そのため、そのフィルタ条件を変えたい場合、別々の式を定義する必要があるかもしれません。
例えば、
”文字列の長さが5の文字列のみ”をフィルタするラムダ式と、
”文字列の長さが8の文字列のみ”をフィルタするラムダ式が欲しい場合、以下のように2つの式を定義する方法が考えられます。“`java:lengthFiveOrEight
// 文字列の長さが5
final PredicatelengthEqualFive = name -> name.length() == 5;
// 文字列の長さが8
final PredicatelengthEqualEight = name -> name.length() == 8;
“`条件が常に固定であれば問題ありませんが、そのアプリケーションが柔
AWS+NodeJSでサーバレスな環境構築②
# はじめに
[前回の記事](https://qiita.com/isacRU/items/fe4751603d3da32b2daf)ではAPI Gateway+Lambda(NodeJS)を組み合わせてWEBページを表示するというアウトプットでした。今回はDynamoDBのテーブルと項目作成、Lambda関数で使うロールやインラインポリシーの設定を載せていきます。サーバレスに関しては個人的に興味があるとのと、次の案件で用いるからその予習になります。自身も初めてということもあり、表現がわかりにくいところもあるかもしれません。その場合は容赦無く、コメントで指摘していただければ幸いです。
※サーバレスに関してよくわからない方は、前回の記事をご覧いただければと思います。# DynamoDBってなぁに?
簡単に言ってしまうと、AWSがマネージドサービスとして提供しているNoSQL(非リレーショナル)データベースになります。「値」とそれを取得するための「キー」だけを格納するというシンプルな機能を持った「Key-Valueストア」です。**一般的なユースケース**
・ミリ秒単位のアクセスレ
【Python3+Lambda】Slackで2020年のご挨拶
#今回の背景
業務やコミュニティなどでslackを使用しており、日常的なやり取りも含めてslack上で行われることが多いです。そんな中、2019年大晦日にslackで新年のご挨拶をしよう!と思い立ったのが本記事の始まりです。
#slackで新年の挨拶をするために
###概要
slackの[Incoming Webhook](https://api.slack.com/messaging/webhooks)にメッセージをPOSTするLambda Functionを作成し、日本時間の2020/1/1 00:00:00に起動させます。
###処理フロー
かなりシンプルなフローですが、下図の通りです。
![名称未設定.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480978/83634662-9a1b-8115-e4b1-9aad02abf66a.jpeg)
1.2020/1/1 0:00にCloudWatch EventからLambdaをキックする。
2.1でキックされ
API Gateway + Lambda プロキシ結合の使用有無による違い
# やりたいこと
API GatewayとLambdaでREST APIを作成する際には、API Gateway側でLambdaプロキシ統合の使用有無を選べます。![](https://i.imgur.com/IntxYF0.png)
今まであまり気にしていませんでしたが、開発する中で挙動の違いについて混乱してきたので、出力フォーマットとQueryStringの受け取り方という2点に絞って違いをまとめてみます。
今回は以下の通り2つのAPI Gatewayでプロキシ統合と非プロキシ統合の2つのエンドポイントを作って、それぞれの挙動の違いを調べてみました。
– 非プロキシ統合
![](https://i.imgur.com/Nn3WeV8.png)– プロキシ統合
![](https://i.imgur.com/arRf5iI.png)## 1. 出力フォーマットの違い
###
簡単に言うとAPI Gatewayに対してLambdaから返されると想定している値が異なります。– プロキシ統合の場合
– Lambdaから返される値のフォーマットが決まっている(
Lambda + OpenCVで画像処理 (グレー画像作成)
# Lambda + OpenCVで画像処理 (グレー画像作成)
この記事は[サーバーレスWebアプリ Mosaic](https://mosaic.w2or3w.com “Mosaic”)を開発して得た知見を振り返り定着させるための[ハンズオン記事](https://qiita.com/w2or3w/items/87b57dfdbcf218de91e2)の1つです。
以下を見てからこの記事をみるといい感じです。
* [AWS Amplifyを利用してS3へファイルアップロードとLambda呼び出し](https://qiita.com/w2or3w/items/fb82544f001296087bd7)
##イントロダクション
S3への画像アップロードをトリガーに、その画像に対して画像処理をさせるLambdaのファンクションをPython3.6で実装します。
画像処理にはOpenCVを利用します。##コンテンツ
### GithubにLambdaファンクションプロジェクト用のリポジトリを作成
GitHubにプロジェクト用のリポジトリを作成しましょう。
リポジトリ名は `
AWS Amplifyを利用してS3へファイルアップロードとLambda呼び出し
# AWS Amplifyを利用してS3へファイルアップロードとLambda呼び出し
この記事は[サーバーレスWebアプリ Mosaic](https://mosaic.w2or3w.com “Mosaic”)を開発して得た知見を振り返り定着させるための[ハンズオン記事](https://qiita.com/w2or3w/items/87b57dfdbcf218de91e2)の1つです。
以下を見てからこの記事をみるといい感じです。
* [Vue CLIで新規プロジェクト作成と、よくある雛形の実装](https://qiita.com/w2or3w/items/20d393560571f1531041)
* [AWS Amplifyのセットアップ](https://qiita.com/w2or3w/items/bb0ddecb8fe7c5dca8ae)##イントロダクション
VueのプロジェクトへAmplify CLIでStorageとそれをトリガーとするFunctionをセットアップします。
WebアプリからS3にファイルをアップロードしてそれをトリガーにLambdaが動く
Terraformを用いたSageMaker Endpointの構築
## はじめに
[こちらのブログ](https://aws.amazon.com/jp/blogs/news/build-a-serverless-frontend-for-an-amazon-sagemaker-endpoint/)を参考に以下のようなSageMaker EndpointをInvokeするEndpointを構築してみました。
API Gateway EndpointからSageMaker Endpointを呼び出すLambda関数をトリガーし、予測を行います。
コードはGitHubに上げてあります。
https://github.com/suaaa7/iris-data-endpoint## 動作環境
– macOS Mojave (10
AWS lambda+scrapyで定期的にサーバレスなスクレイピング その1.8
## はじめに
先に結論を書いておくと、Lambda上で動かすところまで行けませんでした。
他の方法のあてはあるので、そちらがうまくいったら追記、もしくは別記事としてあげようと思います。今回は、[前回(その1)](https://qiita.com/rkhcx/items/a0102bebcfc687f30eb2)作成した`weather_spider.py`をAWSlambdaに乗せてサーバレスで実行できるようにしていきます。
前回からだいぶ時間が空いてしまいましたが、理由は後ほど・・・。## 目標
Lambdaを使用して、Yahoo!天気(東京)のデータを6時間おきに取得する。## 方法
今回は、サーバレスアプリケーションモデル(SAM)を使用して、lambda諸々を構築していきます。SAMについては[こちら](https://aws.amazon.com/jp/serverless/sam/)をご覧ください。
以下はawsコマンド,samコマンドが実行できることを前提としています。
## やってみる
### 1.SAM Projectの作成(sam init)
【Golang+Lambda+CloudWatch】で、Dynamodbへのデータ挿入を定期実行
![lambda(qiita) (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415008/669041a3-2afc-26e9-644e-a6989ba53ab9.png)
##前提条件(環境)
2019年12月31日に試したものです。
Go 1.12.9##手順
1. DynamoDBでテーブル作成
2. Lambdaで動かす関数をGoで書く
3. Lambda関数の作成
4. Lambda関数のトリガーとしてCloudWatch Eventsを設定#1.DynamoDBでテーブル作成
入力する項目は3つ!| 項目 | 入力した内容 |
|:-:|:-:|
| テーブル名 | Music |
| パーティションキー | Artist |
| ソートキー | SongTitle |###パーティションキーとは
まずパーティションとは、ハードディスク内の区切られた領域のこと。
そして、Dynamodbのデータは、複数のパーティションに分散され保存されるので、どのパーテ
続・Provisioned Concurrency for Lambda Functions ちょっと試してみた。
AWSの一番好きなサービスはAWS Lambda な人です(再掲)
—
[Provisioned Concurrency for Lambda Functions ちょっと試してみた。](https://qiita.com/keni_w/items/f284a1bac64830a826dd)
の続きです。Apache Bench使って、負荷かけてみたので、その辺まとめます。
あと、12/20にAWS Loft Tokyoで[AWS re:Invent 2019 サーバーレス re:Cap](https://awsreinvent2019recap.splashthat.com/) (以下サーバーレスre:Cap)があり、そこで聞いた話を織り交ぜます。
あと、クラスメソッドさんのブログでも検証されていますので、こちらも。
[LambdaのProvisioned Concurrencyを使って、コールドスタート対策をしてみた #reinvent](https://dev.classmethod.jp/cloud/aws/lambda-provisioned-concurr
サーバーレスな郵便番号検索APIを作成してみた
## 概要
AWSでサーバーレスな郵便番号検索をつくってみたの手順書です。
ファイルを置いて、プログラムを少し書くだけ簡単にできます。## 必要なもの
AWSアカウント
## 利用するサービス
・ S3 : 郵便番号のCSVを格納
・ S3 Select : S3のデータをSQLライクに抽出する
・ Lambda : S3のCSVからレスポンスを返すメソッド
・ API GetWay : Lambdaの内容をAPI化する
### Step1:郵便局のCSVダウンロード
日本郵政のページから以下CSVをダウンロード。
文字コードがShiftJISなので、UTF8に変換しておく。https://www.post.japanpost.jp/zipcode/download.html
またSQLをわかりやすくかけるように、以下のヘッダーを付与する。
“`text
JISCode,OldPostCode,PostCode,PrefecturesNameKana,CityNameKana,TownNameKana,PrefecturesName,CityName,T
AWS Lambdaのログをtailする
# はじめに
AWSマネジメントコンソールでAWS Lambdaのログを確認するのは面倒だ。
そう思ってググったんだが、当時、それっぽいことをやってる事例を見つけられなかった。さて、AWS LambdaのログはCloudWatchログに記録され、次のような構造をしてる。
CloudWatchログでは、個々の記録をイベントと呼んでるようだ。
一連のイベントをひとまとまりにしたものを、ログストリームと呼んでるようだ。
ログストリームは関数ごとにまとめられており、それをロググループと呼んでるようだ。これを踏まえると、tailは次のような流れになる。
tailしたいロググループを特定する
while True:
tailしたいロググループから最も新しいログストリームを見つける
if 見つけたログストリームの最初の取得だったら:
ログストリーム内のイベントを最初から取得する
else:
ログストリーム内の続きのイベントを取得する
少
AWS+NodeJSでサーバレスな環境構築①
# はじめに
サーバレスは完全に未経験ですが、勉強がてら備忘録として残しておこうと思います。
表現等が正しく無い場合はご指摘いただければ、幸いです。# サーバレスってなぁに?
簡単に言ってしまうと、ユーザーがサーバー領域を意識せず、直接利用出来るサービスを活用した構成のことです。
「Lambda」は設定されているプログラムを起動させる実行環境となります。起動条件が整った際に、プログラムをLambda環境に呼び出し、実行されます。この為、Lambdaでは、実行した時間とその回数のみの課金となります。**向いているサービス**
・待機時間の長いシステム
・CPUの負荷が時間帯によって差のあるシステム**不向きなサービス**
・常にシステムの動いている必要のあるサービス
・高負荷な状態が長時間続くシステムもう少し詳しいことを知りたい場合はこちらのサイトをご覧ください。
[サーバーレス アーキテクチャ](https://www.skyarch.net/iot/serverless.html)# Lambda関数の作成
・AWS Lambdaページ>関数の作成>一から作成
・
年末なのでコブラの名言をランダムに表示するクソアプリ作った
# 年末なのでコブラの名言をランダムに表示するクソアプリ作った
どうもこんにちは。
普段は会社員とかプログラムスクールのメンターとかやらせて頂いてますその辺のエンジニアです。2019年もあとわずかですが、みなさま年末は如何お過ごしでしょうか。
せっかくの年末なので、クソアプリ作ってみました。**本当はクソアプリアドベントカレンダーに乗っかってクリスマスに間に合わせたかったよ!!**
納期駆動開発はつらい。## その前に
皆さまあの有名な漫画、`コブラ`はご存知でしょうか?
宇宙海賊であるコブラが相棒であるレディーと一緒に宇宙を旅する少年漫画です。1978年から1984年にかけて連載していた漫画なので、お若い方はあまり知らないかもしれませんね。
色々突っ込むポイントがありすぎるところが逆に面白くて、僕はハマってしまいました。ネタバレしない程度にどんな話かというと、
– コブラがめちゃくちゃ強い
– セリフがいちいちクサい
– セリフがいちいちダサい
– でもそこがかっこいい
– すぐ美女と良い感じになるから羨ましい
– 作者は絶対
docker-lambda + minioで環境構築
AWS S3互換であるminioと、lamda function開発用のdocker imageであるdocker-lambdaを使って、ローカルで開発環境を作ろうというお話です。
## Minio
MinioはAWS S3互換のObject Strageで、ローカルにS3環境を作ることができます。
[公式ドキュメント](https://docs.min.io/docs/minio-quickstart-guide.html)も用意されており、Dockerがあれば手軽にはじめられます。起動するとこんな感じです。
![Screenshot from 2019-12-26 18-45-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263384/7fa426b0-5e99-040e-3846-3a96a1d74ae7.png)![Screenshot from 2019-12-26 18-45-41.png](https://qiita-image-store.s3.ap-northeast