メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

Amazon S3 Transfer Acceleration の例

このセクションでは、バケットに対する Amazon S3 Transfer Acceleration を有効にして、有効にしたバケットに高速化エンドポイントを使用する方法の例を示します。AWS SDK でサポートされている一部の言語 (Java、.NET など) では高速化エンドポイントのクライアント設定フラグを使用できるため、Transfer Acceleration 用のエンドポイントを明示的に bucketname.s3-accelerate.amazonaws.com に設定する必要はありません。Transfer Acceleration の詳細については、「Amazon S3 Transfer Acceleration」を参照してください。

Amazon S3 コンソールの使用

Amazon S3 コンソールを使用してバケットに対する Transfer Acceleration を有効にする方法については、Amazon Simple Storage Service コンソールユーザーガイドの「Transfer Acceleration を有効にする」を参照してください。

AWS Command Line Interface (AWS CLI) から Transfer Acceleration を使用する

このセクションでは、Transfer Acceleration に使用する AWS CLI コマンドの例を紹介します。AWS CLI をセットアップする手順については、「AWS CLI のセットアップ」を参照してください。

AWS CLI を使用してバケットに対する Transfer Acceleration を有効にする

AWS CLI put-bucket-accelerate-configuration コマンドを使用すると、バケットに対する Transfer Acceleration の使用を有効化または停止できます。次の例では、Status=Enabled を設定することにより、バケットに対する Transfer Acceleration を有効にしています。Transfer Acceleration を停止するには、Status=Suspended を使用します。

Copy
$ aws s3api put-bucket-accelerate-configuration --bucket bucketname --accelerate-configuration Status=Enabled

AWS CLI から Transfer Acceleration を使用する

AWS Config ファイル内で設定値 use_accelerate_endpointtrue に設定すると、s3 および s3api の AWS CLI コマンドによるすべての Amazon S3 リクエストが高速化エンドポイント s3-accelerate.amazonaws.com に転送されます。高速化エンドポイントを使用するには、バケットに対する Transfer Acceleration を有効にしておく必要があります。

リクエストはすべて、仮想形式のバケットのアドレス指定 (my-bucket.s3-accelerate.amazonaws.com) を使用して送信されます。ListBucketsCreateBucket、および DeleteBucket のオペレーションはサポートされていないため、これらのリクエストは高速化エンドポイントに送信されません。use_accelerate_endpoint の詳細については、「AWS CLI S3 Configuration」を参照してください。

次の例では、デフォルトのプロファイル内で use_accelerate_endpointtrue に設定しています。

Copy
$ aws configure set default.s3.use_accelerate_endpoint true

一部の AWS CLI コマンドについてのみ高速化エンドポイントを使用するには、次のいずれかの方法を使用できます。

  • コマンドで高速化エンドポイントを使用する。その場合は、すべての s3 または s3api コマンドで、--endpoint-url パラメーターを https://s3-accelerate.amazonaws.com または http://s3-accelerate.amazonaws.com に設定します。

  • AWS Config ファイル内で別々のプロファイルを設定する。たとえば、use_accelerate_endpointtrue に設定するプロファイルと use_accelerate_endpoint を設定しないプロファイルを作成します。コマンドを実行する際には、高速化エンドポイントを使用するかどうかによって、適切なプロファイルを指定します。

Transfer Acceleration が有効になっているバケットにオブジェクトをアップロードするための AWS CLI の例

次の例では、高速化エンドポイントの使用が設定されているデフォルトプロファイルを使用して、Transfer Acceleration が有効になっているバケットにファイルをアップロードします。

Copy
$ aws s3 cp file.txt s3://bucketname/keyname --region region

次の例では、--endpoint-url パラメーターで高速化エンドポイントを指定して、Transfer Acceleration が有効になっているバケットにファイルをアップロードします。

Copy
$ aws configure set s3.addressing_style virtual $ aws s3 cp file.txt s3://bucketname/keyname --region region --endpoint-url http://s3-accelerate.amazonaws.com

AWS SDK for Java から Transfer Acceleration を使用する

このセクションでは、Transfer Acceleration 用に AWS SDK for Java を使用する例を示します。Java の実用サンプルを作成およびテストする方法については、「Java コード例のテスト」を参照してください。

AWS SDK for Java からの、バケットの Amazon S3 Transfer Acceleration の有効化

次の Java コード例は、バケットに対する Transfer Acceleration を有効にする方法を示しています。

Copy
import java.io.IOException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.BucketAccelerateConfiguration; import com.amazonaws.services.s3.model.BucketAccelerateStatus; import com.amazonaws.services.s3.model.GetBucketAccelerateConfigurationRequest; import com.amazonaws.services.s3.model.SetBucketAccelerateConfigurationRequest; public class BucketAccelertionConfiguration { public static String bucketName = "*** Provide bucket name ***"; public static AmazonS3Client s3Client; public static void main(String[] args) throws IOException { s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); s3Client.setRegion(Region.getRegion(Regions.US_WEST_2)); // 1. Enable bucket for Amazon S3 Transfer Acceleration. s3Client.setBucketAccelerateConfiguration(new SetBucketAccelerateConfigurationRequest(bucketName, new BucketAccelerateConfiguration(BucketAccelerateStatus.Enabled))); // 2. Get the acceleration status of the bucket. String accelerateStatus = s3Client.getBucketAccelerateConfiguration(new GetBucketAccelerateConfigurationRequest(bucketName)).getStatus(); System.out.println("Acceleration status = " + accelerateStatus); } }

AWS SDK for Java からの、Amazon S3 Transfer Acceleration エンドポイントを使用する Amazon S3 クライアントの作成

AmazonS3Client のインスタンスの作成時に Transfer Acceleration エンドポイントを使用するには、AWS Java SDK から setS3ClientOptions メソッドを使用します。

Transfer Acceleration エンドポイントを使用する Amazon S3 Java クライアントの作成

次の例では、AWS Java SDK から setS3ClientOptions を使用して AmazonS3Client のインスタンスの作成時に Transfer Acceleration エンドポイントを使用する方法を示します。

Copy
AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); s3Client.setRegion(Region.getRegion(Regions.US_WEST_2)); s3Client.setS3ClientOptions(S3ClientOptions.builder().setAccelerateModeEnabled(true).build());

Transfer Acceleration デュアルスタックエンドポイントを使用する Amazon S3 Java クライアントの作成

次の例では、AWS Java SDK から setS3ClientOptions メソッドを使用して AmazonS3Client のインスタンスの作成時に Transfer Acceleration デュアルスタックエンドポイントを使用する方法を示します。

Copy
AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); s3Client.setRegion(Region.getRegion(Regions.US_WEST_2)); s3Client.setS3ClientOptions(S3ClientOptions.builder().enableDualstack().setAccelerateModeEnabled(true).build());

Transfer Acceleration デュアルスタックエンドポイントを使用するために Microsoft Windows の AWS Java SDK を使用しているなら、Java 仮想マシン (JVM) の次のプロパティの設定が必要になる場合があります。

Copy
java.net.preferIPv6Addresses=true

AWS SDK for Javaを使用した、Transfer Acceleration が有効になっているバケットの作成

このセクションの Java コード例では、高速化エンドポイントを使用してオブジェクトをアップロードする方法を示します。「Transfer Acceleration デュアルスタックエンドポイントを使用する Amazon S3 Java クライアントの作成」で説明されているように、AmazonS3Client のインスタンスを作成するコードを変更することによって、Transfer Acceleration デュアルエンドポイントを使った例を使用できます。

Java の実用サンプルを作成およびテストする方法については、「Java コード例のテスト」を参照してください。

Java コード例: Transfer Acceleration が有効になっているバケットへの単一オブジェクトのアップロード

次の Java コード例では、高速化エンドポイントを使用して、単一のオブジェクトをアップロードする方法を示しています。

Copy
import java.io.File; import java.io.IOException; import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.S3ClientOptions; import com.amazonaws.services.s3.model.PutObjectRequest; public class AcceleratedUploadSingleObject { private static String bucketName = "*** Provide bucket name ***"; private static String keyName = "*** Provide key name ***"; private static String uploadFileName = "*** Provide file name with full path ***"; public static void main(String[] args) throws IOException { AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); s3Client.setRegion(Region.getRegion(Regions.US_WEST_2)); // Use Amazon S3 Transfer Acceleration endpoint. s3Client.setS3ClientOptions(S3ClientOptions.builder().setAccelerateModeEnabled(true).build()); try { System.out.println("Uploading a new object to S3 from a file\n"); File file = new File(uploadFileName); s3Client.putObject(new PutObjectRequest( bucketName, keyName, file)); } catch (AmazonServiceException ase) { System.out.println("Caught an AmazonServiceException, which " + "means your request made it " + "to Amazon S3, but was rejected with an error response" + " for some reason."); System.out.println("Error Message: " + ase.getMessage()); System.out.println("HTTP Status Code: " + ase.getStatusCode()); System.out.println("AWS Error Code: " + ase.getErrorCode()); System.out.println("Error Type: " + ase.getErrorType()); System.out.println("Request ID: " + ase.getRequestId()); } catch (AmazonClientException ace) { System.out.println("Caught an AmazonClientException, which " + "means the client encountered " + "an internal error while trying to " + "communicate with S3, " + "such as not being able to access the network."); System.out.println("Error Message: " + ace.getMessage()); } } }

Java コード例: Transfer Acceleration が有効になっているバケットへのマルチパートアップロード

次の Java コード例では、マルチパートアップロード用に高速化エンドポイントを使用する方法を示しています。

Copy
import java.io.File; import com.amazonaws.AmazonClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.S3ClientOptions; import com.amazonaws.services.s3.transfer.TransferManager; import com.amazonaws.services.s3.transfer.Upload; public class AccelerateMultipartUploadUsingHighLevelAPI { private static String EXISTING_BUCKET_NAME = "*** Provide bucket name ***"; private static String KEY_NAME = "*** Provide key name ***"; private static String FILE_PATH = "*** Provide file name with full path ***"; public static void main(String[] args) throws Exception { AmazonS3Client s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); s3Client.configureRegion(Regions.US_WEST_2); // Use Amazon S3 Transfer Acceleration endpoint. s3Client.setS3ClientOptions(S3ClientOptions.builder().setAccelerateModeEnabled(true).build()); TransferManager tm = new TransferManager(s3Client); System.out.println("TransferManager"); // TransferManager processes all transfers asynchronously, // so this call will return immediately. Upload upload = tm.upload( EXISTING_BUCKET_NAME, KEY_NAME, new File(FILE_PATH)); System.out.println("Upload"); try { // Or you can block and wait for the upload to finish upload.waitForCompletion(); System.out.println("Upload complete"); } catch (AmazonClientException amazonClientException) { System.out.println("Unable to upload file, upload was aborted."); amazonClientException.printStackTrace(); } } }

AWS SDK for .NET から Transfer Acceleration を使用する

このセクションでは、Transfer Acceleration 用に AWS SDK for .NET を使用する例を示します。.NET の実用サンプルを作成およびテストする方法については、「Amazon S3 .NET コード例の実行」を参照してください。

.NET コード例 1: バケットに対する Transfer Acceleration を有効にする

次の .NET コード例は、バケットに対する Transfer Acceleration を有効にする方法を示しています。

Copy
using System; using System.Collections.Generic; using Amazon.S3; using Amazon.S3.Model; using Amazon.S3.Util; namespace s3.amazon.com.docsamples { class SetTransferAccelerateState { private static string bucketName = "Provide bucket name"; public static void Main(string[] args) { using (var s3Client = new AmazonS3Client(Amazon.RegionEndpoint.USWest2)) try { EnableTransferAcclerationOnBucket(s3Client); BucketAccelerateStatus bucketAcclerationStatus = GetBucketAccelerateState(s3Client); Console.WriteLine("Acceleration state = '{0}' ", bucketAcclerationStatus); } catch (AmazonS3Exception amazonS3Exception) { if (amazonS3Exception.ErrorCode != null && (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId") || amazonS3Exception.ErrorCode.Equals("InvalidSecurity"))) { Console.WriteLine("Check the provided AWS Credentials."); Console.WriteLine( "To sign up for the service, go to http://aws.amazon.com/s3"); } else { Console.WriteLine( "Error occurred. Message:'{0}' when setting transfer acceleration", amazonS3Exception.Message); } } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } static void EnableTransferAcclerationOnBucket(IAmazonS3 s3Client) { PutBucketAccelerateConfigurationRequest request = new PutBucketAccelerateConfigurationRequest { BucketName = bucketName, AccelerateConfiguration = new AccelerateConfiguration { Status = BucketAccelerateStatus.Enabled } }; PutBucketAccelerateConfigurationResponse response = s3Client.PutBucketAccelerateConfiguration(request); } static BucketAccelerateStatus GetBucketAccelerateState(IAmazonS3 s3Client) { GetBucketAccelerateConfigurationRequest request = new GetBucketAccelerateConfigurationRequest { BucketName = bucketName }; GetBucketAccelerateConfigurationResponse response = s3Client.GetBucketAccelerateConfiguration(request); return response.Status; } } }

.NET コード例 2: Transfer Acceleration が有効になっているバケットへの単一オブジェクトのアップロード

次の .NET コード例では、高速化エンドポイントを使用して、単一のオブジェクトをアップロードする方法を示しています。

Copy
using System; using System.Collections.Generic; using Amazon; using Amazon.S3; using Amazon.S3.Model; using Amazon.S3.Util; namespace s3.amazon.com.docsamples { public class UploadtoAcceleratedBucket { private static RegionEndpoint TestRegionEndpoint = RegionEndpoint.USWest2; private static string bucketName = "Provide bucket name"; static string keyName = "*** Provide key name ***"; static string filePath = "*** Provide filename of file to upload with the full path ***"; public static void Main(string[] args) { using (var client = new AmazonS3Client(new AmazonS3Config { RegionEndpoint = TestRegionEndpoint, UseAccelerateEndpoint = true })) { WriteObject(client); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } } static void WriteObject(IAmazonS3 client) { try { PutObjectRequest putRequest = new PutObjectRequest { BucketName = bucketName, Key = keyName, FilePath = filePath, }; client.PutObject(putRequest); } catch (AmazonS3Exception amazonS3Exception) { if (amazonS3Exception.ErrorCode != null && (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId") || amazonS3Exception.ErrorCode.Equals("InvalidSecurity"))) { Console.WriteLine("Check the provided AWS Credentials."); Console.WriteLine( "For service sign up go to http://aws.amazon.com/s3"); } else { Console.WriteLine( "Error occurred. Message:'{0}' when writing an object" , amazonS3Exception.Message); } } } } }

.NET コード例 3: Transfer Acceleration が有効になっているバケットへのマルチパートアップロード

次の .NET コード例では、マルチパートアップロード用に高速化エンドポイントを使用する方法を示しています。

Copy
using System; using System.IO; using Amazon; using Amazon.S3; using Amazon.S3.Model; using Amazon.S3.Transfer; namespace s3.amazon.com.docsamples { class AcceleratedUploadFileMPUHAPI { private static RegionEndpoint TestRegionEndpoint = RegionEndpoint.USWest2; private static string existingBucketName = "Provide bucket name"; private static string keyName = "*** Provide your object key ***"; private static string filePath = "*** Provide file name with full path ***"; static void Main(string[] args) { try { var client = new AmazonS3Client(new AmazonS3Config { RegionEndpoint = TestRegionEndpoint, UseAccelerateEndpoint = true }); using (TransferUtility fileTransferUtility = new TransferUtility(client)) { // 1. Upload a file, file name is used as the object key name. fileTransferUtility.Upload(filePath, existingBucketName); Console.WriteLine("Upload 1 completed"); // 2. Specify object key name explicitly. fileTransferUtility.Upload(filePath, existingBucketName, keyName); Console.WriteLine("Upload 2 completed"); // 3. Upload data from a type of System.IO.Stream. using (FileStream fileToUpload = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { fileTransferUtility.Upload(fileToUpload, existingBucketName, keyName); } Console.WriteLine("Upload 3 completed"); // 4.Specify advanced settings/options. TransferUtilityUploadRequest fileTransferUtilityRequest = new TransferUtilityUploadRequest { BucketName = existingBucketName, FilePath = filePath, StorageClass = S3StorageClass.ReducedRedundancy, PartSize = 6291456, // 6 MB. Key = keyName, CannedACL = S3CannedACL.PublicRead }; fileTransferUtilityRequest.Metadata.Add("param1", "Value1"); fileTransferUtilityRequest.Metadata.Add("param2", "Value2"); fileTransferUtility.Upload(fileTransferUtilityRequest); Console.WriteLine("Upload 4 completed"); } } catch (AmazonS3Exception s3Exception) { Console.WriteLine("{0} {1}", s3Exception.Message, s3Exception.InnerException); } } } }

AWS SDK for JavaScript から Transfer Acceleration を使用する

AWS SDK for JavaScript を使用して Transfer Acceleration を有効にする例については、AWS SDK for JavaScript API リファレンスputBucketAccelerateConfiguration オペレーションの呼び出しを参照してください。

AWS SDK for Python (Boto) から Transfer Acceleration を使用する

SDK for Python を使用して Transfer Acceleration を有効にする例については、AWS SDK for Python (Boto 3) API Reference put_bucket_accelerate_configuration を参照してください。

他の AWS SDK の使用

他の AWS SDK の使用については、サンプルコードとライブラリのページを参照してください。