要件として話に挙がったので調べたメモ。
S3のエンドポイントの種類
S3はREST APIエンドポイント
とウェブサイトエンドポイント
の2つのエンドポイントを有する。
REST APIエンドポイント
- 通常、S3のオブジェクトにアクセスするたいには
REST APIエンドポイント
を利用する。 - オブジェクトURLとも呼ばれるもの。
- アクセス権限が正しく設定できていないとXML形式のエラーが表示されるのを見たことがあるように
REST APIエンドポイント
ではXMLでエラーレスポンスが返る。 -
HTTPS
でアクセスできる。
ウェブサイトエンドポイント
- S3で静的ホスティングを有効にすると
ウェブサイトエンドポイント
が利用できるようになる。 -
s3-website.<region>.amazonaws.com
といったドメイン名でアクセスでいるようになる。 -
HTTPS
に対応していない。 - インデックスドキュメントを返すことができる。
参考
- https://blog.serverworks.co.jp/2022/03/02/100000#REST-API-%E3%82%A8%E3%83%B3%E3%83%89%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%81%A8%E3%81%AF
- https://zenn.dev/fdnsy/articles/3c3cb5e4ee5a43
- https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/WebsiteEndpoints.html#WebsiteRestEndpointDiff
S3静的ホスティングのあれこれ
- カスタムドメインを当てたい場合、Route53にCNAMEレコードを設定する。
- HTTPSを利用したい場合、CloudFront、ACMを噛ませる。
閉域網からS3でホストするページにアクセスしたい。
- DirectConnectで繋いだオンプレ環境やプライベートサブネットなどからインターネットを介さずHTTPSを利用したアクセスをする場合、CloudFrontは使えない。
- この場合ALBを利用する。
参考
単純にS3にアクセスしたい(オブジェクトURLにアクセスしたい)
PrivateLink (Interface型エンドポイント) 利用
参考
Gateway型エンドポイント利用
S3がプライベートリンクに対応したことですでに旧来の方法となった。
参考
動的ページもプライベートに公開したい。
プライベートタイプのAPI Gatewayを利用することでVPCエンドポイント経由でプライベートにAPI GWにアクセスすることができる。
参考
認証をかけたい。
インターネット公開するよくある構成としてCognitoで認証を嚙ますが、現在CognitoはVPCエンドポイントに対応しておらず閉域網での認証には利用できない。
以下のような構成もあるものの実用できるのか、、?