Alibaba Object Storage Service

パブリックコンテンツとプライベートコンテンツの両方で、Alibaba Object Storage Service (OSS) を Fastly のオリジンとして使用することができます。

OSS をオリジン/オリジンサーバーとして使用する

OSS をオリジンとして使用するには、以下の手順に従ってください。

OSS アカウントのセットアップと設定

  1. Alibaba Object Storage Service に登録します。

  2. バケットを作成し、オリジンのデータを保存します。

    Alibaba Object Storage Service の新規バケットの設定画面

  3. 以下の要領では、 Create Bucket 設定画面の各フィールドに入力します。

    • バケット名フィールドに、バケットの名前を入力します。入力した名前を忘れないでください。入力した名前は、Fastly サービスに接続するために必要となります。
    • Regionメニューから、ロケーションを選択して接続を保存します。ほとんどのお客様は、POP に近い地域を選択して、オリジンシールドに指定します。
    • Storage Class のオプションから Standard を選択します。
    • アクセス制御リストのオプションからPublic Readを選択します。
    • (オプション) Server-side EncryptionScheduled Backup など、その他のオプションを選択します。
  4. OK をクリックします。

バケットにファイルをアップロードする

バケットを作成したらそのバケットを選択し、Files タブに移動して Upload をクリックし、ファイルを追加します。

Alibaba Object Storage Service の新規バケット画面

バケットの Public Read オプションを選択してファイルを外部からアクセス可能にするか、または Inherited from Bucket オプションを使用します。

OSS をオリジンとして使用するように Fastly を構成する

OSS バケットを GCS バケットをオリジンサーバーとして追加するには、ホストと連携する手順に従ってください。オリジンサーバーについての具体的な情報を追加します。

  1. Origins ページで Create Host をクリックし、 形式を使用してホストの適切なアドレスを入力します<BUCKET>.<REGION>.aliyuncs.com。例えば、バケット名が test123 では、地域が北京 (例: oss-cn-beijing) である場合、ホスト名は test123.oss-cn-beijing.aliyuncs.com になります。また、バケットドメイン名エリアのバケット概要ページでホスト名を確認することもできます。
  2. 新たに作成したホストをクリックして編集します。
  3. Name フィールドにサービスの分かりやすい名前を入力します (例: Alibaba Object Storage)。
  4. Addressフィールドに最初のステップで入力した形式の<BUCKET>.<REGION>.aliyuncs.comホスト名が無い場合はここで入力します。
  5. 以下の要領で トランスポートレイヤーセキュリティ セクションの各フィールドに入力します。
    • Enable TLS?を離れる デフォルト設定のYesのままにし、Fastly とオリジン間の接続を保護します。
    • Verify certificate? をデフォルト設定のYesのままにしておきます。
    • Certificate hostnameフィールドに、Address フィールドに表示されるアドレスを入力します (例:test123.oss-cn-beijing.aliyuncs.com)。
    • SNI hostnameフィールドでは、Match the SNI hostname to the Certificate hostnameのチェックボックスを選択します。ホスト作成時に入力したホスト名のアドレスが表示されます。
  6. TLS セクションの下にある Shielding メニューのシールドロケーションのリストでは、Alibaba のリージョンに近い Fastly POP を選択します。
  7. Advanced options のOverride hostフィールドに、ホストの適切なアドレスを入力します (例:test123.oss-cn-beijing.aliyuncs.com)。この情報はホスト作成時に入力されたものです。

オリジンシールドの注意点を確認し、それに従ってシールド POP を選択してください。

プライベートオブジェクトで OSS を使用する

OSS のプライベートオブジェクトを Fastly で使用するには、Fastly が正しい OSS バケットに向けられ、Fastly が OSS データにアクセスできるように設定されていることを確認してから、以下の手順に従ってください。

プライベートバケットとサブユーザーの設定

プライベートバケットの設定は、パブリックバケットの設定と同じですが、OSS のバケット設定のアクセス制御リストのセクションでPrivateを選択する点が異なります。

AccessKey IDAccess Key Secret が必要になります。これらは、Alibaba Cloud Console の右上にあるアバターをクリックし、Access Key を選択して新しいキーを作成することで、ご自身のアカウントにリンクさせることができます。このキーはアカウントへの完全なアクセス権を持つため、Alibaba の手順に従ってサブユーザーを作成することをお勧めします。以下の手順に従ってください。

  1. Resource Access Management (RAM)ページに移動します。

  2. Users をクリックします。

  3. Create User をクリックします。

  4. 適切な Logon NameDisplay Name を入力します。

  5. Programmatic Accessのチェックボックスを選択し、Alibaba API によるアクセスを有効にします。

    Alibaba Cloud のユーザー作成画面

  6. OK をクリックします。

  7. AccessKeyIDAccessKeySecretをコピーします。Authorization ヘッダーを作成する際には、これらが後ほど必要になります。

  8. バケット概要に戻り、Files をクリックしてから、Authorize をクリックします。 認証ユーザーのリストが表示されます。これが新しいバケットである場合、空の状態が表示されるはずです。

  9. Authorize をクリックして、以下のようにフィールドに入力します。

    • Applied To メニューから Whole Bucket を選択します。Specified Resourcesを選択することもできますが、その場合、新しいファイルでアクセス許可を更新しないと、後で予期しないエラーが発生する可能性があります。
    • Accounts メニューから RAM Users を選択し、新しく作成した RAM ユーザーをメニューで選択します。
    • Authorized Operation メニューから Read Only を選択します。
    • Condition は空白のままにしておくか、IP =Fastly の IP アドレス範囲を入力、または Access MethodHTTPS に設定してカスタマイズできます。

OSS のプライベートコンテンツを使用するための Fastly のセットアップ

Fastly では、OSS プライベートコンテンツを使用するには、次の2つのヘッダーを作成する必要があります: 日付ヘッダー(認可シグネチャに必要)および Host ヘッダー。また、認可パラメータを追加する必要があります。

Date ヘッダーの作成

  1. Fastly コントロールパネルにログインします。
  2. Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
  3. Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
  4. Content をクリックします。
  5. Create header をクリックします。

    新規ヘッダーページでは、Date ヘッダーを作成する

  6. 以下の要領では、Create a new headerページの各フィールドに入力します。

    • NameフィールドにDateと入力します。
    • TypeメニューからRequestを選択し、ActionメニューからSetを選択します。
    • Destinationフィールドにhttp.Dateと入力します。
    • Sourceフィールドにvar.ali_expiresと入力します。
    • Ignore if setメニューからNoを選択します。
    • Priority フィールドに 19 を入力します。
  7. Create をクリックします。コンテンツページに新しい Date ヘッダーが表示されます。これは後で Authorization ヘッダーの署名で使用します。

Host ヘッダーの作成

  1. Create header をクリックします。
  2. 以下の要領では、Create a new header ページの各フィールドに入力します。
    • NameフィールドにDateと入力します。
    • TypeメニューからRequestを選択し、ActionメニューからSetを選択します。
    • Destinationフィールドにhttp.Hostと入力します。
    • Sourceフィールドに"<your OSS domain>"と入力します。
    • Ignore if setメニューからNoを選択します。
    • Priority フィールドに 19 を入力します。
  3. Create をクリックします。Content ページに新しい Host ヘッダーが表示されます。

Authorization ヘッダーを作成する

  1. Create header を再度クリックし、別の新しいヘッダーを作成します。

    ヘッダーページで Authorization ヘッダーを作成する

  2. 以下の要領では、Create a headerページの各フィールドに入力します。

    • Name フィールドに Authorization と入力します。
    • TypeメニューからRequestを選択し、ActionメニューからSetを選択します。
    • Destinationフィールドにurlと入力します。
    • Ignore if set メニューから No を選択します。
    • Priorityフィールドに20を入力します。
  3. Source フィールドに、以下の形式で Authorization ヘッダーの情報を入力します。

    req.url.path "?" "OSSAccessKeyId=<AccessKeyId>" "&" "Signature=" digest.hmac_sha1_base64("<AccessKeySecret>", if(req.method == "HEAD", "GET", req.method) LF LF LF req.http.Date LF "/<OSS bucket name>" req.url.path) "&" "Expires=" var.ali_expires

    <AccessKeyId><AccessKeySecret><OSS bucket name> を先ほど収集した情報に置き換えます。例:

    req.url.path "?" "OSSAccessKeyId=AOSSdecafbad" "&" "Signature=" urlencode(digest.hmac_sha1_base64("AOSSdeadbeef", if(req.method == "HEAD", "GET", req.method) LF LF LF req.http.Date LF "/test123" req.url.path)) "&" "Expires=" var.ali_expires
  4. Create をクリックします。Content ページに新規認可ヘッダーが表示されます。

  5. Activate をクリックして設定への変更をデプロイします。

OSS のプライベートコンテンツを使用するために VCL スニペットで Fastly のセットアップ

VCL スニペットでこの設定を行い、優先順位を 20に設定します。

1declare local var.ali_bucket STRING;
2declare local var.ali_region STRING;
3declare local var.ali_access_key_id STRING;
4declare local var.ali_access_key_secret STRING;
5declare local var.ali_expires INTEGER;
6declare local var.ali_canon STRING;
7declare local var.ali_sig STRING;_
8set var.ali_bucket = "test123";
9set var.ali_region = "oss-cn-beijing";
10set var.ali_access_key_id = "decafbad";
11set var.ali_access_key_secret = "deadbeef";
12set var.ali_expires = std.atoi(now.sec);
13set var.ali_expires += 60;
14set req.http.Host = var.ali_bucket "." + var.ali_region + ".aliyuncs.com";
15set req.http.Date = var.ali_expires;
16set var.ali_canon = if(req.method == "HEAD", "GET", req.method) LF LF LF
17 req.http.Date LF "/" var.ali_bucket req.url.path;
18set var.ali_sig = digest.hmac_sha1_base64(var.alibaba_access_key_secret, var.ali_canon);
19set req.url = req.url.path;
20set req.url = querystring.set(req.url, "OSSAccessKeyId", var.alibaba_access_key_id);
21set req.url = querystring.set(req.url, "Signature", var.ali_sig);
22set req.url = querystring.set(req.url, "Expires", var.ali_expires);

このページでは、サードパーティが提供するサービスとの統合について説明しています。詳細については、統合に関する注意事項をご覧ください。


翻訳についての注意事項
このガイドは役に立ちましたか?

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシー利用規約が適用されます。