- 1. LambdaでElasticsearch Serviceの手動スナップショットを取得する仕組みをCFnで一括デプロイ
- 2. [AWS]インスタンス起動時にIPアドレスを自動でRoute53に登録する
- 3. データをアップロードするとファイル名チェックをするAWS Lambda
- 4. [awscli] nodejs8.10を使用しているlambdaを洗い出すワンライナー
- 5. IoTポストで投函されたら電話が鳴るようにしてみた
- 6. AWS CloudFormationをちょっとだけ理解した
- 7. Nuxt.js(SSR)をLambdaで配信する【個人開発】
- 8. 素人がAWSに手を出してみた様子-2
- 9. FunctionsでGoogle Cloud Storageにデータをアップロードするならupload()ではなくsave()がお勧め
- 10. Deeplearning on AWS をやってみたの巻き
- 11. API Gateway + Lambda + DynamoDBでサーバーレス環境を構築する
- 12. AWS SAM CLI を使って、ローカルでLambda環境を構築する
- 13. Serverless FlameworkでAPI Gatewayのバイナリメディアタイプを設定する方法
- 14. [AWS SAM]VSCodeでLambda関数をローカルで開発する
- 15. 【覚書】SQSイベント駆動でLambdaを動かす
- 16. fugaしか答えない残念なBotに8万語の辞書を持たせてインテリBotにした話
- 17. aws-lambda-go/cmd/build-lambda-zipをgo get時のエラー
- 18. ぷらそにかの動画を毎日宣伝するbotを作った?
- 19. AWS Lambda、FlaskとOpenCVの環境構築
- 20. togglからslackにレポートを通知するwith Serverless Framework
LambdaでElasticsearch Serviceの手動スナップショットを取得する仕組みをCFnで一括デプロイ
Amazon Elasticsearch Service (AES) で手動スナップショット取得の仕組みをCloudformationで一気にデプロイします。かつCurator使って古いスナップショットは自動的に削除する設定になっています。スナップショット取るだけで意外に大変です。
PythonスクリプトはこちらのAWSのドキュメントにあるものベースにしてます。
https://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/developerguide/curator.html
# やりたいこと
これを作ります。スクリプトはAWSのドキュメントにあるものを、ほぼそのまま使っているので、読めばすぐわかるレベルだと思います。コメントも残ってます。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/fd25ed74-896a-60f6-77fb-fc1ebf2bd53f.png)
# 手動スナップショ
[AWS]インスタンス起動時にIPアドレスを自動でRoute53に登録する
# Elastic IP をケチりたい
たまにしか起動しないインスタンスに Elastic IP をアタッチするのはもったいない。といって、起動するたびにIPアドレスが変わるとホスト名でアクセスできなくて面倒くさい。
……というテーマで以前、[記事](https://qiita.com/keys/items/264a64c2841875d51cdd)を書きました。
今回はそれを推し進めて CloudWatch Event でインスタンスの起動を監視して、起動したら自動でIPアドレスを Route53 のAレコードに登録する、という Lambda を書きました。これでEIP(と無駄な支出)とはおさらばだ!
あと、余計かもしれないけどインスタンスを停止したときにレコードを削除するようにしてみました。意味あるかなぁ。
## 必要な権限
登録したい Route 53 のホストゾーンのレコード一覧を取得・変更するための権限:
– `route53:ChangeResourceRecordSets`
– `route53:ListResourceRecordSets`インスタンス
データをアップロードするとファイル名チェックをするAWS Lambda
# はじめに
* AWS S3にアップロードされたデータが、ファイル命名規則に沿っているかチェックします。
* チェック結果はSlackに通知
* 規則に沿っている場合、後工程に繋げることもできます(ex.機械学習モデルのの推論呼び出し)。
* 今回はその前段階です。
* AWS上での機械学習モデルの学習や、推論は以下の記事を参照ください。
* [Amazon SageMakerで猫と犬の検出と種類の特定をしてみた](https://dev.classmethod.jp/machine-learning/sagemaker-cat-dog-detection/)# 前提
* AWSのアカウントは作成済み
* SlackのWorkspaceに所属している# 手順
* Step.1 Slackの設定
* Step.2 データをアップロードするS3の作成
* Step.3 Lambda関数の作成
* Step.4 Lambda関数の修正# Step.1 : Slackの設定
* 参考:[AWS Lambdaで作るSlack bo
[awscli] nodejs8.10を使用しているlambdaを洗い出すワンライナー
# モチベーション
`AWS Lambda: Node.js 8.10 is EOL, please migrate your functions to a newer runtime version.` らしいので、nodejs8.10を使ってるlambda関数を洗い出したかった
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtime-support-policy.html
https://qiita.com/kapioz/items/1e0fb80afc7d98bbde52# ワンライナー
`aws lambda list-functions | jq -r (‘.Functions’|.[]|'{ FunctionName: .FunctionName, Runtime: .Runtime}’) | jq -r ‘select(.Runtime == “nodejs8.10”)’`
こっちだと関数名のみ
`aws lambda list-functions | jq -r (‘.Functions’|
IoTポストで投函されたら電話が鳴るようにしてみた
この投稿は、[こちらの記事(IoTポストの紹介)](https://qiita.com/roi-dev/private/5d4acc399e1f78002d1a) の続きです。
# IoTスマートポストに投函されたら電話を鳴らしてみる
前回のIoTポストでは投函されたらメールが届いていましたが、ここではAWSの機能を利用して、電話が鳴るようにしてみました。AWSのサーバレス「Lambda」経由で「Amazon Connect」という電話コールセンターの仕組みを一部利用して、投函物を検知したら、所定の電話番号に通話が開始されて、投函物が来た旨のお知らせができるようになりました。
具体的には下記の図のように、マイコンボードから Amazon API Gateway から「Lambda」上のPythonの関数を起動し、Amazon Connectに接続して、指定の電話番号に通話する機能を構築しています。Amazon Connectを利用するメリットとしては、電話が鳴って出ると、合成音声によって、LambdaのPython上の文字列をそのまま日本語で読み上げられるというのが実現できるこ
AWS CloudFormationをちょっとだけ理解した
やっとなんとなく意味がわかってきたCloudFormation。AWSのインスタンスやいろんな設定を簡単にデプロイできるツール、みたいな説明はいっぱい見かけるけど、覚えないといけない仕組みが増えただけでaws cliでできることとなにが違うのかがいままでよくわからなかったのです。
理解した内容は、
1. CloudFormationは冪等性を担保しやすいこと
2. 複数のリソースを一括で管理できること詳細
1. インフラ構築をaws cliでがんばってスクリプト化しても「Infrastructure as Code」は実現できるかもしれないが、aws cliではcreateなんちゃら系をするコマンドは2回目以降にエラーになっちゃったりして、きちんと動くようにするにはいろいろ大変。CloudFormationであれば記述をシンプルにできるし、何度実行しても最新の記述に更新できる冪等性を実現できます。
2. EC2とRDSの組み合わせなど複数のリソースからなる一連の仕組みを一発で作れるだけでなく、削除も簡単です。EC2やRDSなどのリソースをCloudFormationのスタッ
Nuxt.js(SSR)をLambdaで配信する【個人開発】
## 概要
Qiitaのストックを整理するためのサービス「Mindexer(ミンデクサー)」のフロントエンドを
Vue.jsで構築したSPAのアプリケーションからNuxt.jsでSSRを行うように再構築しました。LambdaでExpressサーバーを動かし、その上でNuxt.jsを動かしています。
この記事では、今回の開発で得られたNuxt.jsに関するTipsやインフラ構成などについて解説していきたいと思います。なお、Vue.jsからの移行に関する解説は含みません。
## サービスについて
「Mindexer(ミンデクサー)」については、こちらの記事で解説しています。
バックエンドで利用している技術についても解説していますので、合わせてご覧いただけると嬉しいです。[:link: AWS + Laravel + Vue.js でQiitaのストックを整理するサービスを作りました!【個人開発】](https://qiita.com/kobayashi-m42/items/14e137727ffda3bf79e7)
[:link: 個人開発のインフラをEC2からFargate
素人がAWSに手を出してみた様子-2
どうもはじめまして。
前回初めてAWSのEC2インスタンス作成してみました。
前回:【素人がAWSに手を出してみた様子-1】
https://qiita.com/entakar/items/4ee87782e02e34eac14dEC2でインスタンス立ち上げただけなのですがね
## nginxの設定を終え
EC2でなんとかnginxの設定を完了させindex.htmlの表示が完成
ただそれだとEC2じゃなくてS3で十分じゃん!!!## 何をするのか
そもそもAWSに手を出したのはlinebotをphpで作成した環境が
さくらスタンダードの環境があったので試してみた。
から始まっています。
その時に、そうかこれはAWSを構築してBOT用のPHPをAWSにおいてみれば
AWS構築の勉強にもなるじゃないか!でした
## そして・・・課金の壁
linebotで使用するmessageAPIそのフックとなるのが
【Webhook URL】これがhttpsでないと設定不可(2019年11月時点)
もしかしたら前はhttpでも大丈夫だったかもしれないけれど、
近年https通信が
FunctionsでGoogle Cloud Storageにデータをアップロードするならupload()ではなくsave()がお勧め
#概要
Google Cloud Storageの入門して間もない初心者が対象なので、タイトルで意味の分かる方はスルーでOKです。
各ベンダーの提供するFunctionsはサーバーレスであることから、ファイルへの入出力を推奨していない。
永続的なものはStorageに保存し、一時的なものはメモリー(基本は変数)を使用することになる。
しかしGoogle Cloud Storageのドキュメントを見ると、ファイルを前提としたupload()が使用されています。
Functionsから使用するサンプルとしては適していないため、Functions用に残しておきます。私はNode.jsの信者なので、その他の言語はドキュメントで該当するメソッドをお調べください:sweat_smile:
#読者対象
– Google Cloud Functionsの初心者
– Google Cloud Storageの初心者#解説
##まずは公式ドキュメントのおさらい
遷移先でコードが表示されない場合は、「コードサンプル」=>「NODE.JS」の順でクリックしてください。
アップロード
ht
Deeplearning on AWS をやってみたの巻き
#目的
Deep Learning を学ぶ#目標
よくある犬の学習をやってみる
学習させてみる
Deep Learning 周辺ツールを使ってみる#結果
sage maker を使うと学習効率がいいね!機械学習を学びたい人にとって、環境設定やAPI 連携などの”機械学習を使うための環境構築” は、障壁になりそう。
最初は、AWS トレーニング等を通じて、1回教えてもらうと学びたいところへジャンプしやすそう。周辺ツールとして、
コンテナ やLambda などのオンプレミスサーバ構築と比べ、高速化を実感しながら、機械学習を体験できた。
今までより、OS起動、OS設定でつまずかない分、気楽でした!#できたこと
よくある画像認識のスコアリング。今回は、ビーグル犬を判定!
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184724/099572ca-b427-b46c-dd27-9294f4e4a0cf.png)#やったこと
サンプル画像とサンプルコードで、コンテナ作った
API Gateway + Lambda + DynamoDBでサーバーレス環境を構築する
# API Gateway + Lambda + DynamoDB = Serverless
AWSでサーバーレスを構築するアーキテクチャを考えた時に、もっとも基本的でわかりやすい構成は、API Gateway + Lambda + DynamoDB(ないしはS3)の組み合わせだと思います。
## このエントリーで触れること
– Lambda関数の作り方
– API Gatewayでのリソースの作り方
– API GatewayとLambda関数の紐づけ方
– Lambda関数でのDynamoDBのいじり方AWS SAMには触れないです。
## Lambdaで関数を作る
Lambdaで関数を作ってデプロイするのは非常に簡単な作業です。
ランタイムはnode.jsを使います。
関数を作成する方法としては、
1. AWSコンソール上で関数を作成する
2. ローカルで関数を作成してzip化し、Lambdaにアップロードする
3. ローカルで関数を作成してzip化し、S3にアップロードした後に、Lambdaからそれを呼ぶ
4. ローカルで関数を作成してzip化し、cliでデプロ
AWS SAM CLI を使って、ローカルでLambda環境を構築する
## はじめに
AWS SAM CLIを使って、Lambda環境をローカルで構築できると聞いて構築してみました。
チュートリアルでオプションになっているローカルで動作させるところをゴールとしています。
なので、開発者ガイドに書かれているようなIAMやS3は設定しません。AWS CLI もインストールしません。
ローカルのLambdaは、Docker コンテナで動作します。また、この記事では下記の開発者ガイドを参考にしています。
各コマンドが何を行っているか詳細が書かれているので、気になる方は参照してみてください。– [チュートリアル:Hello Worldアプリケーションのデプロイ](https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-getting-started-hello-world.html)
この記事は、2019年11月時点で作業記録です。
## 環境
– CentOS Linux release 7.6.1810
– Do
Serverless FlameworkでAPI Gatewayのバイナリメディアタイプを設定する方法
表題の件、日本語文献だと`serverless-plugin-custom-binary`を用いるパターンが散見されるが、
内容が古く、Version1系の説明が多い
現時点(2019/11)ではVersion2(それもリリースは2018/6)で、設定方法が変わっている– Version2
“`yaml
plugins:
– serverless-plugin-custom-binary
custom:
apiGateway:
binaryMediaTypes:
– image/jpeg
“`
https://www.npmjs.com/package/serverless-plugin-custom-binary#usage– Version1
“`yaml
plugins:
– serverless-plugin-custom-binary
custom:
apigatewayBinary:
types:
– image/jpeg
“`
[AWS SAM]VSCodeでLambda関数をローカルで開発する
# 目的
AWS Lambdaはコンソール画面からエディタを利用して編集ができます。ローカルファイルをアップロードするにはzip形式でファイルをアップロードする必要がある他、そもそもブラウザが使いづらいという問題点があります。今回は`AWS Toolkit for VSCode`を利用して`AWS SAM`によるLambda開発を行ってみることを目的とします。自らも初学者であり、他の記事で分からなかった点を補完しながら書いているため初学者向けだと思います。
# AWS SAM
`AWS(Serverless Application Model)`は`CloudFormation`をサーバーレスアプリケーション用に変形したものらしく、裏ではCloudFormationが動きます。
基本的には公式ドキュメントに従えばHello Worldまでは可能です。
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-sam-cli-install-mac.
【覚書】SQSイベント駆動でLambdaを動かす
## やりたいこと
* S3にデータを配置し、配置されたデータのイベントをSQSにpushする
* SQSにenqueueされたイベントから、Lambdaをinvokeする
* invokeされたLambdaで、S3に配置されたファイルを処理する## 仕様の再確認
### S3への権限付与
* S3バケットにSQSへのイベント発行権限を与える。SQSのアクセス許可にプリンシパルとして加える。“`json
{
“Version”: “2012-10-17”,
“Id”: “arn:aws:sqs:us-west-2:101619051410:PracticeQueue/SQSDefaultPolicy”,
“Statement”: [
{
“Sid”: “Sid1234567890”,
“Effect”: “Allow”,
“Principal”: “*”,
“Action”: “SQS:SendMessage”,
“Resource”: “arn:aws:sqs:us-west-2:1234567
fugaしか答えない残念なBotに8万語の辞書を持たせてインテリBotにした話
## 概要
自作した辞書APIとLINEBotを連携して、言葉の意味を教えてくれるBotを作ったので、その作り方を紹介します。スクリプトや中間生成物は[github:Intelli-fuga-bot](https://github.com/zgw426/Intelli-fuga-bot)に置きました。
## はじめに
涼しいから寒いに変わり、面倒で後回しにしてた布団の衣替えしました。秋ですね。
秋といえば、○○の秋といって何かを始める 季節でもあります。私の場合はリベンジの秋です。以前作成した、[fugaしか答えない残念Bot](https://qiita.com/zgw426/items/a5196ab7f26b785479ec)に。辞書を持たせてなんでも物知りインテリBotに改造します!
(Googleあれば物知りBotいらないとか、そーいうことは聞こえない)## できたもの
知りたい言葉をメッセージすると意味を教えてくれるLINE Botになりました。レスポンスも上々です。
aws-lambda-go/cmd/build-lambda-zipをgo get時のエラー
何をしていたか
————-* https://qiita.com/shunp/items/52ee20278e02e29ef3e8
此方の記事を参考に、sam cliにてgolang, API gateway を試用していたところ、エラーに遭遇しました。
環境
——* windows10 Pro
“`
>sam –version
SAM CLI, version 0.31.0
“`詳細
——-* https://qiita.com/shunp/items/52ee20278e02e29ef3e8#%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E5%AE%9F%E8%A1%8C
ローカル実行は問題無し。API gatewayからRequestしたところ、502エラーが出ました。
[もろもろの記事][1]を見ると、`build-lambda-zip` をbuild時に実行し、zipファイルをS3へuploadすればよさそうです
ぷらそにかの動画を毎日宣伝するbotを作った?
## 動機
1. Pythonを書いたことない
2. Pythonの勉強がしたい
3. Youtubeチャンネル「ぷらそにか」にハマっている
4. 友達にオススメしている
5. タイトルへ進む## AWS
毎朝動かしたかったので、LambdaのトリガーにCloudWatch Eventsを設定しました。
↑日本時間で朝9時## とりあえず全文
“`python:
#!/usr/bin/pythonimport os
import syssys.path.append(os.path.join(os.path.dirname(__file__), “packages”))
from oauth2client.tools im
AWS Lambda、FlaskとOpenCVの環境構築
# はじめに
– AWS LambdaでのOpenCVの環境構築は、大変です。具体的には、デプロイ環境の構築が大変です。
– デプロイ環境は、`AWSCLI`、`Serverless Framework`等色々な物が必要です。
– 今回も、以前作成した顔認識アプリをLambdaへ移植します。ソースコードは、同一です。上記のデプロイに関する設定ファイルが異なる程度です。
– ソース一式は [ここ](https://github.com/maedamikio/public/tree/master/flask_opencv_lambda) です。# 概要
– Mac
– 顔認識アプリ
– Flask
– OpenCV
– Python
– デプロイツール等
– AWSCLI
– Docker
– Homebrew
– Node.js
– Serverless Framework
– AWS
– API Gateway
– Clo
togglからslackにレポートを通知するwith Serverless Framework
## はじめに
こんにちは、早稲田大学創造理工学部総合機械工学化2年、現在休学中の渡辺です。
この度、インターン先でのタスクとして、
時間管理ツールTogglからレポートを取得してきてslackで共有する作業を自動化して欲しいと頼まれたので、
Serverless FrameworkとAWS Lambdaを使って作ったそんな感じのものをご紹介します。## 仕様
– python, AWS Lambda, Serverless Frameworkを使用する
– CloudWatch Eventsで定期的に発火(今回は毎週水曜日朝10時)させる
– togglから特定のプロジェクトの過去一週間の詳細(detail)レポートを取得する
– 取得したレポートをいい感じに整形してslackに投げる## 参考
1. [Toggl Reports API v2](https://github.com/toggl/toggl_api_docs/blob/master/reports.md) : toggl report apiの仕様書です。
2. [Serverless Framework