つよつよになりたい

勉強したことをまとめます

Laravel Passportまとめ

dev.to

 

Laravel Passportを勉強しながら、こちら↑の記事を読んでいろいろ勉強した記録まとめ👽

 

Laravel Passport

Laravel PassportはOAuth2.0のAPI認証が簡単に実装できるやつ🌻 設定方法とかは公式ドキュメントをみたり、下の記事もわかりやすかった

qiita.com

Laravel Passportは  

  1. Oauth2 with authorization codes

  2. Password Grant Token

  3. Implicit Grant Token

  4. Client Credentials Grant Token

  5. Personal Access Token

の5つが使えるんだけど、公式とかみて設定するとルートで Passport::routes(); って書いてあるから使わない認証方法のルートもできちゃう😩 これを使うやつだけに制限する場合はこれをみる

qiita.com

  今回はPassword Grantで実装する。   Password Grantは /oauth/token にPOSTリクエストをする リクエスト形式はこんな感じ

POST {トークンエンドポイント} HTTP/1.1
Host: {認可サーバー}
Content-Type: application/x-www-form-urlencoded
 
grant_type=refresh_token     // 必須
&username={ユーザーID}    // 必須
&password={パスワード}    // 必須
&client_id{クライアントID}  // 必須
&client_secret{クライアントシークレット}  // 必須
&scope={スコープ群}       // 任意

 でもこれをそのままフロントからリクエストするとあぶない🤬 だから一回プロキシ的なのを作ってフロントはそこにリクエストして、プロキシから /oauth/token にリクエストするようにする

トークンは返してリフレッシュトークンはCookieにいれるんだ🙄

 

勉強メモ

SQS

  • SQSキューに保存できるメッセージは無制限
  • デフォルトのメッセージ保持期間は4日間

S3

  • S3に保存するデータを暗号化するにはまずバケットポリシーが適用されてからバケットの暗号化が適用される。したがって暗号化情報なしのリクエストを拒否するポリシーがあるとそもそもリクエスト拒否されて登録できない。

VPCエンドポイント

Route53

  • マルチバリュールーティングは個々のIPアドレス単位でヘルスチェクできる
  • フェールオーバールーティングはアクティブ/パッシブ

AWS X-Ray

EC2

EBS

Lambda

  • Lambda Layerはlambda関数でライブラリを共有できる!重複部分を共有化

DynamoDB

  • マルチリージョンだけどマルチAZは無理

AWS Sheild

ACL

  • ルールナンバーが低いほうから高い方に評価する

ENIについて

https://business.ntt-east.co.jp/content/cloudsolution/column-14.html

実行中(ホットアタッチ)

停止(ウォームアタッチ)

インスタンスが起動しているとき(コールドアタッチ)

これどうやって覚えればいいの、、、

凡ミス

sshのポートは22

20はFTP

aws復習

リソースに対してデフォルトではアクセス拒否ただしルートアカウントはすべて許可

タグ付けできるリソース

ElasticCashe

  • AZに置く必要がある
  • ファイルキャッシュとしては使用できない(S3の前にはおけない)

S3

  • バケットポリシーでIAMユーザに許可与えられる

CloudFront

  • よくアクセスされるサーバをcloudfrontにキャッシュとして配置できる

DirectConnect

  • AWS のすべてのサービスで使用できる

インスタンスストア、EBS

  • タイプ変更できない
  • EBSはできる
  • 完全なスナップショットを取得するにはEC2インスタンスを完全にシャットダウンして、その状態で取得する必要
  • 基本メトリクスは5分間隔、詳細は1分だけど課金
  • スナップショットをコピーした場合、コピー元のボリュームIDは vol-ffffffff

スナップショット

  • 初回のスナップショットがないと復元できない
  • スナップショット取得中もディスクは使用することが可能
  • AMI登録した状態ではスナップショットの削除は不可能。スナップショットを削除するにはAMI登録を解除しなければいけない

EC2

DHCPサーバとは

DHCPサーバとは、インターネットなどのIPネットワークに一時的に接続する機器に、IPアドレスなど必要な情報を自動的に発行するサーバ。

DHCPサーバとは - IT用語辞典

RDS

  • RDSはホストアクセスできず、SQLのみでアクセスできる。
  • RDSに対してSSL暗号化を使用した接続ができる
  • リードレプリカを昇格させると、前のリードレプリカのバックアップ保持期間、バックアップウィンドウパラメータグループが引き継がれる

バックアップウインドウとは、データをバックアップするために、業務やシステムを停止することができる時間帯のこと

パラメータグループはチューニング(目的の処理結果を変えずにその過程を最適化する)とかに使うテンプレ

  • インスタンスのストレージを増やす場合、少なくとも元のサイズに対して10%の割合で増やさなきゃいけない

  • フェールオーバーが発生すると、CNAMEが変わる。

  • イベントが発生した場合SNSで通知

  • スナップショットを取得した場合ディスクIOは数秒から数分間停止する

  • マルチAZの場合は、スタンバイからスナップショットを取得

     

CloudTrail

  • デフォルトで有効化されている

ELB

勉強

VPN,DirectConnect

  • VGW(仮想ゲートウェイ)にパブリックIPを設定する。
  • オンプレミス側にはカスタマーゲートウェイを用意する。
  • DirectConnectも一緒に使えるけど、同時に使用はできなくて、DirectConnectが優先されて何か障害があったらフェールオーバーしたらVPNで接続できる
  • オンプレからDirectConnectでVPCに接続する場合はパブリックとプライベートIPが使える

スナップショット

  • スナップショットはリージョン間コピー機能を使って他のリージョンへコピーできる
  • スナップショットはAZ間コピー機能を使って他のAZへコピーできる
  • EBSをアンマウント(OSから切り離すこと)しないでスナップショットを取得するとキャッシュされてる情報は取得できないから、アンマウントしてストレージにキャッシュの内容を書き込んでからスナップショットを取得するといいよ
  • EC2をシャットダウンしてスナップショットを取得する

サブネット

  • サブネットは一つのAZのみマップできる。
  • CIDRは一番小さいレンジはマスク28

CIDRについてよくわかってなかったからこれ見て👇

CIDRとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

インスタンス

  • デフォルトではインスタンスが複数のAZにあったらインスタンスがたくさんあるAZから一台終了する
  • IPv4 CIDR ブロックが一致または重複する VPC 間で VPC ピアリング接続を作成することはできない

🌙インスタンスのデフォルト終了ポリシーについてまとめ🌙

S3

  • バケットの容量に制限はない。いくらでもPUTできる🤷‍♀️
  • ファイルのチェックサムを計算できる。アップロードする操作のhttpヘッダーニアにチェックサムを挿入して、それが合致すると200が返ってくる。
  • 冗長化ストレージはレプリケーション先のAZの数が少ない。
  • セキュリティグループはいつでも変更できるし短時間で適応される。

Amazon SWF(Simple Workflow Service)

AWS再入門 Amazon Simple Workflow Service編 | Developers.IO

Route53

  • Route53はエッジロケーションで動いてる

エッジロケーションとは👇

AWSにおける リージョン、AZ、エッジの違い

基本的なこと

DHCPサーバ

インターネットなどのIPネットワークに一時的に接続する機器にIPアドレスなど必要な情報を自動的に発行するサーバ

EC2インスタンスはプライベートIPはDHCPサーバから取得する

DHCPサーバとは - IT用語辞典

https://status.aws.amazon.com/

これで各AWSサービスの稼働状態確認できるのおもろい🐙

RDS

RDSは直接ホストアクセスを許可しないのでSQLのみ

aws復習

Aurora

 

dev.classmethod.jp

 

AuroraはRDSの種類のひとつ🙄

DBインスタンスを作成するとDBクラスタが作成される。

DBから参照されるストレージは一つの3つのAZに2つずつおかれて

これらのデータは自動的に同期されるし、クラスタの容量は保存されるデータ量に応じて自動的に拡大縮小していくよ🥰 最大64TBテラテラ🤟

PostgreSQLMySQLとして扱うことができる。

 

クラスタ内にレプリカインスタンスを作ることができてプライマリに障害があったら昇格してフェイルオーバーしてくれる。(最大15個)

 

EC2
  • EC2のセキュリティグループやネットワークACLはURLでの制御はできないよ。🌻だからproxyをつかう
  • サーバのパスワードを忘れて誰もログインできなくなっちゃったけどデータは取り出したい!って時は、インスタンスのスナップショットを取得してAMIとして登録、新しいインスタンスを生成して鍵を新しくする🌙 んでEC2 Launchからadministratorパスワードをリセットする。
  • 複数のIAMロールを一つのインスタンスにアタッチすることはできない。
  • ゲートウェイエンドポイントは、AWSのサービスを宛先とするトラフィックのルートテーブル🧐
  • ちなみにインスタンスのロールを変更するとすぐ適応される。
  • EC2インスタンス上の SSL 証明書を ELB に配置することにより、証明書を一元管理する。(SSLオフロードっていう)

 

予約ID(ReservationID)

なんかインスタンスをlaunch(作成)するごとに作られるらしい👼

だから10個のインスタンスを同時に作成したら同じReservationIDが10個のインスタンスにつく🤣

VPC

これはVPCのCIDRブロックのなかで使えないやつ🤪

  • 10.0.0.0・・・ネットワークアドレス
  • 10.0.0.1・・・VPCルータ
  • 10.0.0.2・・・DNS
  • 10.0.0.3・・・予約
  • 10.0.255.255・・・ブロードキャスト
 
EBS
  • 自分が所有しているスナップショットをコピーする場合、コピーするときに違う暗号鍵を使用して暗号化することができるよ🐙
  • あと暗号化されたスナップショットから作成されたボリュームは自動的に暗号化される。
  • 自分が所有していない暗号化されていないスナップショットをコピーする時に暗号化してコピーできる👍
  • 暗号化されていないEBSボリューム上のファイルを暗号化するときはOSの暗号化機能を使える😈

 

ELB

クロスゾーン負荷分散

これは各EC2に均等に負荷が分散される、

 

ConnectionDraning

ELBから切り離してもリクエスト中だったらインスタンスに指定秒数の間は通信がきれない。

スティッキーセッション

HTTPレスポンスにELBでCookieを埋め込んで、そのCookieを基にバインド先のインスタンスを固定する

(特定サーバへの振り分けをするけどアプリケーションサーバー発行のIDまたはELB発行のIDを利用して振り分けるからステートレスではない)

 

???????要調査💆‍♀️

 

CloudWatch

cloudwatchで設定したアラートが発生した場合にコンソールで設定可能なアクション

 
ElasticCash
  • インメモリタイプだからモード障害時にはデータロストする。
  • ステートレスだからサーバ間でセッション情報を共有するのに便利。
  • keyvalueストア
  • セキュリティグループで制御できる。

 

RDS
  • RDSのスナップショットはS3に保存される。
  • RDSリードレプリカはマスターに昇格させることができる。
  • マルチAZで複製したDB はリードレプリカとしてアクセスできない。

つまり同一AZのリードレプリカがマスターになる?🤷‍♀️

  • Consolidated Billing(これは一括請求)

 

S3

結果整合性だけど、新規作成だけは即座に反映される。🐛

 

SQS

メッセージは確実に処理されなきゃいけないのでアプリケーションが削除APIをコールするまで削除されない、でもデフォルトは4日後に削除される。

SQSとkenesisの違いについてはこちら🦧

SQS と Kinesisの違いと使い分け方法

 

 

 

 

 

Zone apex???

Route53の種類

Aレコード

ドメイン名:IPアドレス(1:n)

CNAMEレコード

ドメイン名:参照ドメイン

MXレコード

メールサーバ

 

Zone apexとは

サブドメインを含まないドメイン名.

example.jp ( ○○○.example.jpの○○○の部分がないやつ)🥰

www.example.jpじゃなくてexample.jp

 

CNAMEレコードには同じドメインサブドメインを使えない

これ見たらいいよ😺

blog.serverworks.co.jp

でもZone apexにはNSレコードが必要だから、CHAMEにかくと同じドメインになるからできない

(Route53はドメイン登録時にNSレコードが自動で定義されてる)

NSレコードは上位ドメインのサーバから下位ドメインを管理するサーバとして紹介されるホストを定義する。(ゾーンを定義する)

AレコードにかければいいけどELBはIPアドレスが変わったりするかからちょっとめんどくさいよね〜😓

でもaliasなら登録できる🥰

aws復習

VPCとかネットワーク関連

 

VPC

プライベートIPv4アドレス

VPCインスタンス間の通信に使用される。

インスタンス作成したら必ず割り当てられる。

再起動しても同じIPアドレスが割り当てられる。

 

パブリックIPv4アドレス

パブリックIPアドレス欲しい!っていったインスタンスに割り当てる

インターネットゲートウェイでの通信は戻りの通信はパブリックIPアドレスが必要だよ

でも再起動したらまた別のIPアドレスが割り当てられるから、同じのが使いたかったらElasticIPを有料だけどつかう。👍

 

VPCDNSホスト名を有効にすることでインスタンスにホスト名が割り当てられてる🥺💜

 
EBS
  • Amazon Data Lifecycle Manager (Amazon DLM)を使用するとEBSのバックアップであるスナップショットの作成、保存、削除を自動化できる
  • EBSはAZで自動で複製されるよ

  • EBSのスナップショット取得中は「Pending」と表示される
  • EBSのスナップショット取得中もEC2インスタンスは動作してるよ(AMIを取得するときは止めたほうが確実)
  • あとEBSは圧縮して保存される。
  • EC2を消した時にデフォルトは一緒にEBSも消えちゃうけどEC2を作った時だけ「合わせて削除(Delete on Termination)」をオフにできて削除されない😇

 

EC2

アカウントAのap-north-1aとアカウントBのap-north-1aは同じ場所とは限らない

逆にアカウントAのap-north-1cとアカウントBのap-north-1dが同じ可能性がある。

 

Auto Scaling

AutoScalingのLaunchConfigurationでAMI、インスタンスタイプ、キー ペア、ユーザデータ(実行するスクリプト書くやつ)、セキュリティグループ、IAMロールを設定できる。

DB

RDS
  • RDSはデフォルトで自動バックアップが有効になっている。
  • 1日一回バックアップできて、最大35日保持できる。
  • DBスナップショットから復元動作を実行すると新しいエンドポイントをもつDBインスタンスが作成される。だからRoute 53とかDNS 名ベースのエンドポイントへのアクセスが必要😒
  • RDSのデータを暗号化したかったらRDS DBインスタンスの暗号化オプションを有効化する必要がある。
Redshift
  • Redshiftはスナップショット用の無料ストレージを提供しているけど、クラスターのストレージ容量を使用することになる。

 

S3
  • S3のバケットの名前はAWSの中で一意じゃないといけないらしい。
  • EFSよりS3のほうが安いらしい
  • s3の静的ホスティングではHTTPSが使用できないが、cloudfrontを利用することでHTTPSを利用できる。HTTPS プロトコルを使用して、SSL エンドポイント経由で Amazon S3 にデータを安全にアップロードまたはダウンロードできる。
  • アップデートがオブジェクトに対して同じキー名だったら、結果整合性だから遅延して変更されないことがあるよ🥰

 

s3で間違って消さないようにする方法

  • S3バケットに対してMFA認証を有効化する。
  • バージョニング機能を有効化する。
  • 初期設定で削除できないようにする。

S3の暗号化

  • Server Side Encryption
    • SSE-S3・・・Amazon S3 がキーを管理してキーは定期的に更新される
    • SSE-KMS・・・ユーザがKMSでキーを生成して管理する
    • SSE-C・・・ユーザーがキーを準備して管理する
  • Client Side Encryption・・・クライアントの方で暗号化してオブジェクトを登録
 
Glacier
  • Glacierってデフォルトで暗号化されるらしい
  • Glacier Deep ArchiveはGlacierより値段が安くて取り出しに時間がかかる。普通は3−5時間で取り出せる、Deep Archiveは12時間くらい?
CloudWatch
  • CloudWatch がサポートする最短のデータの受信、データの集計感覚は1秒🥺すご!
  • ネットワーク、ディスク、CPUはAWS のハイパーバイザーで把握できるため、標準のメトリックスとして取得される。
  • メモリの使用率はOSのみでしか取得できない(ハイパーバイザーでは把握できない)ため、OS側にインストールするエージェントで取得する必要がある。

(標準メトリックスがAWSで取得できるOSエージェント不要なやつ、カスタムメトリックスはOSエージェントが必要なやつ。)

  • メトリックスの最大保存期間は15ヶ月
Amazon SES

SESがサポートしているやつ↓↓

HTTP,HTTPS,Email,Email-JSON,SQS,SMS

🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯