LoginSignup
15
14

More than 5 years have passed since last update.

S3を静的webホスティングで限定公開する。

Posted at

静的ページ配信の開発期間中

AWSでS3使って静的ページ配信すると簡単にwebサイトが作れちゃいますが、
開発期間中はダイジェスト認証とかベーシック認証で秘匿したい、とかあるかもしれません。

あとコンテンツ配信でCloudfrontつかって、とか。
でもCloudfrontでS3コンテンツ公開で秘匿ってできなかったりします。
確かに期限付きURLとか署名付きとかでできるといえばできますが、
imgとかjsとかの要素についても同様に署名付きURLで提供する必要があったり。
※知らないだけだったら、誰か教えてください。

開発期間中のTIPS

Cloudfrontはサクッと設定できてしまうので、ここでは言及しませんが
公開前後や、コンテンツ変更タイミングはエラーページのTTLは短めがいいと思います。
特に技術検証中とか、これではまったりします。
「エラーページ、キャッシュしないでしょー」とか考えて、私はどはまりしました。

で、話を戻すと
開発期間中はS3で静的ページ配信で限定公開、
リリースのタイミングでCloudfront配信というのが妥当でしょうか。

でも静的WEBホスティングは、認証とかできないので、
IP制限で対応しました。

    "Statement": [
        {
            "Sid": "Stmt<UNIQUE_ID>",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::<BUCKET_NAME/*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "<IP/CIDR1>",
                        "<IP/CIDR2>",
                        "..."
                    ]
                }
            }
        },
        {
            "Sid": "Stmt<UNIQUE_ID>",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<BUCKET_NAME>/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "<IP/CIDR1>",
                        "<IP/CIDR2>",
                        "..."
                    ]
                }
            }
        }
    ]
15
14
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
15
14