インフラに関して調べたこと
【目的】
- 技術情報に対する感度を高めるため。
- 日々業務中で調べたことを横断的に見返せるようにするため。
【用途】
- 業務の中で学んだことを書いておく。
CloudFront
背景:業務で使うことがあるが、具体的な機能や設定手順に自信がなかったので調べた。
特徴
- 高速:ユーザーから最も近いエッジサーバーから画像を配信するので、オリジンサーバーから配信するより速い
- 効率的:エッジサーバーでコンテンツのキャッシングをするので、オリジンサーバーに負荷をかけず配信できる
(CloudFrontはエッジサーバーが世界中にあるので、「ユーザーから最も近い..」を実現できる)
S3バケットをオリジンとしてディストリビューションを作成するだけで、S3のオブジェクトをコピーしてきてくれる→キャッシュ配信ができるようになる。
参考:AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得 | Udemy
設定方法
- Origin Domain Name→S3バケット
- Origin Path→特定のディレクトリだけ配信するなど
- Restrict Bucket Access→CloudFrontだけアクセスを許可する
オリジンアクセスアイデンティティとS3のバケットポリシーの設定
参考記事: https://dev.classmethod.jp/articles/cloudfront-oai-for-cross-acount-s3/
CloudFrontからS3にアクセス許可
CloudFrontからS3にアクセスできるようにするには、Origin Access Identityという認証情報を使う
CloudTrail
- AWSのユーザーの行動ログを残せる
- ログを吐き出す場所をs3に設定できる
設定方法
- 証跡の作成
- 全てのリージョンに適用(どこで操作しても出力)
- 全て
MFA(2段階認証)
背景:強いエンジニアさんからAWSをよりセキュアにするために設定した方がいいと、ご指摘頂いた。
awsへのログインを2段回認証にする。
利用するにはPC以外の端末に、Google Authenticatorのような専用のアプリを入れておく必要がある。
有効化すると、通常のログイン画面の後で6桁の数字入力を求められる。
Google Authenticatorを起動して、表示されている数字を入力すればログインは成功する。
Google AuthenticatorはiPhone買い替え時にアカウントの移行ができないことが問題だったらしいが、最近になって移行機能が追加されたよう。
Heroku x Railsで開発している時の高速化テクニックがまとまっていた。
確かに重たい処理を非同期にまわすとか、ファイルアップロードはHerokuを介さないとかはやる。
Heroku管理画面をみると、webサーバーとworkerが別dynosで動いていることがわかる。
# S3 access denied
S3のパブリックアクセスは全てブロックにしていて、CloudFront経由からのアクセスだけを許可するようバケットポリシーを設定してある。
CloudFront経由からだとS3のオブジェクトにアクセスできるはずだが、AccessDenied
となる。
上記記事より引用。
ブラウザ上で確認していると気付きにくいが、403ではなく、307でリダイレクトされ結果403になっていることがあります。
リダイレクト先はS3のREST API エンドポイントです。
適切にアクセス元が絞られていれば、S3への直アクセスは Denied になるので、結果的に403という状態になっています。
まさにこういう挙動だったので、しばらく待ってみることにする。
Firestoreは1秒あたりの書き込み上限が500件と決まっている。
Firestoreは統計処理に弱くて、count
みたいな処理ができない。力技でなんとかするしか無い。
firebase deploy --only functions
コマンドを完遂するには、従量課金のプランへの変更が必要そう。
Error: Your project hoge must be on the Blaze (pay-as-you-go) plan to complete this command. Required API cloudbuild.googleapis.com can't be enabled until the upgrade is complete. To upgrade, visit the following URL:
りあクト!読んでいる際に、上記エラーになったので、従量課金プランに変更した。
予算アラートを設定できて便利。あと個人開発用途なので、そんなお金かからんだろうと。
続き:
課金プランに変えたところ、今度は下記エラーに。
⚠ functions: Upload Error: HTTP Error: 403, Unknown Error
HerokuのDBバックアップ/リストア
Herokuにクエリを叩いてデータを取り出せる機能。CSVダウンロードもサポートしているっぽい。
社内利用くらいならエクスポート機能いらないのでは。