OSSの内部エンドポイントを使用してObject Storage Service (OSS) リソースにアクセスする場合、生成されたトラフィックに対して料金はかかりません。 このトピックでは、ECS (Elastic Compute Service) インスタンスがOSSの内部エンドポイントを使用してOSSリソースにアクセスする方法について説明します。
ECSインスタンスは、次の方法を使用して、OSSの内部エンドポイントを使用してOSSリソースにアクセスできます。
OSSバケットと同じリージョン内にデプロイされたECSインスタンスは、内部エンドポイントを使用して、ECSインスタンスがアクセスを許可されているバケット内のリソースにアクセスできます。
バケットおよびインターネットユーザーと同じリージョンにないECSインスタンスは、ECSリバースプロキシを使用して、OSSの内部エンドポイントを使用してOSSリソースにアクセスできます。
バケットの内部エンドポイントの取得
OSS コンソールの使用
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、内部エンドポイントを取得するバケットの名前をクリックします。
左側のナビゲーションツリーで、概要 をクリックします。
ポート セクションで、バケットのエンドポイントとドメイン名を表示します。
固定フォーマットに従う
OSSバケットドメイン名の形式は、
BucketName.Endpoint
です。ここで、BucketName
はバケットの名前、Endpoint
はバケットが配置されているリージョンのエンドポイントです。 詳細は、「OSSドメイン名」をご参照ください。
同じリージョン内のECSインスタンスからのアクセス
OSSバケットと同じリージョン内にデプロイされたECSインスタンスは、内部ネットワークを使用してバケット内のリソースにアクセスできます。
URLの使用
OSSリソースへのアクセス権限を持つOSSリソースの内部URLを使用できます。 たとえば、testという名前のバケットは中国 (杭州) リージョンにあります。 バケットには、バケットのルートディレクトリに1.jpgという名前のオブジェクトが含まれており、オブジェクトのアクセス制御リスト (ACL) はパブリック読み取りです。 この場合、中国 (杭州) リージョンのすべてのECSインスタンスは、
http://test.oss-cn-hangzhou-internal.aliyuncs.com/1.jpg
を使用してオブジェクトにアクセスできます。 オブジェクトのURLをWebサイトに埋め込み、同じリージョン内のECSユーザー、または専用回線を使用して内部ネットワークに接続したユーザーにURLを提供できます。警告データのセキュリティを確保するため、OSSリソースのアクセス制御リスト (ACL) をpublic-readまたはpublic-read-writeに設定しないことを推奨します。 バケットポリシーを使用して、他のユーザーが自分の OSS リソースにアクセスすることを許可できます。 詳細については、「他のユーザーにOSSリソースへのアクセスを許可するバケットポリシーの設定」をご参照ください。
ossbrowser の使用
ossbrowserを使用してOSSリソースへのアクセス用のパラメーターを設定する場合、EndpointをOSSの内部エンドポイントに設定します。 詳細については、「ossbrowserの使用」をご参照ください。
ossutil の使用
ossutilを使用してOSSリソースへのアクセス用のパラメーターを設定する場合、EndpointをOSSの内部エンドポイントに設定します。 詳細については、「ossutil」をご参照ください。
SDK の使用
クライアントインスタンスを初期化するときは、エンドポイントをOSSの内部エンドポイントに設定します。
OSS SDK for Java
String endpoint = "http://oss-cn-hangzhou-internal.aliyuncs.com";// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 文字列accessKeyId = "<yourAccessKeyId>"; 文字列accessKeySecret = "<yourAccessKeySecret>"; OSSClient client = new OSSClient (エンドポイント、accessKeyId、accessKeySecret);
詳細については、「初期化」をご参照ください。
OSS SDK for PHP
$accessKeyId = "<yourAccessKeyId>"; $accessKeySecret = "<yourAccessKeySecret>"; $end point = "<エンドポイント。 例: http://oss-cn-hangzhou-internal.aliyuncs.com>";
詳細については、「初期化」をご参照ください。
Python用OSS SDK
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') endpoint = 'http:// oss-cn-hangzhou-internal.aliyuncs.com '# リージョンのエンドポイント。 この例では、中国 (杭州) リージョンが使用されています。 bucket = oss2.Bucket(auth、endpoint、'BucketName')
詳細については、「初期化」をご参照ください。
OSS SDK for。NET
const文字列accessKeyId = "<yourAccessKeyId>"; const文字列accessKeySecret = "<yourAccessKeySecret>"; const文字列endpoint = "http://oss-cn-hangzhou-internal.aliyuncs.com"; var ossClient = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
詳細については、「初期化」をご参照ください。
OSS SDK for C
options->config = oss_config_create(options->pool); aos_str_set(&options->config-> エンドポイント、"http://oss-cn-hangzhou-internal.aliyuncs.com"); aos_str_set(&options->config->access_key_id, "<yourAccessKeyId>"); aos_str_set(&options->config->access_key_secret, "<yourAccessKeySecret>"); オプション->config->is_cname = 0; options->ctl = aos_http_controller_create(options->pool, 0);
詳細については、「初期化」をご参照ください。
ECSインスタンスにリバースプロキシを設定してOSSリソースにアクセスする
異なるリージョンのECSインスタンスまたはインターネットユーザーは、バケットの内部エンドポイントを使用してバケット内のOSSリソースに直接アクセスすることはできません。 ただし、バケット内のOSSリソースにアクセスするようにECSインスタンスにリバースプロキシを設定できます。
バケットと同じリージョンにパブリックIPアドレスを持つECSインスタンスを作成します。 詳細は、「ECS インスタンスの作成」をご参照ください。
ECSインスタンスにリバースプロキシを設定します。 詳細については、「CentOSを実行するECSインスタンスを使用してOSSへのアクセスのためのリバースプロキシを設定する」、「Ubuntuを実行するECSインスタンスを使用してOSSへのアクセスのためのリバースプロキシを設定する」、「Windowsを実行するECSインスタンスを使用してOSSへのアクセスのためのリバースプロキシを設定する」をご参照ください。
ECSインスタンスの内部IPアドレスからのアクセスを許可するようにバケットポリシーを設定します。 詳細については、「他のユーザーにOSSリソースへのアクセスを許可するバケットポリシーの設定」をご参照ください。
上記の手順を完了すると、ユーザーはECSインスタンスのパブリックIPアドレスを使用してOSSリソースにアクセスできます。 次に、ECSインスタンスは内部ネットワーク経由でOSSリソースを要求し、OSSリソースをユーザーに返します。