AWS リソースメモ

目的

転職して、インフラ周りをガッツリ触るようになった。

色々知識が増えたので、忘れないようにメモしておく。

Tips

Terraform

  • 手動で、AWS コンソールから、リソースを作った場合は、Terraform import をすれば良い。  - やり方はterraformのドキュメントの一番下に書いてある。
  • 少なくとも、RDSといったストレージ系や、Iam、VPCなどは、terraform stateを分離しておいた方が良い。
    • 環境毎に使わないリソースとかできるし、terraform apply が早い
    • Remote Stateを設定しておけば、他のStateのoutputを利用できる

AWS Session Manager

  • session managerを使えば、SSHの設定とか、踏み台サーバーとかがいらない。
  • ポートのリダイレクトができるので、LocalからVPC内のRDSにアクセスするということも簡単。
  • EC2じゃなくて、Fargate でも使える!

Aurora

  • IAMを用いた認証ができる。パスワードが不要なので、流出する心配がない。  - ただ、IAMユーザーを作ったりしないといけないので、ちょっとめんどい。  - ユーザーが IAM 認証情報で Amazon RDS に接続できるようにする
  • Performance Insightsは神。とりあえず入れおくと良い。
    • SlowQueryはもちろんのこと、Lockの状況とかも確認できる。

API Gateway

  • Rest APIを使って、直接Kinesis streamに流したり、SQSにQueue入れたりできる。
  • Mock機能もあるので、公開されてるAPIを使った負荷テストしたい時に、代用のAPIを作ることができる。

S3

  • S3でサイトを作りたい時は、Static Website HostingをONにして使うと思う。が、これだと吐き出されるURLがhttpになる。  - なので、CloudFrontを前段に入れるのが多いが、その場合、もしIP制限したい場合はWAFが必要になる。
  • 一方で、Static Website HostingをOFFにしちゃえば、IP制限はS3の方でできるので、簡単!
    • 社内からしかアクセスしないし、そんな使われないけど、HTTPSにしないといけないって時(滅多にないと思うけど、今回あった)におすすめ。S3にHTML置いて、サイト作るなら、Static Website Hostingを使うって先入観が強すぎて、盲点だった...Storybookのpreview環境作る時に使ってたのに...

Kinesis Stream

  • Kinesisには、Aggregationという考え方がある
  • Aggregationした後は、De-Aggregationしないといけない。
    • こっちは、NodeとかGoとかのライブラリがある。
    • Kinesis Firehoseを使って、Kinesis streamのデータを、各リソースに渡す場合は、レコードの集約を解除してくれるので便利!
  • Kinesis StreamはDynamoDBのレコード追加とかも、取得してくれるので便利!

Memory DB

  • 従来AWSでRedisを使うときは、ElasticCacheを使っていたが、MemoryDBというのものある。
  • MemoryDBは、データの耐久性があるから、RDSのように永続的なデータを保存して、読み取りできる。
    • 一方で、ElasticCacheと比べて、通常の書き込みが遅かったり、ClusterModeを強制される。
  • DynamodB+DAXの代替として検討したり、RDB+キャッシュRedisなシステムを MemoryDB に集約するといったケースで使う感じっぽい