Alibaba Object Storage Service

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

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

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

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

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

  2. オリジンのデータを保存するバケットを作成します。Create Bucket ウィンドウが表示されます。

    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 のユーザー作成画面

  1. OKボタンをクリックします。
  2. AccessKeyIDAccessKeySecret をコピーします。Authorization ヘッダーを作成する際には、これらが後ほど必要になります。
  3. バケットの概要に戻り、ファイルタブをクリックし、認証ボタンをクリックします。認証ユーザーのリストが表示されます。これが新しいバケットである場合、空の状態が表示されるはずです。
  4. 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 をクリックします。Content ページが表示されます。
  5. Create headerボタンをクリックします。Create a new header ページが表示されます。

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

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

Host ヘッダーの作成

  1. Create headerボタンをクリックします。Create a new 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ボタンを再度クリックし、別の新しいヘッダーを作成します。Create a header ページが表示されます。

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

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

    • NameフィールドにAuthorizationと入力します。
    • TypeメニューからRequestを選択し、ActionメニューからSetを選択します。
    • Destinationフィールドにurlと入力します。
    • Ignore if setメニューからNoを選択します。
    • Priorityフィールドに20を入力します。
  2. 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
  3. Createボタンをクリックします。Content ページに新規認可ヘッダーが表示されます。

  4. 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;_
8
9set var.ali_bucket = "test123";
10set var.ali_region = "oss-cn-beijing";
11set var.ali_access_key_id = "decafbad";
12set var.ali_access_key_secret = "deadbeef";
13set var.ali_expires = std.atoi(now.sec);
14set var.ali_expires += 60;
15
16
17set req.http.Host = var.ali_bucket "." + var.ali_region + ".aliyuncs.com";
18set req.http.Date = var.ali_expires;
19set var.ali_canon = if(req.method == "HEAD", "GET", req.method) LF LF LF
20 req.http.Date LF "/" var.ali_bucket req.url.path;
21set var.ali_sig = digest.hmac_sha1_base64(var.alibaba_access_key_secret, var.ali_canon);
22
23set req.url = req.url.path;
24set req.url = querystring.set(req.url, "OSSAccessKeyId", var.alibaba_access_key_id);
25set req.url = querystring.set(req.url, "Signature", var.ali_sig);
26set req.url = querystring.set(req.url, "Expires", var.ali_expires);

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


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

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合はお問い合わせください : support@fastly.com