0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:AWS S3にNext.jsをアップロードして公開するコマンドを整理してみた

Posted at

はじめに

Next.jsで生成された静的サイトをAWS S3にアップロードし、CloudFrontなどを通じて公開するケースはよくあります。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

今回紹介するのは、aws s3 sync コマンドを使ってファイルをアップロードする際の注意点と、パブリックアクセスの許可設定についてです。


書こうと思ったきっかけ

この内容は、あくまで個人的な備忘録としてまとめたものです。
ハッカソンでS3にNext.jsをデプロイする機会があり、手順や注意点を整理しておきたいと思い、記事にすることにしました。


バケットポリシーによる公開設定

まず、アップロードは以下のようにシンプルに行います。

aws s3 sync ./out s3://honda-ehime-dev

--acl public-read付けないでOKです!

注意点

このままだと、S3バケット側で以下のような制限が有効になっている場合、アップロードしてもファイルは外部からアクセスできません:

  • ACL無効化(バケットレベルでの設定)
  • パブリックアクセス制限が有効

そのため、バケットポリシーで明示的に読み取り権限を与える必要があります。

バケットポリシーの例

AWSコンソールで「バケット」→「アクセス許可」→「バケットポリシー」と進み、以下のようなJSONを貼り付けて保存します:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::honda-ehime-dev/*"
    }
  ]
}

✅ これにより、誰でもこのバケット内のファイルにHTTP経由でアクセスできるようになります。


まとめ

手順 内容
aws s3 sync コマンドを --acl なしで実行する
バケットポリシーでパブリックアクセスを許可する

やるコマンドまとめ

aws s3 sync ./out s3://honda-ehime-dev
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?