S3上のprivateなbacketの画像にアクセスする
いくつか方法があるらしい
IAMによる認証と権限管理
これは一般的にサーバーサイドで使用され、S3 backetに対するアクセス権を制御する
IAMユーザーまたはIAMロールに適切なアクセスポリシーを付与し、必要なAPI操作(画像の取得など)を可能にします。
サーバーが画像データを取得して処理する必要がある場合、またはS3に対するアクセスを厳密に制御したい場合、IAMによる認証と権限管理を使用します。
getSignedUrl関数を使用して一時的にS3オブジェクトにアクセス可能なURLを生成する
clientで直接S3にアクセスする必要がある場合に便利
生成されたURLは有効期限があるものの誰でもアクセスできる
ユーザーがブラウザで直接S3の画像を見る必要があり、サーバーを介したくない場合は、署名付きURLを使用します。ただし、このURLが漏洩すると誰でも画像にアクセスできるため、注意が必要です。
直接バイナリデータを取得
getObjectメソッドを使用してS3から直接画像データを取得し、そのデータをHTTPレスポンスのボディとしてクライアントに送信します。これにより、画像データの取得は完全にサーバーサイドで制御され、クライアントは特定のAPIエンドポイントからデータを取得するだけになります。
クライアントが画像を取得するためには必ずサーバーを介するようにしたい場合、またはクライアントが直接S3にアクセスすることを避けたい場合は、直接バイナリデータを取得する方法を使用します。
Cognitoを使用する
一時的なAWS認証情報を生成
CloudFrontとS3の組み合わせ
特定のIP範囲からのアクセスのみを許可したり