- 1. 【SAM】Lambda(Python)でRDS Proxyを使ってみる【user/pass, IAM認証】
- 2. Lambda layer(python)で5分くらい遊ぶ
- 3. Wikipediaの記事をランダムに取得して1日1回ツイートするbotを作ってみた
- 4. 【個人制作】ヘッドレスCMSでサーバーレスなメディアを作った話
- 5. Jリーグの勝ち点推移がグラフで見れるよ!
- 6. LambdaでDetectron2(物体検出)して、実行速度はかってみた。
- 7. 【AWS Lambda】Pythonで超シンプルに任意のコンテナ Imageを使用する
- 8. API GatewayからLambdaを呼び出すときにevent.bodyをオブジェクトで受け取る
- 9. python3.8でlambda-uploader使用した時にpython3.8が見つからないとエラーを吐かれた時の原因調査
- 10. AWSのSGフルオープンルールを自動削除する【EventBridge, Lambda】
- 11. docker-compose環境でRuby on Jetsの構築からデプロイまで
- 12. Slack – APIGateway – Lambda(Python) – RedShift インタラクティブアプリの作り方
- 13. Serverless FrameworkとAWS Lambda with Pythonの環境にpipインストール
- 14. UIFlowでM5Stackはじめーる
- 15. Kinesis Data StreamsをLambda関数で処理する場合のCloudWatchメトリクスの読み方[Lambda編]
- 16. 【無料で】クラロワAPIをlambdaから叩いてLINEに送る
- 17. AWS Lambda(python)で Selenium を動かしてハマった点まとめ
- 18. API GatewayとLambda(Python)でLINE BOT(Messaging API)開発 [後編]
- 19. API GatewayとLambda(Python)でLINE BOT(Messaging API)開発 [前編]
- 20. AWS AmplifyでLambdaを使うwith Go
【SAM】Lambda(Python)でRDS Proxyを使ってみる【user/pass, IAM認証】
[2020年の7月に発表され大きな話題を読んだRDS Proxy](https://aws.amazon.com/jp/blogs/aws/amazon-rds-proxy-now-generally-available/)ですが、意外とIAM認証やCloudFormationを使った設定方法などの情報が多くなかったので記事にしました。
今回はPython(pymysql)を使用してuser/passでの認証とIAM認証の両方をAWS SAMを用いたCloudFormationで構築しました。
全てを説明すると長くなってしまうので、記事内で省略している部分は以下のリポジトリを参照してください。
https://github.com/yumemi-dendo/sample-aws-rds-proxy# 環境
SAM CLI:1.15.0
Python:3.8# user/passでの認証
user/passでの認証は主にIAM認証での要件に合わない場合に使用される接続方法です。
秒間20~200以上の新規コネクション生成が想定される場合はこちらにするべきでしょう。また通
Lambda layer(python)で5分くらい遊ぶ
## まとめ
– ディレクトリ構成: `python/layer/function.py`
– インポート: `from layer import layer1`## Layer化したいファイルの用意
“`function.py
def sum(x:int, y:int) -> int:
return x + y
“`## Layerを利用する関数の用意
“`python:lambda_function.py
import json
from layer import functiondef lambda_handler(event, context):
# TODO implement
return {
‘statusCode’: 200,
‘body’: function.sum(1,2)
}
“`## さいごに
– `python/` ディレクトリ以下に配置して、その先をimportする
– Zip化する際に共通系がそこに入るようにコーディネートしなければならないのめんどくさい
Wikipediaの記事をランダムに取得して1日1回ツイートするbotを作ってみた
ネット中心で生活していると、どうしても自分の興味があることに情報閲覧が偏ってしまって、興味のない事柄に触れる機会が減ってしまいます。なので、1日1回、強制的に知らない言葉を自分にインプットするためにWikipediaの記事をランダムに1件取得してツイートするTwitterのbotを作りました。
#開発したTwitter bot
個人的には、朝一で脳みそのちょっとした刺激になることがあります。[うぃきのひとひら](https://twitter.com/Wiki_Hitohira)
#環境
– AWS Lambda
– python3.7#ポイント
– Wikipediaの記事をランダムに1件取得するのに、MediaWiki APIを利用しました。
– 1日1回の起動は、AWS Lambdaの関数をAmazon CloudWatch Eventsのcron式で定期的に実行することで実現しました。(AWS Lambdaでの関数の作り方はたくさんの解説があるのでここでの説明は割愛します。)
– Twitterのbotを開発するためには、アカウント取得に加えて[Twitter A
【個人制作】ヘッドレスCMSでサーバーレスなメディアを作った話
ヘッドレスCMSであるContentfulとServerless Frameworkを使ってサーバレスアーキテクチャなメディアを作成しました。
本記事では、その中で使用した技術やパフォーマンス改善方法、SEOなどを振り返りつつ紹介していきたいと思います。
作成したサイトは以下になります。アニメやゲームの有名なセリフをまとめたメディアです。
https://serif-db.com/大まかな機能としては以下の4つ程度のシンプルなメディアとなっています。
* コンテンツの一覧表示&絞り込み
* コンテンツの詳細表示
* いいね機能
* コメント機能現状のサイトそのものは大した事ないのですが、裏側は面白い部分もあると思うので読んで頂けると幸いです
## 制作経緯とテーマ
制作理由としては、Nuxtやサーバーレスアーキテクチャ、ヘッドレスCMSあたりを触っておきたかったというのが大きいです。
また、過去にSNSの様なWebサービスを作った際に、集客が難しく、検索流入を促すためにメディアがあった方がいいなと思っていた事なども理由の1つです。
「セリフを
Jリーグの勝ち点推移がグラフで見れるよ!
# 概要
## 記事概要
今回作ったサービスの紹介をしつつ開発の流れやつまずきポイントを紹介します。## アプリ概要
– Jリーグのチームの勝ち点推移がグラフで見れる
– [こちら](https://yuta97.github.io/j-result-front-nuxt/)からサービスに飛べます。
– Jリーグのデータサイトからスクレイピングしてデータをためて、APIとして配信してフロントから表示させています。
![スクリーンショット 2021-01-08 19.01.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432257/988e1750-77c3-6847-493a-762da7963115.png)# アプリ作成理由
– 川崎フロンターレの圧倒的な結果を視覚的にみたくなったから。# 全体の構成
[フロント](https://github.com/yuta97/j-result-front-nuxt)のソースコードはGitHubにあげています。
## 構成図
![J勝ち点推
LambdaでDetectron2(物体検出)して、実行速度はかってみた。
## 概要
– モデル:resnet50 + frcnn
– lambdaのメモリサイズ:8192MB結論先に書くと、
コールドスタートありで9秒ほど。
コールドスタートなしでなんと3秒!簡単にapi作るにはいいかもですね。
(メモ書きです。)
## ファイル郡
“`Dockerfile
FROM nvidia/cuda:10.1-cudnn7-develENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
python3-opencv ca-certificates python3-dev git wget sudo \
cmake ninja-build && \
rm -rf /var/lib/apt/lists/*
RUN ln -sv /usr/bin/python3 /usr/bin/pythonWORKDIR /home
ENV PATH=”/home/.local/bin:${PATH}”
RUN wget https://boot
【AWS Lambda】Pythonで超シンプルに任意のコンテナ Imageを使用する
## 概要
AWS LambdaでContainer Image Supportが発表されました。
[AWS Lambda の新機能 – コンテナイメージのサポート](https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-container-image-support/)しかし、AWS公式ドキュメントに書かれているサンプルコードは、
癖があって少しわかりづらい内容です。本記事では、出来るだけシンプルなデプロイ・実行方法について書いていきます。
## 対象読者
– Dockerやコンテナの知識がある。
– AWSのLambdaのざっくりとした知識がある。
– aws-cliをインストール・セットアップしている。## ハンズオン
以下の流れで行います。
1. ファイルの準備
2. Image作成・ローカルでの実行
3. Imageのデプロイ
4. Lambdaの設定・実行今回のディレクトリ構成です。
応用が効きやすいよう、できるだけシンプルにしました。“`sh
# ディレクトリ構成
├── Dockerfi
API GatewayからLambdaを呼び出すときにevent.bodyをオブジェクトで受け取る
# はじめに
AWS API GatewayからLambdaを呼び出すこと、よくあると思います。
Lambdaでは`event.body`でリクエストボディを取得できますが、
デフォルトではこの`body`は文字列なので、
`Content-Type:application/json`の場合も「JSON文字列」になります。
そのため、一度JSONをパースしてあげないといけません。たとえばNode.jsの場合はこんな感じ。
“`js:index.js
exports.handler = async (event) => {
const body = JSON.parse(event.body);
console.log(‘api received!’, body);const response = {
statusCode: 200,
body: JSON.stringify([body.hoge, body.fuga, body.piyo]),
};
return response;
};
“`
python3.8でlambda-uploader使用した時にpython3.8が見つからないとエラーを吐かれた時の原因調査
##事の発端
AWSのLambda上にそれなりに複雑になる予定のpythonの関数を追加する事になったが、lambda上ではpipが使用できないため、外部モジュールを使用する関数を使用する場合、
**[一つ一つ使用している外部モジュールを\Python〇〇\Lib\site-packages\] から探し出し纏めてzip化するという賽の河原のようなおちねり作業が発生する。**
当然ながら人間は信用ならない生物のため、こんな作業を毎回手作業でやろうものなら**パンジャンドラムとマーマイトをガンギメした某ブリテンの暴走青列車(ブルートレイン)の如く事故が発生する****事故は起こるさ? 事故は人間が起こすものなんだよ!**
(※加えてこの作業にとても時間が取られる)そこでlambda-uploaderを使用し、外部モジュールの抽出作業を任せてしまうことで効率化と事故発生率を少しでも下げようと画策した。
##作業環境
– Windows10(64bit)
– python3.8(64bitインストーラ使用)3.8なのは2020/12月末時点でlambdaがpython3.8以降
AWSのSGフルオープンルールを自動削除する【EventBridge, Lambda】
# はじめに
AWSのSGルール自動削除は、AWSマネージドだとsshやRDPのフルオープン以外はないと思います。
ちょうどEventBridgeやLambdaを触ってみたかったので、いろいろ調べつつ実装してみました。# 構成
SG作成 → EventBridgeで検出 → Lambdaで自動削除
# 要件定義
1. 削除対象はSGのインバウンドルールで、許可されている送信元IPアドレスが`0.0.0.0/0`,`::/0`となっているもの
2. 新規作成されたルールが対象
3. 送信元IPアドレスがフルオープンになっているルールと、そうでないルールが一緒に作成された場合、フルオープンのルールのみを削除する# EventBridgeルールの作成
EventBridgeは、ルールにより一致した受信イベントを検出し、ターゲットとして登録したAWSリソースを呼び出してイベントを渡します。
呼び出されたAWSリソースは渡されたイベントを使用したりして、決められた処理を実行します。
今回、EventBridgeルールは二つ作成します。
どうにかして一つのルールで実装
docker-compose環境でRuby on Jetsの構築からデプロイまで<後編>
## 概要
以前の記事でRuby on Jetsのローカル環境を作成するところまで書きました。
[docker-compose環境でRuby on Jetsの構築からデプロイまで<前編>](https://qiita.com/takashi-5/items/74b8ac4a342ae7372205)
今回は実際にデプロイするところまでまとめてみたいと思います。
## ユーザを準備
コンソールからIAMユーザを作成し、credentialを取得してください。
[https://console.aws.amazon.com/iam/home#/users](https://console.aws.amazon.com/iam/home#/users)
今回デプロイするためだけのユーザということで「プログラムによるアクセス」にチェックを入れます。
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923148/7649b37b-4e94-b873-4b58-657238748
Slack – APIGateway – Lambda(Python) – RedShift インタラクティブアプリの作り方
## 概要
表題のとおりのSlackアプリケーションを作成する。
まともに書くと長文になるので、以下の要点ポイントのみを重点的に記載する。– Slackアプリケーションの留意点
– Slack側のアプリケーション設定(権限周り)
– SlackのHomeView(Homeタブ)やattachmentに関して
– Lambda(python)周りの実装とライブラリ利用
– APIGateWay設定なお、シンプルに試すだけならWebHookURLを設定してLambdaとかをスケジュール実行してPOSTすれば終わるが、SlackClientライブラリを利用したインタラクティブなリクエストに対するメッセージ通知ができるようなシーンを想定している。
手順通りにやれば動くものが作れるというよりは、
調べるのが面倒だったり、案外ハマったポイントを断片的に紹介する点はご承知おきください。## Slackアプリケーションを作成するにあたっての留意点
#### レスポンスは3秒以内に一旦返す
ボタンをクリックし、レスポンスを返す場合などは3秒を超えるとエラーになる。これは、処理でひと
Serverless FrameworkとAWS Lambda with Pythonの環境にpipインストール
pipインストールが必要なAWS LambdaのPythonスクリプトをServerless Frameworkでデプロイする方法です。
gemインストールが必要なAWS LambdaのRubyスクリプトについては[前回](https://qiita.com/suzuki-navi/items/1369b11a8f5d7f467645)の記事で書きました。
# 手順概要
プラグインを入れれば簡単にできます。
1. `serverless plugin install -n serverless-python-requirements`
2. `requirements.txt` 作成
3. あとは普通にデプロイすると勝手にいろいろやってくれる# 手順詳細
## Serverless Frameworkのサービス作成
“`console
$ serverless create –template aws-python3
Serverless: Generating boilerplate…
_______
UIFlowでM5Stackはじめーる
# はじめに
積まれていたM5Stackをすぐに始めるための備忘録です。# 開発環境
– M5Stack
– Windows 10 PC# 導入
1.[UIFlow Quick Start](https://docs.m5stack.com/#/en/quick_start/m5core/m5stack_core_get_started_MicroPython)を参考にします2.ドライバーをインストールします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/620173ce-bef9-c2d1-a971-ce5874fc5494.png)3.M5Burnerを起動します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/2ec80c98-8223-e011-b892-e8a714e5ad71.png)4.UIFLOW(CORE)のファームウェアをBur
Kinesis Data StreamsをLambda関数で処理する場合のCloudWatchメトリクスの読み方[Lambda編]
Kinesis Data StreamsのレコードをLambda関数で処理するアプリケーションについて、CloudWatchメトリクスを分析することで以下の様な用途に役立てることができます。
* アプリケーションの動作におけるエラーの兆候を見つける
* 入力されるデータ量が増えるに従ってKinesis Data Streamのシャードを拡張するといった例にみられるように、リソースの拡張が必要な兆候を見つける
* AWSサービス利用料が適正であるかを分析し、コスト削減につなげる上記の様な目的でCloudWatchメトリクスを分析した経験から、Kinesis Data StreamsとLambda関数のCloudWatchメトリクスをどのように分析するのかをまとめてみたいと思います。
# Lambda関数のCloudWatchメトリクス
ここでは、Kinesis Data Streamsのレコードを処理するLambda関数に関連するCloudWatchメトリクスの中でコスト、エラー検知、拡張性の観点で注目すべきメトリクスを取り上げたいと思います。### Invocations
【無料で】クラロワAPIをlambdaから叩いてLINEに送る
以前、[クラロワAPIをlambdaから叩いてLINEに送る](https://qiita.com/meihei/items/98a21ac0b41fe7193e40) という記事を書きました
システム自体はこちらで完成なのですが、結構お金がかかるという問題がありました
この問題の原因はクラロワAPI([Clash Royale API](https://developer.clashroyale.com/#))がアクセス可能なIPを制限しているため生じていました
今回、RoyaleAPIが提供している公開Proxyを使うことで、**無料でクラロワAPIをlambdaから叩いてLINEに送る**ことが出来たので記事にしていきます## 概要
### 完成したもの以前の記事と全く同じで、`プレイヤー名`と`放置している期間`がLINEに届きます
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280373/4b15322a-6fb8-75ae-bced-bf6e5a91c59c.png)
###
AWS Lambda(python)で Selenium を動かしてハマった点まとめ
# はじめに
Python を用いてスクレイピングをするにあたり、認証周りで躓き手っ取り早く解決するために Selenium を用いて実装したものの、Lambda で実行しようとしたときに躓いたので、メモとして残します(書きっぷりが雑になっているかもしれません…)
※ この記事は SAM を使わずに実装してます:bow:# 作業環境
* Windows 10
* python 3.7 が望ましいけど、3.8 でも大抵はどうにでもなった
* (使い方にもよるので、バージョン管理で切り替えられるようになっているとよい)# ハマりポイントその1
Q. Selenium を使うにあたって、headless-chromium と chromedriver を使えばいいの?
A. この2つを圧縮して、レイヤーに登録する## 詳細
AWS Lambda で使用できるヘッドレスブラウザとして以下が提供されています
この、chrome と chromedriver のバージョンを合わせて1つのファイルとして圧縮します
https://github.com/adieuadie
API GatewayとLambda(Python)でLINE BOT(Messaging API)開発 [後編]
# API GatewayとLambda(Python)でLINE BOT(Messaging API)開発 [後編]
## はじめに
[前編](https://qiita.com/w2or3w/items/1b80bfbae59fe19e2015)では主に環境構築と、「こんにちは!」と返すだけの簡単なサンプルを載せました。
後編となる本記事では、line-bot-sdkを利用して以下のことを実装してみたいと思います。
・文字列の応答
・ユーザー情報の取得
・選択肢の提示、選ばれたものの取得
・位置情報の受信、位置情報の送信## line-bot-sdkのインストール
Lambdaでデプロイする前提ですので、lambda_function.pyと同じ場所にインストールする必要があります。
インストールしたライブラリ類をまとめてzip圧縮できるよう、適当なフォルダ(ここではsource)の中で行いましょう。“`
|- source
|- lambda_function.py
“`ライブラリはpipでインストールします。
“`bash
$ cd source
$
API GatewayとLambda(Python)でLINE BOT(Messaging API)開発 [前編]
# API GatewayとLambda(Python)でLINE BOT(Messaging API)開発 [前編]
## はじめに
先日、以前より興味のあったLINE BOT(Messaging API)を初めて作ってみました。
思っていたより簡単だったので、今後も気軽に作ってけたらなと思ってます。
せっかく作れるようになったので、このフレッシュな気持ちがなくなる前に記事を書いておきます。前編と後編と、2つに分けて書こうと思います。
前編では主に環境構築。何か話しかけると「こんにちは!」とだけ返すBOTを作成します。
[後編](https://qiita.com/w2or3w/items/fbe588d7147bb8e65628)ではline-bot-sdkというライブラリを利用して、メッセージ以外のやり取りをする実装についても書こうと思ってます。## LINE Developpersでプロバイダーとチャンネルの作成
まずはLINE Developpersで作業します。
[LINE Developpers](https://developers.line.biz/ja/)
AWS AmplifyでLambdaを使うwith Go
Amplifyはちょくちょく使う機会があるのですが、Amplifyを介したLambdaってほぼ使った事ないぞ、と思ったので使ってみようと思い立ちました。
そしてLambdaでGoが使えるけど、ちゃんと使った事なかった気がするので使ってみたいなとついでに。# Functionが使えるらしい
FUNCTIONS – Overview
https://docs.amplify.aws/cli/function## 環境
– win10 Home(surface go) + WSL2 + ubuntu18.04
– node v14.1.0
– npm 6.14.5
– go version go1.10.4 linux/amd64# 使ってみる
## 前置き
vueを使う設定にてamplifyをsetupしておきます。
詳しくはこのあたりから。
https://docs.amplify.aws/start/getting-started/installation/q/integration/vue“` bash
$ vue create myamplifyprojec