Object Storage Service (OSS) は、バケットのデフォルトドメイン名を使用して、バケットにアップロードされたオブジェクトのURLを生成します。 ブラウザからURLを使用してオブジェクトにアクセスすると、オブジェクトがダウンロードされます。 ブラウザからのオブジェクトアクセス時にオブジェクトをプレビューする場合は、カスタムドメイン名をバケットにマッピングし、カスタムドメインを使用してバケット内のオブジェクトにアクセスする必要があります。 カスタムドメイン名をバケットにマッピングしても、デフォルトドメイン名を使用してバケットにアクセスできます。
前提条件
バケット作成についての 詳細は、「バケットの作成」をご参照ください。
ルートドメイン名が登録されています。 Alibaba Cloudに登録されていないドメイン名をバケットにマッピングできます。 ドメイン名がない場合は、Alibaba Cloud Domainsサービスプラットフォームを使用して登録できます。 詳細については、「Alibaba Cloudでのドメイン名の登録」をご参照ください。
ドメイン名のマッピング先のバケットが中国本土にあり、Alibaba Cloudアカウントの実名検証が完了している場合、ドメイン名のインターネットコンテンツプロバイダ (ICP) 申請が取得されます。 ドメイン名のICP申請を申請し、Alibaba Cloudアカウントの実名認証を完了する方法の詳細については、「概要」と「Alibaba Cloud国際サイトでの実名登録に関するFAQ」 (alibabacloud.com) をご参照ください。.
シナリオ
オブジェクトプレビュー: バケットのカスタムドメイン名を使用してブラウザからバケット内のオブジェクトにアクセスする場合、OSSはオブジェクトのダウンロードを強制するレスポンスヘッダーを追加しません。 このようにして、オブジェクトはコンテンツプレビュー用にブラウザに直接表示されます。
ブランドID: カスタムドメイン名は、一貫したブランドIDを維持し、顧客の信頼を構築するのに役立ちます。
ドメインブロックバイパス: 一部のアプリケーションまたはプラットフォームは、デフォルトのバケットドメイン名をブロックする場合があります。 この場合、カスタムドメイン名をバケットにマッピングして、バケットへのアクセスを維持できます。
使いやすさ: カスタムバケットドメイン名は、通常、デフォルトのドメイン名よりも覚えやすく、リソースへのアクセスと共有がより簡単でユーザーフレンドリーになります。
ユーザーエクスペリエンスの最適化: カスタムドメイン名は、ユーザーがリソースリクエストをより迅速に開始するのに役立つユーザーフレンドリーなアドレスです。 Alibaba Cloud CDNと一緒にカスタムドメイン名を使用して、コンテンツの配信とダウンロードを高速化することもできます。 これにより、レイテンシが減少し、ユーザーエクスペリエンスが向上します。
URLの可用性: バケットのカスタムドメイン名は、リソースがバケット内の異なるパスに移動された場合でも、バケット内のリソースにアクセスするための一貫した方法を提供します。
背景情報
バケットのデフォルトドメイン名またはOSS高速化ドメイン名を使用してバケット内のオブジェクトにアクセスする場合、オブジェクトはデフォルトでダウンロードされます。 カスタムドメイン名を使用してバケット内のオブジェクトにアクセスする場合、デフォルトでプレビューが提供されます。
デフォルトドメイン名またはOSS高速化ドメイン名を使用したアクセス
デフォルトのバケットドメイン名を使用して、ブラウザからバケット内のWebサイトファイルまたは画像にアクセスするリクエストが行われた場合<bucketName>.oss-<regionI d>.aliyuncs.com
) またはOSS高速化ドメイン名 (<bucketNam e>.oss-accelerate.aliyuncs.com
) 、OSSには、x-oss-force-download: true
とコンテンツ-処分: 添付ファイル
レスポンスのヘッダーを使用して、セキュリティを確保します。 ブラウザはレスポンス内のContent-Disposition: attachment
ヘッダーを検出し、オブジェクトを強制的にダウンロードします。 次の図にプロセスを示します。
デフォルトドメイン名またはOSS高速化ドメイン名を使用するアクセス要求での強制ダウンロードの詳細については、「付録: 強制ダウンロードのためにトリガーされるx-oss-ecルール」をご参照ください。
カスタムドメイン名を使用したアクセス
登録済みドメイン名のカスタムサブドメインをバケットにマップする場合、カスタムサブドメインを使用して、ブラウザからバケット内のオブジェクトにアクセスできます。 この場合、OSSはレスポンスに強制ダウンロードを指定するヘッダーを含めません。 ブラウザは、応答のContent-Disposition
ヘッダーに値が指定されていないことを検出し、ヘッダーをinline
に設定します。 次の図にプロセスを示します。
制限事項
漢字を含むカスタムドメイン名をバケットにマップすることはできません。
各ドメイン名は1つのバケットにのみマッピングできます。
各バケットは、最大100個のドメイン名にマッピングできます。
OSSコンソールでは、ワイルドカードドメイン名をバケットにマップすることはできません。 たとえば、アスタリスク (*) で始まるドメイン名をバケットにマッピングすることはできません。 アスタリスク (*) で始まるドメイン名をバケットにマップすると、ドメイン名のすべてのサブドメインがバケットを指します。 Alibaba Cloud CDNを使用してバケットへのアクセスを高速化する場合、ワイルドカードドメイン名をバケットにマッピングできます。 ただし、ドメイン名はOSSコンソールに表示されません。
手順
手順1: カスタムドメイン名のマッピング
カスタムドメイン名をバケットにマッピングする手順は、所有者アカウントとドメインレジストラによって異なります。
でドメイン名のレジストラを照会できます。 WHOIS。
Alibaba Cloud DNSコンソールで、ドメイン名が現在のAlibaba Cloudアカウントに属しているかどうかを確認できます。
現在のAlibaba Cloudアカウントを使用して登録されたカスタムドメイン名のマップ
現在のAlibaba Cloudアカウントを使用して登録されたカスタムドメイン名をマップするには、次の手順を実行します。
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションウィンドウで、バケットの設定 > ドメイン名管理 を選択します。
[ドメイン名] ページで、カスタムドメイン名のマッピング をクリックします。
カスタムドメイン名のマッピング パネルで、
static.example.com
などのドメイン名を入力し、[確認] をクリックします。CNAMEレコードを自動的に追加する をオンにします。
Alibaba Cloud DNSは、カスタムドメイン名をバケットのパブリックドメイン名に指定するCNAMEレコードを自動的に追加します。
説明CNAMEレコードを自動的に追加する をオンにしない場合は、Alibaba Cloud DNSコンソールでカスタムドメイン名のCNAMEレコードを手動で追加する必要があります。
別のAlibaba Cloudアカウントを使用して登録されたカスタムドメイン名のマップ
Alibaba Cloudアカウントaを使用して登録されたカスタムドメイン名をAlibaba CloudアカウントBのバケットにマップするには、次の手順を実行します。
Alibaba CloudアカウントBを使用して、TXTレコードのホスト名と値を取得します。
にログインします。OSSコンソール.
左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションウィンドウで、バケットの設定 > ドメイン名管理 を選択します。
[ドメイン名] ページで、カスタムドメイン名のマッピング をクリックします。
カスタムドメイン名のマッピング パネルで、[ドメイン名] フィールドにバケットにマップするドメイン名 (
static.example.com
など) を入力し、[ホスト名] と [レコード値] をコピーします。重要TXTレコードをコピーした後、ドメイン名を送信するまで、カスタムドメイン名のマッピング パネルを閉じないでください。 カスタムドメイン名のマッピング パネルを閉じると、TXTレコードは無効になります。 その結果、後続のドメイン所有権検証は失敗する。
Alibaba CloudアカウントAを使用してTXTレコードを追加します。
Alibaba Cloud DNS コンソールにログオンします。
[ドメイン名の解決] ページで、マップするドメイン名を見つけ、[操作] 列の [DNS設定] をクリックします。
[DNS設定] タブで、[DNSレコードの追加] をクリックします。 [DNSレコードの追加] パネルで、次の表に示すパラメーターを設定します。
パラメーター
説明
例
レコードタイプ
TXTを選択します。
TXT
ホスト名
Alibaba CloudアカウントBを使用して以前に記録されたTXTレコードのホスト名を入力します。
_dnsauth
DNSリクエストソース
ドメインの解決に使用するDNSラインを選択します。 DNSシステムが最適な行を自動的に選択できるようにするには、このパラメーターに [デフォルト] を選択することを推奨します。
デフォルト
レコード値
Alibaba CloudアカウントBを使用して以前に記録されたTXTレコードのCnameTokenを入力します。
b0d777f7ccddeae93358d908ed59 ****
TTL期間
レコードの更新間隔を選択します。 デフォルト値を維持します。
説明TTL設定が有効になるまでには一定の遅延があります。
10 分
[OK] をクリックします。
Alibaba CloudアカウントBでOSSコンソールにログインし、カスタムドメイン名のマッピング パネルに移動します。 ドメイン名の所有権の確認 をクリックします。
Alibaba CloudアカウントAを使用してCNAMEレコードを追加します。
[ドメイン名解決] ページでドメイン名を見つけ、[操作] 列の [DNS設定] をクリックします。
[DNS設定] タブで、[DNSレコードの追加] をクリックします。 [DNSレコードの追加] パネルで、次の表に示すパラメーターを設定します。
パラメーター
説明
例
レコードタイプ
CNAMEを選択します。
CNAME
ホスト名
ドメイン名のプレフィックスに基づいてホスト名を指定します。
example.com
などのルートドメインの場合は、@ を入力します。サブドメインの場合は、サブドメインのプレフィックスを入力します。 たとえば、サブドメインが
static.example.com
の場合は、staticと入力します。
static
DNSリクエストソース
ドメインの解決に使用するDNSラインを選択します。 DNSシステムが最適な行を自動的に選択できるようにするには、このパラメーターに [デフォルト] を選択することを推奨します。
デフォルト
レコード値
バケットのパブリックドメイン名を入力します。 バケットのドメイン名は、<bucketname>.<endpoint> 形式です。 異なるリージョンのパブリックエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
examplebucket.oss-cn-hangzhou.aliyuncs.com
TTL期間
レコードの更新間隔を選択します。 デフォルト値を維持します。
説明TTL設定が有効になるまでには一定の遅延があります。
10 分
[OK] をクリックします。
Alibaba Cloudアカウントを使用して登録されていないカスタムドメイン名をマップする
別のドメインレジストラに登録されているカスタムドメイン名をマップするには、次の手順を実行します。
OSSコンソールで、ホスト名と値をTXTレコードとして生成します。
にログインします。OSSコンソール.
左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションウィンドウで、バケットの設定 > ドメイン名管理 を選択します。
[ドメイン名] ページで、カスタムドメイン名のマッピング をクリックします。
カスタムドメイン名のマッピング パネルで、マップするカスタムドメイン名 (
static.example.com
など) を入力し、[ホスト名] と [レコード値] をコピーします。重要TXTレコードをコピーした後、ドメイン名を送信するまで、カスタムドメイン名のマッピング パネルを閉じないでください。 カスタムドメイン名のマッピング パネルを閉じると、TXTレコードは無効になります。 その結果、後続のドメイン所有権検証は失敗する。
ドメインレジストラのDNSプラットフォームで、次の表に示すパラメーターを使用してTXTレコードを追加します。
パラメーター
説明
例
レコードタイプ
TXTを選択します。
TXT
ホスト名
ドメインレジストラのDNSプラットフォームの要件に基づいて、OSSから取得したホスト名を入力します。
_dnsauth
値
以前にOSSから記録されたTXTレコードのCnameTokenを入力します。
b0d777f7ccddeae93358d908ed59 ****
OSSコンソールの カスタムドメイン名のマッピング パネルに戻ります。 ドメイン名の所有権の確認 をクリックします。
ドメインレジストラのDNSプラットフォームで、次の表に示すパラメーターを使用してCNAMEレコードを追加します。
パラメーター
説明
例
レコードタイプ
CNAMEレコードタイプを指定します。
CNAME
ホスト名
ドメイン名のプレフィックスに基づいてホスト名を指定します。
example.com
などのルートドメインの場合は、@ を入力します。サブドメインの場合は、サブドメインのプレフィックスを入力します。 たとえば、サブドメインが
static.example.com
の場合は、staticと入力します。
static
値
バケットのパブリックドメイン名を入力します。 バケットのドメイン名は、<bucketname>.<endpoint> 形式です。 異なるリージョンのパブリックエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
examplebucket.oss-cn-hangzhou.aliyuncs.com
手順2: ドメイン名マッピングの確認
カスタムドメイン名をデフォルトのバケットドメインにマッピングした後、nslookup
またはdig
コマンドを実行してCNAME解決を確認します。 CNAMEがバケットのパブリックドメイン名であることを出力が示す場合、CNAMEレコードが有効になります。
nslookup
バケットにマップしたカスタムドメイン名を使用して、次のコマンドでe example.comを再生し、コマンドを実行します。
nslookup -type=CNAM E example.com
サンプル成功応答:
掘る
バケットにマップしたカスタムドメイン名を使用して、次のコマンドでe example.comを再生し、コマンドを実行します。
dig CNAM E example.com
サンプル成功応答:
手順3: カスタムドメイン名を使用してバケットにアクセスする
ドメインマッピングが有効になったら、カスタムドメイン名を使用してHTTP経由でバケット内のオブジェクトにアクセスできます。
HTTPプロトコルは、送信中のデータのセキュリティを保証することができない。 データは、第三者によって傍受または改ざんされ得る。 データのセキュリティを強化するために、HTTPSプロトコルを使用してバケット内のオブジェクトにアクセスすることを強くお勧めします。 詳細については、「HTTPSアクセスの設定」をご参照ください。
バケットにオブジェクトを 1 つアップロードします。
詳細は、「簡易アップロード (Simple upload)」をご参照ください。
オブジェクトのURLを取得します。
一時オブジェクトURLの取得
オブジェクトの一時URLを取得するには、次の手順を実行します。
オブジェクトのアクセス制御リスト (ACL) をprivateに設定します。
詳細については、「オブジェクトACL」をご参照ください。
プライベートオブジェクトのURLの形式は、
http:// YourDomain/ObjectName? 署名パラメーター
です。 次のいずれかの方法を使用して、プライベートオブジェクトURLを取得し、URLの有効期間を指定できます。
OSS コンソールの使用
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、プライベートオブジェクトが保存されているバケットの名前をクリックします。
左側のナビゲーションツリーで、
を選択します。オブジェクトページで、オブジェクトの名前をクリックします。
[詳細の表示] パネルで、バケットにマッピングしたカスタムドメイン名を [カスタムドメイン名] フィールドで選択し、他のパラメーターのデフォルト設定を保持してから、[オブジェクトURLのコピー] をクリックします。
ossbrowser の使用
ossbrowserを使用して、OSSコンソールで実行できるのと同じオブジェクトレベルの操作を実行できます。 ossbrowserの画面上の指示に従って、署名付きURLを取得できます。 詳細については、「ossbrowserの使用」をご参照ください。
OSS SDKの使用
カスタムドメイン名を使用してOSSClientインスタンスを作成します。
OSSClientインスタンスを使用してGeneratePresignedUrl操作を呼び出し、オブジェクトの署名付きURLを取得します。
さまざまなプログラミング言語のサンプルコードについては、「URLにV1署名を含める」をご参照ください。
Java
// Specify the custom domain name. String endpoint = "yourEndpoint"; // Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured. EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); // Create ClientBuilderConfiguration and change the default values of the parameters based on your business requirements. ClientBuilderConfiguration conf = new ClientBuilderConfiguration(); // Specify whether to use CNAME. CNAME is used to map the custom domain name to the bucket. conf.setSupportCname(true); // Create an OSSClient instance. OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider, conf); // Shut down the OSSClient instance. ossClient.shutdown();
PHP
<?php if (is_file(__DIR__ . '/../autoload.php')) { require_once __DIR__ . '/../autoload.php'; } if (is_file(__DIR__ . '/../vendor/autoload.php')) { require_once __DIR__ . '/../vendor/autoload.php'; } use OSS\Credentials\EnvironmentVariableCredentialsProvider; use OSS\OssClient; use OSS\CoreOssException; // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. $provider = new EnvironmentVariableCredentialsProvider(); // Specify the custom domain name. Example: http://example.com. $endpoint = "http://example.com"; try { $config = array( "provider" => $provider, "endpoint" => $endpoint, "cname" => true ); $ossClient = new OssClient($config); } catch (OssException $e) { print $e->getMessage(); }
Node.js
const OSS = require('ali-oss') const client = new OSS({ // Use a custom domain name as the endpoint of a bucket to access the bucket. endpoint: 'http://img.example.com', // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, cname: true });
Python
# -*- coding: utf-8 -*- import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider # Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured. auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # Specify the custom domain name that is mapped to the bucket. Example: example.com. cname = 'http://example.com' # Specify the name of the bucket and set is_cname to True to enable CNAME. CNAME is used to map a custom domain name to a bucket. bucket = oss2.Bucket(auth, cname, 'examplebucket', is_cname=True)
Browser.js
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script> </head> <body> <script> const client = new OSS({ // Enter a custom domain name. Example: example.com. endpoint: "example.com", // Specify the temporary AccessKey pair obtained from Security Token Service (STS). The AccessKey pair consists of an AccessKey ID and an AccessKey secret. accessKeyId: "yourAccessKeyId", accessKeySecret: "yourAccessKeySecret", // Specify the security token obtained from STS. stsToken: 'yourSecurityToken', // Specify the name of the bucket. Example: examplebucket. bucket: "examplebucket", cname: true, }); </script> </body> </html>
.NET
Aliyun.OSSを使用した
using Aliyun.OSS; using Aliyun.OSS.Common; // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID"); var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET"); // Specify the custom domain name. const string endpoint = "yourDomain"; // Create a ClientConfiguration instance and modify the default parameters based on your requirements. var conf = new ClientConfiguration(); // Specify that a CNAME can be used as an endpoint to create the OssClient instance. A CNAME record specifies the mapping relationship between a custom domain name and a bucket. conf.IsCname = true; // Create an OSSClient instance. var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
Android
// Specify the custom domain name. String endpoint = "yourEndpoint"; // Specify the temporary AccessKey pair obtained from STS. String accessKeyId = "yourAccessKeyId"; String accessKeySecret = "yourAccessKeySecret"; // Specify the security token obtained from STS. String securityToken = "yourSecurityToken"; OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken); // Create an OSSClient instance. OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
Go
package main import ( "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "os" ) func main(){ // Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Set yourEndpoint to the custom domain name of the bucket. // Set oss.UseCname to true to enable CNAME. CNAME is used to map a custom domain name to a bucket. client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider),oss.UseCname(true)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Printf("client:%#v\n", client) }
iOS
// Specify a custom domain name. NSString *endpoint = @"yourEndpoint"; // Specify the temporary AccessKey pair obtained from STS. An AccessKey pair consists of an AccessKey ID and an AccessKey secret. NSString *accessKeyId = @"yourAccessKeyId"; NSString *accessKeySecret = @"yourAccessKeySecret"; // Specify the security token obtained from STS. NSString *securityToken = @"yourSecurityToken"; id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken]; OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider];
C++
#include <alibabacloud/oss/OssClient.h> using namespace AlibabaCloud::OSS; int main(void) { /* Initialize the information about the account that is used to access OSS. */ /* Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */ std::string Endpoint = "yourEndpoint"; /* Initialize resources, such as network resources. */ InitializeSdk(); ClientConfiguration conf; /* Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. */ auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>(); OssClient client(Endpoint, credentialsProvider, conf); /* Release resources, such as network resources. */ ShutdownSdk(); return 0; }
C
#include "oss_api.h" #include "aos_http_io.h" # Specify the custom domain name. */ const char *endpoint = "yourCustomEndpoint"; void init_options(oss_request_options_t *options) { options->config = oss_config_create(options->pool); /* Use a char* string to initialize aos_string_t. */ aos_str_set(&options->config->endpoint, endpoint); /* Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. */ aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID")); aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET")); /* Enable CNAME and map the custom domain name to your bucket. */ options->config->is_cname = 1; options->ctl = aos_http_controller_create(options->pool, 0); } int main() { aos_pool_t *p; oss_request_options_t *options; /* Initialize global variables. You need to initialize global variables only once in the program lifecycle. */ if (aos_http_io_initialize(NULL, 0) != AOSE_OK) { return -1; } /* Initialize the memory pool and options. */ aos_pool_create(&p, NULL); options = oss_request_options_create(p); init_options(options); /* The logic code. In this example, the logic code is omitted. */ /* Release the memory pool. This operation releases the memory resources allocated for the request. */ aos_pool_destroy(p); /* Release global resources that are allocated. You need to release global resources only once in the program lifecycle. */ aos_http_io_deinitialize(); return 0; }
Ruby
require 'aliyun/oss' client = Aliyun::OSS::Client.new( # Specify the custom domain name that you want to map to the bucket. endpoint: 'http://example.com', # Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. access_key_id: ENV['OSS_ACCESS_KEY_ID'], access_key_secret: ENV['OSS_ACCESS_KEY_SECRET'] cname: true) )
ossutil の使用
設定ファイルを使用して、デフォルトのバケット名とカスタムドメイン名の間のマッピングを設定します。 詳細については、「カスタムドメイン名の指定」をご参照ください。
signコマンドを実行して、バケット内のオブジェクトの署名付きURLを生成します。 詳細は、「sign」をご参照ください。
永続オブジェクトURLの取得
警告有効期限が切れない永続オブジェクトURLを取得するには、オブジェクトのACLをpublic-readに設定します。 オブジェクトのACLをpublic-readに設定すると、すべてのユーザーがインターネット経由でオブジェクトにアクセスできます。これにより、データリークやOSSの高額な請求が発生する可能性があります。 一時的なURLを使用することを推奨します。
オブジェクトの永続URLを取得するには、次の手順を実行します。
オブジェクトのACLをpublic-readに設定します。
詳細については、「オブジェクトACL」をご参照ください。
カスタムドメイン名とオブジェクト名を連結してオブジェクトURLを生成します。
パブリック読み取りオブジェクトのURLに署名情報を含める必要はありません。 パブリック読み取りオブジェクトのURLの形式は、
http:// YourDomainName/ObjectName
です。たとえば、中国 (杭州) リージョンのexamplebucketバケットにexample.jpgオブジェクトが含まれており、o static.example.comにマップされている場合、オブジェクトのURLが
https://static.example.com/example.jpg
されます。
オブジェクトURLを使用して、ブラウザからオブジェクトにアクセスします。
次に何をすべきか
HTTPSアクセスの設定
HTTPSプロトコルは、HTTPに基づいてSSLプロトコルとTLSプロトコルを統合し、データ送信の強力な暗号化保護を提供します。 カスタムドメイン名を使用してHTTPS経由でマップされたバケット内のオブジェクトにアクセスするには、SSL証明書を購入し、OSSでSSL証明書をホストする必要があります。 詳細については、「カスタムドメイン名の証明書のホスト」をご参照ください。
Alibaba Cloud CDNを使用したOSSへのアクセスの高速化
Alibaba Cloud CDNを使用して、バケットのカスタムドメインをCDN高速化ドメイン名にマッピングすることで、バケットへのアクセスを高速化できます。 Alibaba Cloud CDNに基づくアクセスアクセラレーションは、アクセス速度と安定性の向上に役立ちます。 詳細については、「Map accelerated domain names」をご参照ください。
hotlink保護の設定
ホットリンクからバケットを保護するために、リファラーホワイトリストまたはブラックリストを設定し、空のリファラーヘッダーを持つリクエストがバケットへのアクセスを管理することを許可するかどうかを指定できます。 詳細については、「ホットリンク保護」をご参照ください。
国境を越えたデータ伝送を加速
クロスボーダーアクセスの速度と安定性を向上させるために、バケットのカスタムドメイン名をバケットのOSS高速化ドメイン名にマッピングできます。 詳細については、「Map accelerated domain names」をご参照ください。
静的 Web サイトホスティングの設定
静的Webサイトをバケットでホストし、バケットのカスタムドメイン名を使用してWebサイトにアクセスする場合は、静的Webサイトホスティングを設定する必要があります。 詳細については、「概要」をご参照ください。
よくある質問
既存のホスト名がCNAMEレコードで使用されているホスト名と同じであるため、CNAMEレコードを自動的に追加できなかったことを示すエラーが表示された場合はどうすればよいですか。
カスタムドメイン名がすでに別のバケットにマップされている場合はどうすればよいですか。
NeedVerifyDomainOwnership
カスタムドメイン名を使用してブラウザからオブジェクトにアクセスすると、オブジェクトをプレビューできないのはなぜですか。
WAFに接続され、コンテンツを含むドメイン名をマップできますか?
カスタムドメイン名がバケットにマッピングされた後、マッピング前に生成されたオブジェクトURLを使用して、バケット内のオブジェクトにアクセスできますか?
カスタムドメイン名を使用したアクセスは、インターネット経由のアクセスと同じですか?
カスタムバケットドメイン名を使用してオブジェクトにアクセスするときに、オブジェクトがダウンロードされるようにするにはどうすればよいですか。
カスタムドメイン名をマップ解除するにはどうすればよいですか?
関連するAPI操作
ドメイン所有権検証用のCNAMEトークンを作成するために呼び出すことができるAPI操作の詳細については、「CreateCnameToken」をご参照ください。
ドメイン所有権の検証のためにCNAMEトークンを照会するために呼び出すことができるAPI操作の詳細については、「GetCnameToken」をご参照ください。
カスタムドメイン名をバケットにマップするために呼び出すことができるAPI操作の詳細については、「PutCname」をご参照ください。
バケットのドメイン名を指すすべてのCNAMEレコードを照会するために呼び出すことができるAPI操作の詳細については、「ListCname」をご参照ください。
バケットのドメイン名を指すCNAMEレコードを削除するために呼び出すことができるAPI操作の詳細については、「DeleteCname」をご参照ください。
TXTレコードまたはCNAMEレコードを追加するために呼び出すことができるAPI操作の詳細については、「AddDomainRecord」をご参照ください。