Laravel Passportまとめ
Laravel Passportを勉強しながら、こちら↑の記事を読んでいろいろ勉強した記録まとめ👽
Laravel Passport
Laravel PassportはOAuth2.0のAPI認証が簡単に実装できるやつ🌻 設定方法とかは公式ドキュメントをみたり、下の記事もわかりやすかった
Laravel Passportは
Oauth2 with authorization codes
Password Grant Token
Implicit Grant Token
Client Credentials Grant Token
Personal Access Token
の5つが使えるんだけど、公式とかみて設定するとルートで Passport::routes(); って書いてあるから使わない認証方法のルートもできちゃう😩 これを使うやつだけに制限する場合はこれをみる
今回は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エンドポイント
- ゲートウェイ型がサポートされてるやつはS3とDynamoDB
Route53
- マルチバリュールーティングは個々のIPアドレス単位でヘルスチェクできる
- フェールオーバールーティングはアクティブ/パッシブ
AWS X-Ray
EC2
EBS
- EBSはアタッチされた時はファイルシステムが決められていない
Lambda
- Lambda Layerはlambda関数でライブラリを共有できる!重複部分を共有化
DynamoDB
- マルチリージョンだけどマルチAZは無理
AWS Sheild
- https://www.wafcharm.com/blog/aws-shield-for-beginners/
- スタンダードは自動で適応されているんだねー!
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
- EC2インスタンスではプライベートIPアドレスは DHCP サーバから取得する
- 再起動の場合はインスタンスストアも失われない。
- Windows インスタンスには主にRDP(Remote Desktop Protocol)で接続する。(sshではない?)
- 設定した IOPSあるいはスループットの性能が得られない場合は、EC2 インスタンスの帯域幅がボトルネックになっていないか確認
DHCPサーバとは
DHCPサーバとは、インターネットなどのIPネットワークに一時的に接続する機器に、IPアドレスなど必要な情報を自動的に発行するサーバ。
RDS
- RDSはホストアクセスできず、SQLのみでアクセスできる。
- RDSに対してSSL暗号化を使用した接続ができる
- リードレプリカを昇格させると、前のリードレプリカのバックアップ保持期間、バックアップウィンドウ、パラメータグループが引き継がれる
バックアップウインドウとは、データをバックアップするために、業務やシステムを停止することができる時間帯のこと
パラメータグループはチューニング(目的の処理結果を変えずにその過程を最適化する)とかに使うテンプレ
-
インスタンスのストレージを増やす場合、少なくとも元のサイズに対して10%の割合で増やさなきゃいけない
-
フェールオーバーが発生すると、CNAMEが変わる。
-
イベントが発生した場合SNSで通知
-
スナップショットを取得した場合ディスクIOは数秒から数分間停止する
-
マルチAZの場合は、スタンバイからスナップショットを取得
CloudTrail
- デフォルトで有効化されている
ELB
- ELBはアクセスログを圧縮ファイルとしてs3に保存する
勉強
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 ピアリング接続を作成することはできない
🌙インスタンスのデフォルト終了ポリシーについてまとめ🌙
- インスタンスが一番多いAZから選ぶ
- 一番古い起動テンプレートを使用している
- 課金時間に一番近いインスタンス
- インスタンスのIPアドレスを確認するには、メタデータでローカルとパブリックIPアドレスを確認できる。
- Linux なら ifconfig、Windows なら ipconfigでローカルIPが表示できる。
- EBSは停止中にタイプ変更可能
S3
- バケットの容量に制限はない。いくらでもPUTできる🤷♀️
- ファイルのチェックサムを計算できる。アップロードする操作のhttpヘッダーニアにチェックサムを挿入して、それが合致すると200が返ってくる。
- 低冗長化ストレージはレプリケーション先のAZの数が少ない。
- セキュリティグループはいつでも変更できるし短時間で適応される。
Amazon SWF(Simple Workflow Service)
AWS再入門 Amazon Simple Workflow Service編 | Developers.IO
Route53
- Route53はエッジロケーションで動いてる
エッジロケーションとは👇
基本的なこと
DHCPサーバ
インターネットなどのIPネットワークに一時的に接続する機器にIPアドレスなど必要な情報を自動的に発行するサーバ
EC2インスタンスはプライベートIPはDHCPサーバから取得する
https://status.aws.amazon.com/
これで各AWSサービスの稼働状態確認できるのおもろい🐙
RDS
RDSは直接ホストアクセスを許可しないのでSQLのみ
aws復習
Aurora
AuroraはRDSの種類のひとつ🙄
DBから参照されるストレージは一つの3つのAZに2つずつおかれて
これらのデータは自動的に同期されるし、クラスタの容量は保存されるデータ量に応じて自動的に拡大縮小していくよ🥰 最大64TBテラテラ🤟
PostgreSQLとMySQLとして扱うことができる。
クラスタ内にレプリカインスタンスを作ることができてプライマリに障害があったら昇格してフェイルオーバーしてくれる。(最大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ブロックのなかで使えないやつ🤪
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(これは一括請求)
- AutoScalingGroupでインスタンス数を決めてるよ💕
S3
結果整合性だけど、新規作成だけは即座に反映される。🐛
SQS
メッセージは確実に処理されなきゃいけないのでアプリケーションが削除APIをコールするまで削除されない、でもデフォルトは4日後に削除される。
SQSとkenesisの違いについてはこちら🦧
Zone apex???
Route53の種類
Aレコード
CNAMEレコード
MXレコード
メールサーバ
Zone apexとは
example.jp ( ○○○.example.jpの○○○の部分がないやつ)🥰
これ見たらいいよ😺
でもZone apexにはNSレコードが必要だから、CHAMEにかくと同じドメインになるからできない
(Route53はドメイン登録時にNSレコードが自動で定義されてる)
NSレコードは上位ドメインのサーバから下位ドメインを管理するサーバとして紹介されるホストを定義する。(ゾーンを定義する)
AレコードにかければいいけどELBはIPアドレスが変わったりするかからちょっとめんどくさいよね〜😓
でもaliasなら登録できる🥰
aws復習
VPCとかネットワーク関連
VPC
プライベートIPv4アドレス
インスタンス作成したら必ず割り当てられる。
再起動しても同じIPアドレスが割り当てられる。
パブリックIPv4アドレス
パブリックIPアドレス欲しい!っていったインスタンスに割り当てる
インターネットゲートウェイでの通信は戻りの通信はパブリックIPアドレスが必要だよ
でも再起動したらまた別のIPアドレスが割り当てられるから、同じのが使いたかったらElasticIPを有料だけどつかう。👍
VPCのDNSホスト名を有効にすることでインスタンスにホスト名が割り当てられてる🥺💜
EBS
- Amazon Data Lifecycle Manager (Amazon DLM)を使用するとEBSのバックアップであるスナップショットの作成、保存、削除を自動化できる
-
EBSはAZで自動で複製されるよ
- EBSのスナップショット取得中は「Pending」と表示される
- EBSのスナップショット取得中もEC2インスタンスは動作してるよ(AMIを取得するときは止めたほうが確実)
- あとEBSは圧縮して保存される。
- EC2を消した時にデフォルトは一緒にEBSも消えちゃうけどEC2を作った時だけ「合わせて削除(Delete on Termination)」をオフにできて削除されない😇
EC2
- 同じAZに配置されたインスタンスは通信量が課金されない
アカウント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
🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯