4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

さくらのウェブアクセラレータ(CDN)のオリジンにAmazon S3を利用する

Last updated at Posted at 2022-05-17

概要

ウェブアクセラレータ(CDN)の配信設定で、「オリジン種別:オブジェクトストレージ」で「Amazon S3」を指定する方法です。

注意事項

ウェブアクセラレータの「オリジン種別:オブジェクトストレージ」の公式サポートは、さくらの「オブジェクトストレージ」のみです。
オリジンにAmazon S3 を利用する場合、公式サポートはされていないので、あくまで自己責任での利用になります。

Amazon S3の設定

1. 配信対象バケットの作成

バケットの作成 - Amazon Simple Storage Service の手順でバケットを作成します。

<バケットの作成例>

  • バケット名:webaccel-test
  • AWSリージョン:アジアパシフィック (東京) ap-northeast-1

2. IAMのポリシー・グループ・ユーザーの作成(ウェブアクセラレータ連携用)

参考 : IAM ユーザー - AWS Identity and Access Management

IAM管理画面より、「ポリシー」を作成します。

<ポリシーの作成例(対象バケットの読み取り専用)>

  • 名前 : WebaccelTestReadOnly
  • 設定内容 :
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "WebaccelTestReadOnly",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::webaccel-test",
                "arn:aws:s3:::webaccel-test/*"
            ]
        }
    ]
}

IAM管理画面より、「ユーザーグループ」を新規作成します。

<ユーザーグループの作成例>

  • ユーザーグループ名 : webaccel-read-only
  • ポリシー : WebaccelTestReadOnly
  • グループ : webaccel-read-only

IAM管理画面より、「ユーザー」を作成します。

<ユーザーの作成例>

  • ユーザー名 : webaccel-read-only-user
  • AWS アクセスの種類 : アクセスキー - プログラムによるアクセス

※ ここで作成されたユーザーの「アクセスキーID」「シークレットアクセスキー」をメモします。

3. IAMのポリシー・グループ・ユーザーの作成(コンテンツアップロード用)

IAM管理画面より、「ポリシー」を作成します。

<ポリシーの作成例(対象バケットの読み書き)>

  • 名前 : WebaccelTestReadWrite
  • 設定内容 :
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "WebaccelTestReadWrite",
            "Effect": "Allow",
            "Action": [
                "s3:*Object",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::webaccel-test",
                "arn:aws:s3:::webaccel-test/*"
            ]
        }
    ]
}

IAM管理画面より、「ユーザーグループ」を新規作成します。

<ユーザーグループの作成例>

  • ユーザーグループ名 : webaccel-read-write
  • ポリシー : WebaccelTestReadWrite
  • グループ : webaccel-read-write

IAM管理画面より、「ユーザー」を作成します。

<ユーザーの作成例>

  • ユーザー名 : webaccel-read-write-user
  • AWS アクセスの種類 : アクセスキー - プログラムによるアクセス

※ ここで作成されたユーザーの「アクセスキーID」「シークレットアクセスキー」をメモします。

4.コンテンツのアップロード

「3. IAMのポリシー・グループ・ユーザーの作成(コンテンツアップロード用)」で用意した
たwebaccel-read-write-userユーザーの「アクセスキーID」「シークレットアクセスキー」を使ってコンテンツをアップロードします。

※ 本手順では、Ubuntu 18.04 の環境にて、awscliで準備しました。

  • 設定例 : s3-webaccel-test-read-write というプロファイルの作成
$ aws configure --profile s3-webaccel-test-read-write
AWS Access Key ID [None]: 「webaccel-read-write-user」のアクセスキーを入力
AWS Secret Access Key [None]: 「webaccel-read-write-user」のシークレットアクセスキーを入力
Default region name [None]: "ap-northeast-1" を入力
Default output format [None]: "json" を入力

$ tail -3 ~/.aws/config

[profile s3-webaccel-test-read-write]
region = ap-northeast-1
output = json
  • 接続確認
$ aws --profile s3-webaccel-test-read-write --endpoint-url=https://s3.ap-northeast-1.amazonaws.com s3 ls s3://webaccel-test/
$

→ 「webaccel-test」バケットにアクセス可能なことを確認します。まだ空の状態だと、このような状態です。

※「An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied」の応答が表示された場合、ポリシー設定を見直す必要があります。

  • 配信用テストファイルのアップロード
$ mkdir webaccel-test
$ cd webaccel-test
~/webaccel-test $
~/webaccel-test $ vim index.html

<html>
<head>
<title>配信テストページ</title>
</head>
<body>
配信テストページです。<br/>
</body>
</html>

~/webaccel-test $ aws  --profile s3-webaccel-test-read-write --endpoint-url=https://s3.ap-northeast-1.amazonaws.com s3 sync ~/webaccel-test s3://webaccel-test/
upload: ./index.html to s3://webaccel-test/index.html
  • アップロード済みなことを確認します
$ aws --profile s3-webaccel-test-read-write --endpoint-url=https://s3.ap-northeast-1.amazonaws.com s3 ls s3://webaccel-test/
2022-04-26 17:22:26        125 index.html
  • 直接HTTPSアクセスした際に、閲覧できないことを確認します。
$ curl https://s3.ap-northeast-1.amazonaws.com/webaccel-test/index.html

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>...(略)...</HostId></Error>

ウェブアクセラレータの設定

参考(1) : 初期設定(オブジェクトストレージ・独自ドメイン利用) | ウェブアクセラレータ | さくらのクラウド ドキュメント
参考(2) : Let's Encrypt 自動更新証明書の利用 | ウェブアクセラレータ | さくらのクラウド ドキュメント

  • 【さくらのクラウド ホーム】 から 【ウェブアクセラレータ(CDN)】を選択

  • 【サイト追加】 から 「サイト新規新規追加」に必要情報を入力して、【保存】で追加します。

設定例 :

ドメイン種別 : 独自ドメイン
サイト名 : S3テスト
公開ドメイン名 : ***.example.jp
リクエストプロトコル : httpsにリダイレクト
オリジン種別:オブジェクトストレージ 
バケット名: webaccel-test
S3エンドポイント: s3.ap-northeast-1.amazonaws.com
S3リージョン : ap-northeast-1
アクセスキーID : 【「webaccel-read-only-user」のアクセスキーID】
シークレットアクセスキー :【「webaccel-read-only-user」のシークレットアクセスキー】
デフォルトのキャッシュ期間: 有効 2600秒
ドキュメントインデクス: 有効
Varyサポート: 無効

※ 今回の記事では、オリジンに、STEP1で用意した、「webaccel-test」バケット、「webaccel-test」バケットのみのREAD(読み込み)権限のパーミッション「webaccel-read-only-user」のアクセスキーID・シークレットアクセスキーを指定します。

*「サイト新規設定追加完了」画面に表示された「CNAME先|サブドメイン ********.user.webaccel.jp.」をメモします。

  • 対象ドメインのCNAMEを設定し、確認します。

確認例 :

$ dig ***.example.jp

(略)

;; ANSWER SECTION:
***.example.jp.           60      IN      CNAME   ********.user.webaccel.jp.
********.user.webaccel.jp.   3599 IN      CNAME   ********.gslb1.sakura.ne.jp.
********.gslb1.sakura.ne.jp.    9 IN A    ********

(略)
  • 「サイト一覧」サイト一覧→「対象サイト」→「設定」から、「有効にする」を選択し、サイトを有効化します。
  • 「サイト一覧」サイト一覧→「対象サイト」→「設定」から、「SSL証明書」の「Let's Encrypt 自動更新証明書を使用する(無料)」を「自動更新を有効にする」を選択し、Let's Encrypt自動更新証明書を有効化します。(この記事ではこちらを使っていますが、持ち込み証明書の利用も可能です。)

配信確認

  • 再度、直接HTTPSアクセスした際に、閲覧できないことを確認します。
$ curl https://s3.ap-northeast-1.amazonaws.com/webaccel-test/index.html

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>...(略)...</HostId></Error>
  • ウェブアクセラレータ経由で、HTTPSアクセスした際に、閲覧できる(配信されている)ことを確認します。
$ curl https://***.example.jp/index.html

<html>
<head>
<title>配信テストページ</title>
</head>
<body>
配信テストページです。<br/>
</body>
</html>
$ curl -v https://***.example.jp/index.html

(略)

< x-cache: HIT

(略)

以上、さくらのウェブアクセラレータ(CDN)のオリジンにAmazon S3を試してみた紹介でした!

※ 繰り返しになりますが、オリジンにAmazon S3 を利用する場合、公式サポートはされていないので、あくまで自己責任での利用になります。

参考記事

この記事と同等の内容を、さくらの「オブジェクトストレージ」で実施する場合の参考記事

4
0
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?