- 1. Cloud 9 + lambdaでbot作成 ーpart3
- 2. AWSで発生したイベントを AWS Chatbot + Lambda で Slack に通知する – ①概要と準備
- 3. 画像データのテキストを自動翻訳してみた
- 4. AWSのELBを死活監視し、アラームをslackに通知する
- 5. 高校生3人で作ったLINEBot「カップ麺タイマー」の技術的まとめと、開発の感想
- 6. APIGateway + AWS Lambda の構成でCloudWatch Logsに出力されるログ
- 7. バイナリファイルのアップロード・ダウンロードをする
- 8. EC2 SchedulerでEC2を平日だけ稼働させてコスト削減する
- 9. 【AWS】S3+CloudFrontで静的サイトをホスティング + LambdaでBASIC認証つける
- 10. AWS Lambda Layer(NodeJS)の作り方
- 11. LINEBotをみんなで作ろう〜コードを実装編〜【GWアドベントカレンダー最終日】
- 12. LINEBotをみんなで作ろう〜レイヤーとAPIgateway設定編〜【GWアドベントカレンダー7日目】
- 13. AWS CDKで既存リソースをLambdaへサブスクライブする(別リージョンSNS、CloudWatchLogs Subscription Filterのサンプル)
- 14. 人のTwitterアカウントを見つめるやつ
- 15. AWS Lambdaでネイティブライブラリを含む場合の環境
- 16. 【鉄則】サーバレスLINEbotの実運用法が確立した【論文調】
- 17. LambdaとAPI GatewayとAurora Servelessでwordpress動かしてみた
- 18. Cloud 9 + lambdaでbot作成 ーpart2
- 19. AWSのEC2サーバーをLambdaを使って自動起動
- 20. AWS-Lambda + PythonでCSVデータをAWS-S3に書き込む
Cloud 9 + lambdaでbot作成 ーpart3
#はじめに
本投稿は下記のパート3として、Lambda Functionから
S3オブジェクトへの読み書きを扱います。
・part1 : https://qiita.com/htanaka/items/a13fe6da23c3fcdc172a
・part2 : https://qiita.com/htanaka/items/2e6bdc3f54bdfdf542a9前提
・Cloud9環境は用意済み(part2)
・Cloud9からLambda Functionを実行する(part2)#boto3のインストール
LambdaではPython3を使用してコードを書いているため、
S3オブジェクトへの読み書きはAWS SDK(boto3)をして行う。・boto3のインストール
“`
cd bottest
python -m pip install –target=./ boto3
“`#S3の準備
今回はS3に置いたファイル(CSV)への書き込みを想定している。
そこで、S3作成のほか下記を用意する。“`
bucket_name = ‘bottest-20042
AWSで発生したイベントを AWS Chatbot + Lambda で Slack に通知する – ①概要と準備
# はじめに
AWSアカウントを作成したその日から、 **AWSアカウント上では様々なイベントが絶え間なく発生** します。これらのイベントを **適切にモニタリング** することで、AWS上の **システムやアプリケーションの健全性** や **可用性** を **追求することが可能**となります。
そこで、2020年4月22日に晴れてGAとなった “AWS Chatbot“ と、**AWS Chatbot** 登場までは主流な実装方法であった“AWS Lambda“ とを組み合わせて、**AWSで発生したイベントをSlackに通知** してみたいと思います。
もちろん、チャットサービスを介して、**AWSで発生したイベントをリアルタイムにモニタリングすることが、全てのケースで正しいとは限りません**。また、そもそも下記でご紹介するイベントが、イベントの特性上、リアルタイムに通知されるべきではない可能性や、ケースによってはSlackというサービス自体が不適な場合もあるかもしれません。あくまで、AWSをモニタリングするための手法の1つとご理解ください。
# アーキテクチ
画像データのテキストを自動翻訳してみた
最近、仕事に忙殺され、趣味コーディングができていなかったので、手前味噌がてら久しぶりに投稿。
画像データに含まれるテキストデータを検出し、好きな言語に自動翻訳できるアプリを実装してみた。
外国人旅行者が増える中、分らない言語の看板や商品説明ページ、食品の成分表…などなど、写真で取れば後は自動で好きな言語に翻訳してくれれば少し幸せなことだと思う。今回は、AWSの画像認識API(Amazon Rekognition)/翻訳サービス(Amazon Translate)を使用し、以下のような構成で実装してみた。
####1. Lambda側実装
① Lambdaハンドラー実装“`java:LambdaFunctionHandler.java
package com.amazonaw
AWSのELBを死活監視し、アラームをslackに通知する
# 目的
EC2へのパケット転送を行うELBの死活監視を行い、SNS(slack)に通知させて障害対応を早めるため、AWSのサービスで実装しました。# 概要
全体の構成は以下の通りです。ターゲットグループとしてEC2を1台指定したELB(アプリケーションELB)に対して、CloudWatchで死活監視を行い、ダウンを検知したらlambdaを起動させ、SNS経由でslackに通知させるという内容です。lambdaで指定するslackのURLをKMSで暗号/復号化しています。
![fess2_qiita (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252317/73a5ea11-011f-1420-f5c5-e9f34d225d13.png)# 手順
概要図のサービスの矢印の順に作成していくイメージです。
1. CloudWatchでの死活監視の実装
2. slackの設定
3. lambda用のKMS作成
4. KMS用のIAMポリシーを作成
5. lambdaからSNSへの通知設定の
高校生3人で作ったLINEBot「カップ麺タイマー」の技術的まとめと、開発の感想
こんにちは。最近高校生のDeveloper友達が増えてきて楽しくなってきているようかんです。
機能リリースした「[カップ麺タイマー](https://cupmenbot.nztm.io/)」を開発するに当たって、LINEBotのバックエンドを担当させてもらったので、開発の中で使った技術・検討したサービスなどなど、裏側を全部公開します!
プロダクトが始まった頃は**GitHubを使ったことが無い**、**非同期同期処理を知らない**、**自分で1からコードを書いたことが無い**という超絶初心者でした。ですが、[SGG](https://qiita.com/organizations/sgg?page=1)のみんなに質問しまくり、いっぱい学び、
APIGateway + AWS Lambda の構成でCloudWatch Logsに出力されるログ
## 知りたかったこと
Amazon API GatewayとAWS Lambda とでサーバレスなAPIを構築し、デバッグに有用なログを得られるのかを知りたいんです。Lambda関数は変更せずに、マネージメントコンソールの設定変更で出力されるログは何ですか。
## 3行で
1. AIMポリシー `AmazonAPIGatewayPushToCloudWatchLogs` を付与したIAMロールをAPIGatewayに設定
2. APIGatewayのステージエディタの「ログ/トレース」タブで 「CloudWatch ログを有効化」にチェックをつけて、追加表示される「リクエスト/レスポンスをすべてログ」にもチェックをつける
3. CloudWatch Logsロググループ「API-Gateway-Execution-Logs_{rest-api-id}/{stage-name}」を見る## 構成
シンプルに API Gateway の Lambda プロキシ統合 を使って Lambda関数を呼び出します。
![構成図.png](https://qiita-image-st
バイナリファイルのアップロード・ダウンロードをする
HTMLからバイナリファイルをアップロードしたり、サーバからバイナリデータをダウンロードしてみます。
クライアント側として、HTMLのSubmitボタンを利用する方法と、Javascriptから送信する方法でやってみます。
サーバ側としては、Node.jsのSwagger-node(中身はExpress)のサーバの場合と、AWSのAPI Gateway+Lambdaの場合を取り上げます。毎度の通り、ソースコードは以下に上げておきました。
poruruba/fetch_laboratory
https://github.com/poruruba/fetch_laboratory#バイナリファイルの送信
それでは、送信するクライアント側のWebページから見ていきます。
まずは従来からの、HTMLのSubmitボタンで送信する場合です。
HTMLは以下のような感じになります。“`html:index.html
【AWS】S3+CloudFrontで静的サイトをホスティング + LambdaでBASIC認証つける
何番煎じかわかりませんが備忘録兼ねて…
[前回の記事](https://qiita.com/duplicate1984/items/3a4d93a2e9bb5fcf54d1)でAmazon ConnectのCCPをカスタマイズしてWebページを作成しました。
Amazon Connect Streamsの仕様により、httpsでホスティングしなければいけないので、
パブリックアクセスを制限したS3にWebページを配置、CloudFrontを経由することでHTTPSによるアクセスを必須とします。
また、ついでにLambdaでBASIC認証を設定します。#まずS3とかCloudFrontってなに?
AWS初心者なのでまずここからでした。###S3
Amazon Simple Storage Service
一言でいうとクラウドストレージサービス。安価で容量無制限、高い堅牢性を謳う。
静的Webサイトを配置して公開したり、ログファイルや諸々のデータをバックアップするなどユースケースは幅広い。
Webサイトを配信する際はCloudFrontを経由することが推奨されており、
クラウド
AWS Lambda Layer(NodeJS)の作り方
# NodeJSを動かすのにライブラリが不足する事態発生
– 説明端折りますが、どうやらLayerというものを入れれば良いと検索して分かる。
– 作り方が色々書いてあって、最初間違っているサイト(バージョンが古い?)を閲覧してしまったハマったので自分の方法を記載します。# バージョン
– Node 12.16.03 ※13を使っていたのですが、Lambdaが執筆時は13をサポートしていなかったので、12にダウングレードしました。
– ダウングレード方法は、ここを見て下さい。
https://qiita.com/realtakahashi/items/a398e83a961c8dcfa109# 闇雲に作ってはいけない。決まりがあった
– 決まった方法やディレクトリ名で作る
– ディレクトリ名は「nodejs」※それ以外は多分NG“`
mkdir nodejs
cd nodejs
“`
– ディレクトリ内でnpm initをします。 ※全てデフォルト、エンターでOKです。
– そして、必要なライブラリをインストールします。※例では3つ(require、puppeteer-c
LINEBotをみんなで作ろう〜コードを実装編〜【GWアドベントカレンダー最終日】
この記事は下記の [#GWアドベントカレンダー](https://gw-advent.9wick.com/calendars/2020/72) の 8日目の記事になります。
1週間でサーバレスLINEBotを生み出す( @inoue2002 ) | GWアドベントカレンダー
# はじめに
こちらの内容は超初心者向けです。
[公式ドキュメント](https://developers.line.biz/ja/docs/messaging-api/overview/#messaging-api%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF)を読める方はこちらをお読みいただく方が正確です。[昨日の記事](https://qiita.com/inoue2002/items/ab226d9836a891b01bc9)をご覧になってない方はぜひ。
こちらの記事はGWアドベントカレンダーを通してLINEBotをサーバレスで作れるようになろう!ということを目標に書いている記事です。LINEBotは作れるけどAWSでサーバーレスを作ってみたい!方向けの記事です
昨
LINEBotをみんなで作ろう〜レイヤーとAPIgateway設定編〜【GWアドベントカレンダー7日目】
この記事は下記の [#GWアドベントカレンダー](https://gw-advent.9wick.com/calendars/2020/72) の 7日目の記事になります。
1週間でサーバレスLINEBotを生み出す( @inoue2002 ) | GWアドベントカレンダー
# はじめに
こちらの内容は超初心者向けです。
[公式ドキュメント](https://developers.line.biz/ja/docs/messaging-api/overview/#messaging-api%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF)を読める方はこちらをお読みいただく方が正確です。[昨日の記事](https://qiita.com/drafts/ad945981150c859911fc)をご覧になってない方はぜひ。
こちらの記事はGWアドベントカレンダーを通してLINEBotをサーバレスで作れるようになろう!ということを目標に書いている記事です。LINEBotは作れるけどAWSでサーバーレスを作ってみたい!方向けの記事です
昨日の記事でAWSア
AWS CDKで既存リソースをLambdaへサブスクライブする(別リージョンSNS、CloudWatchLogs Subscription Filterのサンプル)
仕事でaws-cdkを使ってLambdaのデプロイを自動化する対応をおこないました。
主に既存リソースの別リージョンSNSをサブスクライブさせたり、CloudWatchLogsのSubscription FilterをLambdaのトリガーに設定したりなどの対応をしたのでニッチな記事だと思うけど書き残しておきます。サンプルコードは
cdk version 1.36.1
TypeScript
で記述しています。## 利用した事はないけど存在は知っていた
はい、IaC初心者の私はキャッチアップから始めました
[aws-cdk workshop](https://cdkworkshop.com/)
[AWS CDK Reference Documentation](https://docs.aws.amazon.com/cdk/api/latest/)workshopのスライドを見て大まかな操作は理解できたので、細かい仕様を確認しようとCDKのドキュメントへアクセスしましたが、情報量が膨大過ぎて初見は直ぐに閉じました。(色々調べ始めると結局見なければならないので最終的には見れるよ
人のTwitterアカウントを見つめるやつ
# 経緯
昔の知人X氏が何かの弾みで道を踏み外し、別の知人A氏やB氏に対して脅迫行為(結局本物の警察沙汰になりました)を始めたので、特定のTwitterアカウントの言動を監視するBOTを作りました。
技術的に特に難しいものではないのですが、せっかくなので公開します。https://github.com/netebakari/twitter-serverless-watchdog
# やること
監視BOTのようなものは動かしていることを忘れてしまうぐらいがちょうどいいのでサーバーレスで実装します。設定はDynamoDBに登録しておきます。
AWS Lambdaが定期的に対象アカウントのツイートを取得して、指定されたキーワードを検知したら次のようなツイートでお知らせします。> 1000000000000000000以降のチェックを行い、N件の監視対象ツイートが見つかりました。 @null宛で引用RTします。
> 現在の監視アカウント: @kiken_na_hito, @abunai_hito, @kowai_hito
> 現在の監視キーワード: https://YOUR-BU
AWS Lambdaでネイティブライブラリを含む場合の環境
## はじめに
Pythonの依存ライブラリにおいてネイティブライブラリを使う場合は、
ビルド(pipする)する環境と、AWS Lambda側の環境を揃えておくという話は昔から聞いていました。ただ、実際に何がどう影響してダメなのか?全然調べたこともなかったので、
ハマったついでに`pip install`で取得したライブラリを確認してみたメモです。## Lambda実行時に発生したエラー
### エラー内容
`pyproj`という距離計算を行うモジュールを使用した場合に発生しました。
(このエラーだけ見ても、最初は何が悪いか全然分かりませんでしたが。。。)“`python
[ERROR] Runtime.ImportModuleError: Unable to import module ‘lambda_handler’: cannot import name ‘_datadir’ from partially initialized module ‘pyproj’ (most likely due to a circular import) (/var/task/
【鉄則】サーバレスLINEbotの実運用法が確立した【論文調】
# 背景
LINE bot を周知戦略としてビジネスに使うことが増えている.しかし,チーム開発でどうLINE botを開発し運用すべきかという議論はあまり行われていない.ここでは,LINE botのバックエンドにHTTP APIをトリガーとしたLambdaを用いたモダン開発運用のエコシステムを提言する.# 概要
![linebotoverview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234751/3527aff4-a365-7d30-abd7-6f2afe7d36f5.png)LINEbotのチーム開発運用の鉄則としてこれらを提言し,具体的な手法について詳細に説明する.
1. 開発botと本番botに分ける
2. APIとLambdaでステージ管理を行い,それぞれのbotに紐付ける
3. Lambdaのコードはdocker環境にてローカルで開発する(以下のメリットがある)
– gitHub管理下に置け,チーム開発に適する
– Lambdaのコードをいつでもローカル環境
LambdaとAPI GatewayとAurora Servelessでwordpress動かしてみた
# そもそもLambdaとAPI GatewayとAurora Servelessでwordpressは動くのか
社長 「wordpressを全面に出すのはあれやから、staticファイルで吐くやつほしいなあ」
社長 「コストを限りなく下げて」
社長 「でもwordpressのインターフェイスは捨てがたいよねえ」
社長 「( ゚д゚)ノ ヨロ」ということで、始まった低コストで作るwordpress環境構築ですが
結論から言うと
“`
LambdaとAPI GatewayとAurora Servelessでwordpressは動きます。
yes, you can…
(実運用できるとは言っていない)
“`# Lambdaはサーバではないので、ファイルが置けない
wordpressってファイルを置くことが求められるので、アップロードされたときにどうするか・・・。“`
そうだ、俺達にはS3というサービスがあるじゃないか!!
“`ということで、S3にアップロードするプラグインを使えばこの問題は解決します。
# Lambdaはインターネットに口を開けてないよね?
Cloud 9 + lambdaでbot作成 ーpart2
# はじめに
本投稿ではpart1から引き続きlambdaを定期実行してTwitter APIを叩き、
AM10時(JST)につぶやくbotを作成します。
ここでは下記を実施します。
・Cloud9の環境構築
・bitflyer APIをAWS Lambdaで叩いてみる
・Cloud9からAWS Lambdaをデプロイする# Cloud9環境構築
Cloud9はGUIでファイル編集ができるうえ、
Linuxコマンドラインを実行できる。AWSコンソール > Cloud9
から新規インスタンスを構築cloud9にはもともとpython3.6がインストール済み。
下記から確認“`
python –version
“`# Lambda ファンクション作成
右ペインのAWS Resourcesからlocalにlambda functionを作成
(name bottest)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/627775/8fa83b8a-b803-2914-
AWSのEC2サーバーをLambdaを使って自動起動
#目的:EC2サーバーの自動起動&停止でコストダウン
AWSを使用することが多くなってくると、運用コストが気になってきます。他(社)のクラウドサービスと異なり、AWSは基本的には従量制です。インスタンス(CPU)やストレージ(ディスク)、トラフィックのデータまでほとんどのサービスが使った量・時間に対して課金されます。
EC2インスタンスは停止すれば課金されない(正確にはストレージや固定IPアドレス等は停止中も課金される)ので、使わないときはEC2インスタンスを停止しておき、使用時のみ起動して立ち上げる仕組みを、AWS Lambdaを使って構築します。弊社ではソーシャルゲームを開発・運用していますが、イベント実行時には普段の十数倍のアクセス集中や負荷があります。AWSではオートスケール機能もありますが、あらかじめ予定されているのであれば時間前にサーバーを追加しておくのが安全です。
また、 バッチファイル実行やログ収集を夜中や早朝に行う場合などにも、必要時のみ起動できればコスト削減に役立つでしょう。#AWSドキュメントの参照
AWSを解説したサイトは多いですが、Lambd
AWS-Lambda + PythonでCSVデータをAWS-S3に書き込む
# AWS-Lambda + PythonでCSVデータをAWS-S3に書き込む
## はじめに
`Mac環境の記事ですが、Windows環境も同じ手順になります。環境依存の部分は読み替えてお試しください。`
### 目的
この記事を最後まで読むと、次のことができるようになります。
| No. | 概要 | キーワード |
| :— | :———– | :———— |
| 1 | コーディング | Python, boto3 |
| 2 | Lambda設定 | Lambda |### 実行環境
| 環境 | Ver. |
| :————- | :—— |
| macOS Catalina | 10.15.3 |
| Python | 3.7.3 |
| boto3 | 1.11.17 |### ソースコード
実際に実装内容やソースコードを追いながら読むとより理解が深まるかと思います。是非ご