Object Storage Service (OSS) は、バケットのデフォルトドメイン名を使用して、バケットにアップロードされたオブジェクトのURLを生成します。 ブラウザからURLを使用してオブジェクトにアクセスすると、オブジェクトがダウンロードされます。 ビジネスアプリケーションで、バケットのデフォルトドメイン名を非表示にするか、ブラウザからのオブジェクトアクセス時にオブジェクトプレビューを有効にする必要がある場合は、カスタムドメイン名をバケットにマップし、カスタムドメインを使用してバケット内のオブジェクトにアクセスする必要があります。 カスタムドメイン名をバケットにマッピングしても、デフォルトドメイン名を使用したバケットへのアクセスには影響しません。
前提条件
バケット作成についての 詳細は、「バケットの作成」をご参照ください。
ルートドメイン名が登録されています。 Alibaba Cloudに登録されていないドメイン名をバケットにマッピングできます。 ドメイン名がない場合は、Alibaba Cloudドメイン名で登録できます。 詳細については、「Alibaba Cloudでのドメイン名の登録」をご参照ください。
ドメイン名のマッピング先のバケットが中国本土にある場合は、ドメイン名に対してICP (Internet Content Provider) の申請が取得されます。 ICP申請が完了していないドメイン名は、Alibaba Cloud ICP申請システムを使用してマッピングできます。 ドメイン名のICP申請を申請していない場合は、Alibaba Cloud ICP申請システムを使用してICP申請を申請できます。 詳細については、「ICPファイリングアプリケーションの概要」をご参照ください。
シナリオ
オブジェクトプレビュー: バケットのカスタムドメイン名を使用してブラウザからバケット内のオブジェクトにアクセスする場合、OSSはオブジェクトのダウンロードを強制するレスポンスヘッダーを追加しません。 このようにして、オブジェクトはコンテンツプレビュー用にブラウザに直接表示されます。
ブランドID: カスタムドメイン名は、一貫したブランドIDを維持し、顧客の信頼を構築するのに役立ちます。
ドメインブロックバイパス: 一部のアプリケーションまたはプラットフォームは、デフォルトのバケットドメイン名をブロックする場合があります。 この場合、カスタムドメイン名をバケットにマッピングして、バケットへのアクセスを維持できます。
使いやすさ: カスタムバケットドメイン名は、通常、デフォルトのドメイン名よりも覚えやすく、リソースへのアクセスと共有がより簡単でユーザーフレンドリーになります。
ユーザーエクスペリエンスの最適化: カスタムドメイン名は、ユーザーがリソースリクエストをより迅速に開始するのに役立つユーザーフレンドリーなアドレスです。 Alibaba Cloud CDNと一緒にカスタムドメイン名を使用して、コンテンツの配信とダウンロードを高速化することもできます。 これにより、レイテンシが減少し、ユーザーエクスペリエンスが向上します。
URLの可用性: バケットのカスタムドメイン名は、リソースがバケット内の異なるパスに移動された場合でも、バケット内のリソースにアクセスするための一貫した方法を提供します。
背景情報
バケットまたはアクセラレーションエンドポイントのデフォルトドメイン名を使用してバケット内のオブジェクトにアクセスする場合、オブジェクトはデフォルトでダウンロードされます。 カスタムドメイン名を使用してバケット内のオブジェクトにアクセスする場合、デフォルトでプレビューが提供されます。
デフォルトドメイン名またはOSS高速化ドメイン名を使用したアクセス
デフォルトのバケットドメイン名 (<bucketName>.oss-<regionI d>.aliyuncs.com
) またはOSSアクセラレーションドメイン名 (<bucketNam e>.oss-accelerate.aliyuncs.com
) を使用して、ブラウザからバケット内のWebサイトファイルまたは画像にアクセスするリクエストが行われた場合、OSSにはx-oss-force-download: true
およびContent-Disposition: セキュリティ上の懸念に対するレスポンスの添付ファイル
のヘッダー。 ブラウザはレスポンス内のContent-Disposition: attachment
ヘッダーを検出し、オブジェクトを強制的にダウンロードします。 次の図にプロセスを示します。
デフォルトドメイン名またはOSS高速化ドメイン名を使用するアクセス要求での強制ダウンロードの詳細については、付録: x-oss-ecルールが強制ダウンロードのためにトリガーされるを参照してください。
カスタムドメイン名を使用したアクセス
登録済みドメイン名のカスタムサブドメインをバケットにマップする場合、カスタムサブドメインを使用して、ブラウザからバケット内のオブジェクトにアクセスできます。 この場合、OSSは、レスポンスに強制ダウンロードを指定するヘッダーを含めません。 ブラウザは、応答のContent-Disposition
ヘッダーに値が指定されていないことを検出し、デフォルトでヘッダーをインライン
に設定します。これにより、オブジェクトのダウンロードではなく、ブラウザでオブジェクトコンテンツのプレビューが指定されます。 次の図にプロセスを示します。
制限
ドメイン名マッピングは、漢字を含むドメイン名をサポートしていません。
各ドメイン名は1つのバケットにのみマッピングできます。
各バケットは、最大100個のドメイン名にマッピングできます。
OSSコンソールでは、ワイルドカードドメイン名をバケットにマップすることはできません。 たとえば、アスタリスク (*) で始まるドメイン名をバケットにマッピングすることはできません。 このワイルドカードドメイン名設定により、ドメイン名のすべてのサブドメインがバケットを指します。 Alibaba Cloud CDNを使用してバケットへのアクセスを高速化する場合、ワイルドカードドメイン名をバケットにマッピングできます。 ただし、ドメイン名はOSSコンソールに表示されません。
手順
手順1: カスタムドメイン名のマッピング
カスタムドメイン名をバケットにマッピングする手順は、所有者アカウントとドメインレジストラによって異なります。
でドメイン名のレジストラを照会できます。 WHOIS。
Alibaba Cloud DNSコンソールで、ドメイン名が現在のAlibaba Cloudアカウントに属しているかどうかを確認できます。
現在のAlibaba Cloudアカウントを使用して登録されたカスタムドメイン名のマップ
現在のAlibaba Cloudアカウントを使用して登録されているカスタムドメイン名をマップするには、次の手順を実行します。
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションウィンドウで、バケットの設定 > ドメイン名管理 を選択します。
[ドメイン名] ページで、カスタムドメイン名のマッピング をクリックします。
カスタムドメイン名のマッピング パネルで、バケットにマップするドメイン名を [ドメイン名] フィールドに入力し、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
ホスト名
以前に記録されたTXTレコードのホスト名を入力します。
**** 59e5-4bbd-aef4-8e401dc13a0a.static
DNSリクエストソース
ドメインの解決に使用するDNSラインを選択します。 DNSシステムが最適な行を自動的に選択できるようにするには、このパラメーターに [デフォルト] を選択することを推奨します。
デフォルト
レコード値
以前に記録されたTXTレコードのレコード値を入力します。
oss-domain-verfication=17ca4f6a1247f459fb310 ****
TTL期間
レコードをキャッシュに保持する期間を選択します。 デフォルト値を維持します。
説明TTL設定が有効になるまでには一定の遅延があります。
10 分
[OK] をクリックします。
OSSコンソールの カスタムドメイン名のマッピング パネルに戻ります。 TXTレコードを追加したをクリックしTXT検証ファイルを追加しました。投稿を続行します。.
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コンソールにログインします。
左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションウィンドウで、バケットの設定 > ドメイン名管理 を選択します。
[ドメイン名] ページで、カスタムドメイン名のマッピング をクリックします。
カスタムドメイン名のマッピング パネルで、マップするカスタムドメイン名を入力し、ドメイン名の所有権の検証 をクリックし、[ホスト名] と [値] をコピーします。
重要TXTレコードをコピーした後、ドメイン名を送信するまで、カスタムドメイン名のマッピング パネルを閉じないでください。 カスタムドメイン名のマッピング パネルを閉じると、TXTレコードの値が無効になります。 その結果、後続のドメイン所有権検証は失敗する。
ドメインプロバイダーのDNSプラットフォームで、次の表に示す設定を使用してTXTレコードを追加します。
項目
説明
例
レコードタイプ
TXTレコードタイプを指定します。
TXT
ホスト名
以前に記録されたホスト名を入力します。
**** 59e5-4bbd-aef4-8e401dc13a0a.static
値
以前に記録されたTXTレコードの値を入力します。
oss-domain-verfication=17ca4f6a1247f459fb310 ****
OSSコンソールの カスタムドメイン名のマッピング パネルに戻ります。 TXTレコードを追加したをクリックしTXT検証ファイルを追加しました。投稿を続行します。.
ドメインプロバイダーの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経由でバケット内のオブジェクトにアクセスできます。
バケットにオブジェクトを 1 つアップロードします。
詳細は、「簡易アップロード (Simple upload)」をご参照ください。
オブジェクトURLを取得します。
一時オブジェクトURLの取得
オブジェクトの一時URLを取得するには、次の手順を実行します。
オブジェクトのアクセス制御リスト (ACL) をprivateに設定します。
詳細については、「オブジェクトACL」をご参照ください。
指定された期間内にアクセス可能なプライベートオブジェクトURLを取得するには、次の方法を使用します。 プライベートオブジェクトのURLは、
http:// YourDomain/ObjectName?SignatureInformation
形式に従います。
OSS コンソールの使用
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、プライベートオブジェクトが保存されているバケットの名前をクリックします。
左側のナビゲーションツリーで、
を選択します。オブジェクトページで、オブジェクトの名前をクリックします。
[詳細の表示] パネルで、バケットにマッピングしたカスタムドメイン名を [カスタムドメイン名] フィールドで選択し、他のパラメーターのデフォルト設定を保持してから、[オブジェクトURLのコピー] をクリックします。
ossbrowser の使用
ossbrowserを使用して、OSSコンソールで実行できるのと同じオブジェクトレベルの操作を実行できます。 ossbrowserの画面上の指示に従って、署名付きURLを取得できます。 詳細については、「ossbrowserの使用」をご参照ください。
OSS SDKの使用
カスタムドメイン名を使用してOSSClientインスタンスを作成します。
OSSClientインスタンスを使用してGeneratePresignedUrl操作を呼び出し、オブジェクトの署名付きURLを取得します。
さまざまなプログラミング言語のコードサンプルについては、「署名V1を使用した署名付きURLの作成」をご参照ください。
Java
// カスタムドメイン名を指定します。 String endpoint = "yourEndpoint"; // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。 EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); // ClientBuilderConfigurationを作成し、ビジネス要件に基づいてパラメーターのデフォルト値を変更します。 ClientBuilderConfiguration conf = new ClientBuilderConfiguration(); // CNAMEを使用するかどうかを指定します。 CNAMEは、カスタムドメイン名をバケットにマップするために使用されます。 conf.setSupportCname(true); // OSSClientインスタンスを作成します。 OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider, conf); // OSSClientインスタンスをシャットダウンします。 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'; } OSS\OssClientを使用します。OSS\Core\OssExceptionを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 $accessKeyId = getenv("OSS_ACCESS_KEY_ID"); $accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET"); // この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 $end point = "https://oss-cn-hangzhou.aliyuncs.com"; try { // trueは、CNAMEが有効であることを示します。 CNAMEが有効になっている場合、カスタムドメイン名がバケットにマップされます。 $ossClient = new OssClient($accessKeyId, $accessKeySecret, $end point, true); } catch (OssException $e) { print $e->getMessage(); }
Node.js
const OSS = require('ali-OSS ') const client = new OSS({ // バケットにアクセスするには、バケットのエンドポイントとしてカスタムドメイン名を使用します。 エンドポイント: 'http:// img.example.com '、 // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 accessKeyId: process.env.OSS_ACCESS_KEY_ID、 accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、 cname: true });
Python
# -*-コーディング: utf-8 -*- oss2のインポート oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # バケットにマップされるカスタムドメイン名を指定します。 (例:example.com)。 cname = 'http:// example.com' # バケットの名前を指定し、is_cnameをTrueに設定してCNAMEを有効にします。 CNAMEは、カスタムドメイン名をバケットにマップするために使用されます。 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> ドキュメント </title> <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script> </head> <body> <script> const client = new OSS({ // カスタムドメイン名を入力します。 (例:example.com)。 エンドポイント: "example.com" 、 // Security Token Service (STS) から取得した一時的なAccessKeyペアを指定します。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 accessKeyId: "yourAccessKeyId" 、 accessKeySecret: "yourAccessKeySecret" 、 // STSから取得したセキュリティトークンを指定します。 stsToken: 'yourSecurityToken' 、 // バケットの名前を指定します。 例: examplebucket. bucket: "examplebucket" 、 cname: true、 }); </script> </body> </html>
.NET
Aliyun.OSSを使用したAliyun.OSS.Common; を使用 // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID"); var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET"); // カスタムドメイン名を指定します。 const文字列endpoint = "yourDomain"; // ClientConfigurationインスタンスを作成します。 Modify parameters as required. var conf = new ClientConfiguration(); // CNAMEレコードを使用できることを指定します。 CNAMEレコードは、カスタムドメイン名とバケット間のマッピング関係を指定します。 conf.IsCname = true; // OSSClientインスタンスを作成します。 var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret、conf);
Android
// カスタムドメイン名を指定します。 String endpoint = "yourEndpoint"; // STSから取得した一時的なAccessKeyペアを指定します。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 文字列accessKeyId = "yourAccessKeyId"; 文字列accessKeySecret = "yourAccessKeySecret"; // STSから取得したセキュリティトークンを指定します。 文字列securityToken = "yourSecurityToken"; OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId、accessKeySecret、securityToken); // OSSClientインスタンスを作成します。 OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
Go
パッケージメイン import (import (import) "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "os" ) func main(){ // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // yourEndpointをバケットのカスタムドメイン名に設定します。 // oss.UseCnameをtrueに設定して、CNAMEを有効にします。 CNAMEは、カスタムドメイン名をバケットにマップするために使用されます。 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
// カスタムドメイン名を指定します。 NSString * endpoint = @ "yourEndpoint"; // STSから取得した一時的なAccessKeyペアを指定します。 AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。 NSString * accessKeyId = @ "yourAccessKeyId"; NSString * accessKeySecret = @ "yourAccessKeySecret"; // STSから取得したセキュリティトークンを指定します。 NSString * securityToken = @ "yourSecurityToken"; id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId: accessKeySecurityToken: securityToken]; OSSClient * client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider];
C++
#include <alibabacloud/oss/OssClient.h> 名前空間listaCloud::OSSを使用します。int main(void) { /* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */ /* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */ std::string Endpoint = "yourEndpoint"; /* ネットワークリソースなどのリソースを初期化します。 */ InitializeSdk(); ClientConfiguration conf; /* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */ auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>(); OssClientクライアント (Endpoint, credentialsProvider, conf); /* ネットワークリソースなどのリソースを解放します。 */ ShutdownSdk(); 0を返します。}
C
#include "oss_api.h" # 「aos_http_io.h」を含める # カスタムドメイン名を指定します。 * / const char * endpoint = "yourCustomEndpoint"; void init_options(oss_request_options_t * オプション) { options->config = oss_config_create(options->pool); /* char * stringを使用して、aos_string_t型のデータを初期化します。 */ aos_str_set(&options->config->endpoint, endpoint); /* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */ 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")); /* CNAMEを有効にして、カスタムドメイン名をバケットにマッピングします。 */ 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; /* グローバル変数を初期化します。 グローバル変数を初期化する必要があるのは、プログラムのライフサイクルで1回だけです。 */ if (aos_http_io_initialize(NULL, 0))! =AOSE_OK) { return -1; } /* メモリプールとオプションを初期化します。 */ aos_pool_create(&p, NULL); options = oss_request_options_create(p); init_options(options); /* ロジックコード。 この例では、論理コードは省略されている。 */ /* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */ aos_pool_destroy(p); /* 割り当てられたグローバルリソースを解放します。 グローバルリソースをリリースする必要があるのは、プログラムのライフサイクル内で1回だけです。 */ aos_http_io_deinitialize(); 0を返します。}
Ruby
'aliyun/oss 'が必要です client = Aliyun::OSS::Client.new ( # バケットにマッピングするカスタムドメイン名を指定します。 エンドポイント: 'http:// example.com '、 # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 access_key_id: ENV['OSS_ACCESS_KEY_ID '] 、 access_key_secret: ENV['OSS_ACCESS_KEY_SECRET '] cname: true) )
ossutil の使用
設定ファイルを使用して、デフォルトのバケット名とカスタムドメイン名の間のマッピングを設定します。 詳細については、「ossutilの設定」をご参照ください。
signコマンドを使用して、バケット内のオブジェクトの署名付きURLを生成します。 詳細については、「sign (署名付きオブジェクトURLの生成) 」をご参照ください。
永続オブジェクトURLの取得
警告有効期限が切れない永続オブジェクトURLを取得するには、オブジェクトのACLをpublic-readに設定する必要があります。 オブジェクトのACLをpublic-readに設定すると、すべてのユーザーがインターネット経由でオブジェクトにアクセスできます。これにより、データリークやOSSの高額な請求が発生する可能性があります。 永続的なURLよりも一時的なURLの選択を使用することを推奨します。
オブジェクトの浸透URLを取得するには、次の手順を実行します。
オブジェクトのACLをpublic-readに設定します。
詳細については、「オブジェクトACL」をご参照ください。
カスタムドメイン名とオブジェクト名を連結してオブジェクトURLを生成します。
パブリック読み取りオブジェクトのカスタムURLに署名情報を含める必要はありません。 パブリック読み取りオブジェクトのカスタムURLは、
https:// YourDomainName/ObjectName
形式です。たとえば、中国 (杭州) リージョンのexamplebucketバケットにexample.jpgオブジェクトが含まれており、o static.example.comにマップされている場合、オブジェクトのカスタムURLが
https://static.example.com/example.jpg
されます。
オブジェクトURLを使用して、ブラウザからオブジェクトにアクセスします。
次に何をすべきか
HTTPSアクセスの設定
カスタムドメイン名を使用してHTTPS経由でマップされたバケットにアクセスするには、SSL証明書をアップロードする必要があります。 詳細については、「ホストSSL証明書」をご参照ください。
CDNを使用したOSSへのアクセスの高速化
Alibaba Cloud CDNを使用して、バケットのカスタムドメインをCDN高速化ドメイン名にマッピングすることで、バケットへのアクセスを高速化できます。 Alibaba Cloud CDNに基づくアクセスアクセラレーションは、アクセス速度と安定性の向上に役立ちます。 詳細については、「Map accelerated domain names」をご参照ください。
ホットリンク保護
ホットリンクからバケットを保護するために、リファラーホワイトリストまたはブラックリストを設定し、空のリファラーヘッダーを含むリクエストを許可してバケットへのアクセスを制御するかどうかを指定できます。 詳細については、「ホットリンク保護」をご参照ください。
国境を越えたデータ伝送を加速
クロスボーダーアクセスの速度と安定性を向上させるために、バケットのカスタムドメイン名をバケットのOSS高速化ドメイン名にマッピングできます。 詳細については、「Map accelerated domain names」をご参照ください。
静的 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」をご参照ください。