デフォルトでは、object Storage Service (OSS) バケット内のオブジェクトのアクセス制御リスト (ACL) はプライベートであり、オブジェクト所有者のみがオブジェクトにアクセスできます。 ただし、オブジェクト所有者は、アクセス資格情報に基づいて署名付きURLを作成することで、オブジェクトをサードパーティのユーザーと共有できます。 サードパーティのユーザーは、署名付きURLを使用して、指定された期間内にオブジェクトをダウンロードまたはプレビューできます。
使用上の注意
OSS SDKを使用して署名付きURLを生成する場合、OSS SDKは特定のアルゴリズムとローカルコンピューターに保存されているキー情報を使用して署名を計算し、URLに署名を追加してURLの有効性とセキュリティを確保します。 署名を計算し、URLを構築するために実行される操作は、クライアント上で完了する。 ネットワーク経由でサーバーにリクエストを送信する必要はありません。 この方法では、署名付きURLを生成するときに、呼び出し元に特定の権限を付与する必要はありません。 ただし、サードパーティのユーザーが署名付きURLによって承認されたリソースに対して関連する操作を実行できるようにするには、API操作を呼び出して署名付きURLを生成するプリンシパルに必要な権限があることを確認する必要があります。
たとえば、オブジェクトのダウンロードまたはプレビュー用に署名付きURLを生成する場合は、
oss:GetObject
権限が必要です。アクセス時にオブジェクトがプレビューされるようにするには、オブジェクトを格納するバケットにカスタムドメイン名をマップし、CNAMEレコードを追加する必要があります。 詳細については、「カスタムドメイン名をバケットのデフォルトドメイン名にマップする」をご参照ください。
プライベートオブジェクトのURLを生成するときは、URLの有効期間を指定する必要があります。 有効期間が終了すると、URLを使用してオブジェクトにアクセスすることはできません。 オブジェクトのURLを再度作成して、オブジェクトへのURLベースのアクセスを維持できます。
単一オブジェクトのURLを生成する
プライベートオブジェクトのURLを生成する
オブジェクトのACLが非公開の場合、オブジェクトのURLに署名する必要があります。 プライベートオブジェクトのURLの形式はhttps:// BucketName.Endpoint /object? SignatureParameters
です。 次の方法を使用して、プライベートオブジェクトのURLを生成し、URLの有効期間を指定できます。
オブジェクトURLの最大有効期間は、アカウントタイプによって異なります。 たとえば、Alibaba Cloudアカウントを使用してオブジェクトURLの有効期間を最大32,400秒 (9時間) に設定したり、RAMユーザーまたはSecurity Token Service (STS) から取得した一時的なアクセス資格情報を使用して、OSSコンソールでオブジェクトURLの有効期間を最大3,600秒 (1時間) に設定したりできます。 オブジェクトURLの有効期間を長く指定するには、ossutil、ossbrowser、またはOSS SDKを使用します。 詳細については、「」をご参照ください。プライベートオブジェクトのURLを期限切れにしないように設定できますか?
OSSコンソールの使用
OSSコンソールでプライベートオブジェクトのURLを生成できます。
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、オブジェクトが保存されているバケットの名前をクリックします。
左側のナビゲーションツリーで、
を選択します。オブジェクトのURLを取得します。
共有するオブジェクトの名前をクリックします。
プロパティ パネルで、次の表に示すパラメーターを設定します。 次に、ファイル URLのコピー をクリックします。
パラメーター
説明
有効期間
プライベートオブジェクトのURLを取得するには、有効期間を指定する必要があります。
有効値: 60 ~ 32400
単位は秒です。
有効期間が長いURLを生成するには、ossbrowser、OSS SDK、ossutilなどのツールを使用します。
CNAME
オブジェクトが画像またはwebページであり、URLを使用してアクセスしたときにオブジェクトがプレビューされているがダウンロードされないようにする場合は、URLを生成するときにバケットにマップされるカスタムドメイン名を使用します。
このパラメーターは、カスタムドメイン名がバケットにマップされている場合にのみ使用できます。 詳細については、「カスタムドメイン名のマップ」をご参照ください。
HTTPSの使用
デフォルトでは、生成されたURLはHTTPSプロトコルを使用します。 HTTPプロトコルを使用するURLを生成するには、[HTTPSの使用] をオフにします。
ossbrowserの使用
ossbrowserを使用して、OSSコンソールで実行できるのと同じオブジェクトレベルの操作を実行できます。 ossbrowserの画面上の指示に従って、署名付きURLを生成できます。 詳細については、「ossbrowserの使用」をご参照ください。
OSS SDKの使用
次のサンプルコードは、一般的なプログラミング言語のOSS SDKを使用してオブジェクトの署名付きURLを生成し、署名付きURLを使用してオブジェクトをダウンロードする方法の例を示しています。 他のプログラミング言語のOSS SDKを使用してオブジェクトの署名付きURLを生成し、署名付きURLを使用してオブジェクトをダウンロードする方法の詳細については、「概要」をご参照ください。
Java
オブジェクトのダウンロードに使用する署名付きURLを生成します。
import com.aliyun.oss.*; import com.aliyun.oss.common.auth.*; import com.aliyun.oss.model.GeneratePresignedUrlRequest; import java.net.URL; import java.util.Date; public class Demo { public static void main(String[] args) throws Throwable { // In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint. String endpoint = "https://oss-cn-hangzhou.aliyuncs.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. EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); // Specify the name of the bucket. Example: examplebucket. String bucketName = "examplebucket"; // Specify the full path of the object. Example: exampleobject.txt. Do not include the bucket name in the full path. String objectName = "exampleobject.txt"; // Create an OSSClient instance. OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider); URL signedUrl = null; try { // Specify the validity period of the signed URL. Unit: milliseconds. In this example, the validity period is set to 1 hour. Date expiration = new Date(new Date().getTime() + 3600 * 1000L); // Generate the signed URL. GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET); // Specify the validity period of the signed URL. request.setExpiration(expiration); // Generate the signed URL that allows HTTP GET requests. signedUrl = ossClient.generatePresignedUrl(request); // Display the signed URL. System.out.println("signed url for getObject: " + signedUrl); } catch (OSSException oe) { System.out.println("Caught an OSSException, which means your request made it to OSS, " + "but was rejected with an error response for some reason."); System.out.println("Error Message:" + oe.getErrorMessage()); System.out.println("Error Code:" + oe.getErrorCode()); System.out.println("Request ID:" + oe.getRequestId()); System.out.println("Host ID:" + oe.getHostId()); } catch (ClientException ce) { System.out.println("Caught an ClientException, which means the client encountered " + "a serious internal problem while trying to communicate with OSS, " + "such as not being able to access the network."); System.out.println("Error Message:" + ce.getMessage()); } } }
署名付きURLを使用してオブジェクトをダウンロードします。
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import java.io.*; import java.util.*; public class Get1 { public static void main(String[] args) throws Throwable { // Specify the full path of the local file to which you want to download the object. String pathName = "D:\\example.jpg"; // Enter the signed URL generated in Step 1. String signedUrl= "yourSignedUrl"; Map<String, String> headers = new HashMap<String, String>(); Map<String, String> userMetadata = new HashMap<String, String>(); // Use the signed URL to download the object. In this example, HttpClients is used. getObjectWithHttp(signedUrl, pathName, headers, userMetadata); } public static void getObjectWithHttp(String signedUrl, String pathName, Map<String, String> headers, Map<String, String> userMetadata) throws IOException { CloseableHttpClient httpClient = null; CloseableHttpResponse response = null; try { HttpGet get = new HttpGet(signedUrl); // If headers, such as metadata headers and the header that indicates the storage class, are specified when you generate a signed URL, you must send these headers to the server when you use the signed URL to download the object. If headers that are sent to the server for the signature calculation are inconsistent with those specified when you generate a signed URL, a signature error is reported. for(Map.Entry header: headers.entrySet()){ get.addHeader(header.getKey().toString(),header.getValue().toString()); } for(Map.Entry meta: userMetadata.entrySet()){ // If userMeta is used, the x-oss-meta- prefix is added to userMeta. When you use other methods to generate a signed URL for object download, the x-oss-meta- prefix is also added to userMeta. get.addHeader("x-oss-meta-"+meta.getKey().toString(), meta.getValue().toString()); } httpClient = HttpClients.createDefault(); response = httpClient.execute(get); System.out.println("Download status code:"+response.getStatusLine().getStatusCode()); if(response.getStatusLine().getStatusCode() == 200){ System.out.println("The object is downloaded by using the network library"); } System.out.println(response.toString()); saveFileToLocally(response.getEntity().getContent(), pathName); } catch (Exception e){ e.printStackTrace(); } finally { response.close(); httpClient.close(); } } public static void saveFileToLocally(InputStream inputStream, String pathName) throws IOException { DataInputStream in = null; OutputStream out = null; try { in = new DataInputStream(inputStream); out = new DataOutputStream(new FileOutputStream(pathName)); int bytes = 0; byte[] bufferOut = new byte[1024]; while ((bytes = in.read(bufferOut)) != -1) { out.write(bufferOut, 0, bytes); } } catch (Exception e){ e.printStackTrace(); } finally { in.close(); out.close(); } } }
PHP
オブジェクトのダウンロードに使用する署名付きURLを生成します。
<?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\Core\OssException; use OSS\Http\RequestCore; use OSS\Http\ResponseCore; // 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 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. $endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; // Specify the name of the bucket. Example: examplebucket. $bucket= "examplebucket"; // Specify the full path of the object. Do not include the bucket name in the full path. $object = "exampleobject.txt"; // Set the validity period of the signed URL to 3,600 seconds. $timeout = 3600; // Generate a signed URL that is used to download the object. $options = array( "response-content-disposition"=>"attachment", ); try { $config = array( "provider" => $provider, "endpoint" => $endpoint, ); $ossClient = new OssClient($config); $signedUrl = $ossClient->signUrl($bucket, $object, $timeout,'GET',$options); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } print(__FUNCTION__ . ": signedUrl: " . $signedUrl . "\n");
署名付きURLを使用してオブジェクトをダウンロードします。
<?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\Http\RequestCore; use OSS\Http\ResponseCore; // Enter the signed URL generated in Step 1. $signedUrl = 'yourSignedUrl'; // Specify the full path of the local file to which you want to download the object. $localfile = "D://example.txt"; // Use the signed URL to download the object. $request = new RequestCore($signedUrl); // Generate the signed URL that allows HTTP GET requests by default. $request->set_method('GET'); $request->add_header('Content-Type', ''); $request->send_request(); $res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code()); if ($res->isOK()) { print(__FUNCTION__ . ": OK" . "\n"); file_put_contents($localfile,$request->get_response_body()); } else { print(__FUNCTION__ . ": FAILED" . "\n"); };
Node.js
オブジェクトのダウンロードに使用する署名付きURLを生成します。
const OSS = require("ali-oss"); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: "oss-cn-hangzhou", // 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, // Specify the name of the bucket. Example: examplebucket. bucket: "examplebucket", }); // Generate the signed URL for downloading the object and set the validity period of the signed URL to 3600 seconds. const url = client.signatureUrl("exampleobject.txt", { expires: 3600 }); console.log(url);
署名付きURLを使用してオブジェクトをダウンロードします。
const axios = require("axios"); const fs = require("fs"); // Enter the signed URL generated in Step 1. const url = "yourSignedUrl"; // Specify the full path of the local file to which you want to download the object. const file = "D://example.txt"; axios // Set the response type to arraybuffer. .get(url, { responseType: "arraybuffer" }) .then((response) => { fs.writeFile(file, response.data, (err) => { if (err) { console.log(err); } else { console.log("The object is downloaded."); } }); }) .catch((error) => { console.log(error); });
Python
オブジェクトのダウンロードに使用する署名付きURLを生成します。
# -*- coding: utf-8 -*- import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider import requests # 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. auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # 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. # Specify the name of the bucket. Example: examplebucket. bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket') # Specify the full path of the object. Example: exampledir/exampleobject.txt. Do not include the bucket name in the full path. object_name = 'exampleobject.txt' # Set the validity period of the signed URL to 3,600 seconds. # Set the slash_safe parameter to True to prevent OSS from identifying the forward slashes (/) in the full path of the object as escape characters. This allows you to use the generated signed URL to download the object. url = bucket.sign_url('GET', object_name, 3600, slash_safe=True) print('The signed URL:', url)
署名付きURLを使用してオブジェクトをダウンロードします。
# -*- coding: utf-8 -*- import oss2 import requests # Enter the signed URL generated in Step 1. url = 'yourSignedUrl' # Use the signed URL to download the object. In this example, the requests module is used. resp = requests.get(url) # Specify the local path to which you want to download the object. with open("D:\\examplefile.txt", "wb") as code: code.write(resp.content)
Browser.js
オブジェクトのダウンロードに使用する署名付きURLを生成します。
const OSS = require("ali-oss"); const STS = require("ali-oss").STS; // const cors = require("cors"); const stsClient = new STS({ // 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, }); // Specify the name of the bucket. Example: examplebucket. const bucket = "examplebucket"; // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. const region = "oss-cn-hangzhou"; // Specify the Alibaba Cloud Resource Name (ARN) of the RAM role. const roleArn = "acs:ram::137918634953****:role/ossram"; const getSts = () => { stsClient .assumeRole( roleArn, `{ "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": [ "acs:oss:*:*:examplebucket/*" ] } ] }`, 3000 // Specify the validity period of the security token. Unit: seconds. ) .then((r) => { console.log("send:", r.credentials); const { SecurityToken, AccessKeyId, AccessKeySecret } = r.credentials; const client = new OSS({ bucket, region, accessKeyId: AccessKeyId, accessKeySecret: AccessKeySecret, stsToken: SecurityToken, refreshSTSTokenInterval: 9000, }); // Generate the signed URL that is used to download the object. const url = client.asyncSignatureUrl("exampleobject.txt", { expires: 3600, method: "GET", }); console.log("url:", url); // client.get("exampleobject.txt", Buffer.from("body")).then((res) => { // console.log("res", res.url); // }); }); }; getSts();
署名付きURLを使用してオブジェクトをダウンロードします。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</title> </head> <body> <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script> <script> // Enter the signed URL generated in Step 1. const url = "yourSignedUrl"; var xhr = new XMLHttpRequest(); xhr.open("GET", url, true); // Set the response type to blob. xhr.responseType = "blob"; xhr.onload = function () { if (xhr.status === 200) { const blob = xhr.response; const reader = new FileReader(); reader.onloadend = function () { const fileData = reader.result; // Specify the name of the downloaded object. const file = new File([fileData], "examplefile.txt"); const a = document.createElement("a"); a.href = URL.createObjectURL(file); a.download = file.name; a.click(); }; reader.readAsArrayBuffer(blob); } else { console.log("The request failed."); } }; xhr.send(); </script> </body> </html>
アンドロイド
オブジェクトのダウンロードに使用する署名付きURLを生成します。
// Specify the name of the bucket. Example: examplebucket. String bucketName = "examplebucket"; // Specify the full path of the object. Do not include the bucket name in the full path. Example: exampleobject.txt. String objectKey = "exampleobject.txt"; String url = null; try { // Generate a signed URL to download the object. GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectKey); // Set the validity period of the signed URL to 30 minutes. request.setExpiration(30*60); request.setMethod(HttpMethod.GET); url = oss.presignConstrainedObjectURL(request); Log.d("url", url); } catch (ClientException e) { e.printStackTrace(); }
署名付きURLを使用してオブジェクトをダウンロードします。
// Enter the generated signed URL. String url = ""; OkHttpClient client = new OkHttpClient(); // Use the signed URL to download an object. Request getRequest = new Request.Builder() .url(url) .get() .build(); client.newCall(getRequest).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); } @Override public void onResponse(Call call, Response response) throws IOException { if (response.code() == 203 || response.code() >= 300) { Log.d("download", "fail"); Log.d("download", response.body().string()); return; } // The object is downloaded. InputStream inputStream = response.body().byteStream(); byte[] buffer = new byte[2048]; int len; while ((len = inputStream.read(buffer)) != -1) { // Process the downloaded data. For example, display the image or perform a write operation on the object. } } });
Go
オブジェクトのダウンロードに使用する署名付きURLを生成します。
package main import ( "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "os" ) func HandleError(err error) { fmt.Println("Error:", err) os.Exit(-1) } func main() { // 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, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Create an OSSClient instance. // 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. Specify your actual endpoint. client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Specify the name of the bucket. Example: examplebucket. bucketName := "examplebucket" // Specify the full path of the object. Example: exampledir/exampleobject.txt. Do not include the bucket name in the full path of the object. objectName := "exampledir/exampleobject.txt" // Download the object to the specified path on your local computer. If a file that has the same name already exists in the path, the downloaded object overwrites the file. Otherwise, the downloaded object is saved in the path. bucket, err := client.Bucket(bucketName) if err != nil { HandleError(err) } // Generate a signed URL that has a specific validity period for downloading the object. In this example, the validity period of the URL is 60 seconds. signedURL, err := bucket.SignURL(objectName, oss.HTTPGet, 60) if err != nil { HandleError(err) } fmt.Printf("Sign Url:%s\n", signedURL) }
署名付きURLを使用してオブジェクトをダウンロードします。
パッケージメイン import (import (import) "fmt" "os" 「github.com/aliyun/aliyun-oss-go-sdk/oss」 ) func main() { // Create an OSSClient instance. // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 実際のエンドポイントを指定します。 client, err := oss.New(" https://oss-cn-hangzhou.aliyuncs.com ", ", " ") if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // バケットの名前を指定します。 例: examplebucket. bucketName := "examplebucket" // オブジェクトをダウンロードするローカルファイルのフルパスを指定します。 localDownloadedFilename := "D:// example.txt" bucket, err := client.Bucket(bucketName) if err! =nil { HandleError(err) } // ステップ1で生成された署名付きURLを入力します。 signedURL := "yourSignedUrl" // 生成された署名付きURLを使用して、オブジェクトをローカルファイルとしてダウンロードします。 err = bucket.GetObjectToFileWithURL(signedURL, localDownloadedFilename) if err! =nil { HandleError(err) } } func HandleError (エラーエラー) { fmt.Println("Error:", err) os.Exit(-1) }
iOS
オブジェクトのダウンロードに使用する署名付きURLを生成します。
// Specify the name of the bucket. NSString *bucketName = @"examplebucket"; // Specify the name of the object. NSString *objectKey = @"exampleobject.txt"; __block NSString *urlString; // Generate a signed URL with a specified validity period for downloading the object. In this example, the validity period of the URL is 30 minutes. OSSTask *task = [client presignConstrainURLWithBucketName:bucketName withObjectKey:objectKey httpMethod:@"GET" withExpirationInterval:30 * 60 withParameters:@{}]; [task continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) { if (task.error) { NSLog(@"presign error: %@", task.error); } else { urlString = task.result; NSLog(@"url: %@", urlString); } return nil; }];
署名付きURLを使用してオブジェクトをダウンロードします。
// Use the signed URL to download the object. NSURL * url = [NSURL URLWithString:urlString]; NSURLRequest * request = [NSURLRequest requestWithURL:url]; NSURLSession * session = [NSURLSession sharedSession]; NSURLSessionTask * sessionTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { if (error) { NSLog(@"download error: %@", error); return; } else if (((NSHTTPURLResponse*)response).statusCode == 203 || ((NSHTTPURLResponse*)response).statusCode >= 300) { NSString *body = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"download error: %@", body); return; } NSLog(@"download success"); }]; [sessionTask resume];
ossutilの使用
ossutilを使用して署名付きURLを生成できます。 詳細は、「sign」をご参照ください。
パブリック読み取りオブジェクトのURLを生成する
オブジェクトのACLがパブリック読み取りの場合、匿名ユーザーはオブジェクトにアクセスできます。 オブジェクトのURLの形式はhttps:// BucketName.Endpoint/ObjectName
です。 上記のURLでは、ObjectNameはオブジェクト名サフィックスを含むオブジェクトのフルパスです。 各リージョンのエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
たとえば、example.jpgという名前のオブジェクトは、中国 (杭州) リージョンのexamplebucketという名前のバケットのサンプルディレクトリに格納されます。 次のURLを使用してオブジェクトにアクセスできます。
インターネット経由でアクセスするためのURL:
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/example/example.jpg
。内部ネットワーク経由でアクセスするためのURL (オブジェクトと同じリージョンのElastic Compute Serviceインスタンスから):
https://examplebucket.oss-cn-hangzhou-internal.aliyuncs.com/example/example.jpg
。
オブジェクトが格納されているバケットにカスタムドメイン名をマップする場合、バケット内のオブジェクトのURLはhttps:// YourDomainName/ObjectName
の形式になります。
たとえば、カスタムドメイン名example.com
を中国 (杭州) リージョンのexamplebucketという名前のバケットにマップし、そのバケットにexample.jpgオブジェクトが含まれている場合、オブジェクトのURLは https://example.com/example.jpg
です。
複数のオブジェクトのURLを取得する
OSSコンソールでは、一度に複数のオブジェクトのURLを取得できます。
URLを取得するオブジェクトを選択し、[URLリストのエクスポート] をクリックします。
[URLリストのエクスポート] パネルで、次の表に示すパラメーターを設定します。
パラメーター
説明
HTTPSの使用
デフォルトでは、生成されたURLはHTTPSプロトコルを使用します。 HTTPプロトコルを使用するURLを生成するには、[HTTPSの使用] をオフにします。
有効期間
オブジェクトのACLが非公開の場合、オブジェクトのURLの有効期間を指定する必要があります。
有効値: 60 ~ 32400
単位は秒です。
有効期間が長いURLを取得するには、ossutilまたはossbrowserを使用することを推奨します。
CNAME
オブジェクトが画像またはWebサイトページであり、URLを使用してアクセスしたときにオブジェクトがプレビューされるがダウンロードされないようにする場合は、URLの作成時にバケットにマップされるカスタムドメイン名を使用します。
このパラメーターは、カスタムドメイン名がバケットにマップされている場合にのみ使用できます。 詳細については、「カスタムドメイン名のマップ」をご参照ください。
エンドポイントの高速化
データセンターから離れた場所にいるサードパーティが共有オブジェクトにアクセスする必要がある場合は、バケットのアクセラレーションエンドポイントを使用してオブジェクトのURLを生成することを推奨します。
このパラメーターは、バケットの転送アクセラレーションが有効になっている場合にのみ使用できます。 詳細については、「転送アクセラレーションの有効化」をご参照ください。
OK をクリックし、URLリストをローカルファイルとしてエクスポートします。
ossutilまたはOSS SDKを使用して一度に複数のオブジェクトのURLを取得する場合は、次の手順を実行します。
GetBucket (ListObjects) 操作を呼び出して、オブジェクトの名前を取得します。
オブジェクトのURLを取得するために、単一のオブジェクトのURLを取得するために使用されるメソッドを繰り返し呼び出します。 詳細については、「単一オブジェクトのURLの取得」をご参照ください。
関連ドキュメント
ECS (Elastic Compute Service) イメージをOSSにアップロードし、イメージのURLを使用してカスタムイメージをインポートできます。 詳細については、「OSSへの画像ファイルのアップロード」および「カスタム画像のインポート」をご参照ください。