AWS Lambda (Python 3.8)から Amazon Elasticsearchを使う(LambdaはSAMで)

LambdaからAmazon Elasticsearchにクエリを投げるためのテンプレメモ。LambdaはSAMで用意するが、Amazon Elasticsearchのドメインは事前に準備しておく。RuntimeはPython 3.8。Elasticsearchの接続にはelasticsearchのモジュールを利用する。

権限周りとかけっこうたいへん。

“AWS Lambda (Python 3.8)から Amazon Elasticsearchを使う(LambdaはSAMで)” の続きを読む

Grafana on EC2 で Let’s Encrypt 使ってSSL

AWSでGrafana用のEC2インスタンスをたてている。AWSならば、ELB経由にすると、ELBにACMで発行した証明書を割り当てられて楽なのだが、今回は漢のEC21本立ちなので、Let’s Encrypt を使って発行することにした。

grafana-serverでcertbotコマンドがうまくいかなかったので、nginxのリバースプロキシ機能を使い、nginx経由にしている。

“Grafana on EC2 で Let’s Encrypt 使ってSSL” の続きを読む

httpでPOSTする受け口をSAM CLI + API Gateway + Lambdaで作る

httpで何かPOSTしてその内容を確認したい時がある。しかしそのためだけにわざわざWebサーバーたてるのも面倒。ということで、API Gateway + Lambdaでさらっと確認できるようの受け口を作りたい。

SAM CLIを使って構築する。楽。

“httpでPOSTする受け口をSAM CLI + API Gateway + Lambdaで作る” の続きを読む

とにかくCloudSearch + boto3で全文検索するために学習する

サイトの全文検索のためにCloudSearchを使う、と決めたのはよいものの、取っ掛かりに苦労したので、とにかく「インスタンスをたてる」→「ドキュメントを登録する」→「検索して結果を取得する」までのなんとなくの流れを超ざっくりとメモ書き。そのうちちゃんとまとめたい。

“とにかくCloudSearch + boto3で全文検索するために学習する” の続きを読む

DynamoDBのテーブル設計をするとき、自分に問いかけていること

DynamoDBをいじり始めてかれこれ一年くらい。見よう見まねで騙し騙しやってきたが、色々と痛い目を見てわかってきたこともある。転んで生傷つくりながら、テーブル設計をする際に考えるようになったことを、備忘録的に記述していく。

オートスケールの話はしない(わからない)。インフラ専門部隊がいないなら、オンデマンドがいいよ。人的コストより多分安いよ。

“DynamoDBのテーブル設計をするとき、自分に問いかけていること” の続きを読む

S3 + CloudFrontでS3にファイルをアップロードしたら自動でキャッシュをクリアする

S3 + Cloudfrontでサーバレスな感じを出す場合、S3にindex.htmlなりなんなりアップロードしたら、エッジサーバー上のキャッシュもクリアしてもらわないと困る。

ということで、S3にファイルをアップロードしたら、自動的にキャッシュクリアするようなLambdaを作成する。S3 -> LambdaのところはCloudformation使います。

“S3 + CloudFrontでS3にファイルをアップロードしたら自動でキャッシュをクリアする” の続きを読む

DynamoDBにboto3でトランザクションな書き込み

DynamoDBはトランザクションをサポートしている。とはいえ基本的に原子性を求められるようなユースケースでは使わないほうがよいと思うけれど、できると幅が広がるので、覚えておいて損はない。ということで、boto3での使い方のメモ書き。

“DynamoDBにboto3でトランザクションな書き込み” の続きを読む