トランスファーアクセラレーションを使用する
トランスファーアクセラレーションを有効にして、エンドユーザーデバイスとS3バケット間で長距離にわたるファイルの高速かつ安全な転送を行うことができます。このこのこの構成のストレージリソースをオーバーライドしてから、useAccelerateEndpointパラメータを使用して、加速されたS3エンドポイントを活用できます。
ストレージリソースをオーバーライドする
S3バケットでトランスファーアクセラレーションを有効にするために、ストレージリソースをオーバーライドすることから始めます。
$ amplify override storage✅ Successfully generated "override.ts" folder at <project>/amplify/backend/storage/accelerated-bucket✔ Do you want to edit override.ts file now? (Y/n) · yesEdit the file in your editor: <project>/amplify/backend/storage/accelerated-bucket/override.ts生成されたoverride.tsファイルで、次のCDKスニペットを使用してトランスファーアクセラレーションを有効にします。
// amplify/backend/storage/accelerated-bucket/override.tsimport { AmplifyS3ResourceTemplate } from '@aws-amplify/cli-extensibility-helper';
export function override(resources: AmplifyS3ResourceTemplate) { resources.s3Bucket.accelerateConfiguration = { accelerationStatus: 'Enabled' }}次に、このストレージリソースをデプロイします。
amplify push加速されたS3エンドポイントを使用してファイルをアップロードする
AWSS3StorageUploadFileOptionsでuseAccelerateEndpointパラメータをtrueに設定して、加速されたS3エンドポイントに切り替えます。
StoragePathを使用する
AWSS3StorageUploadFileOptions awsS3StorageUploadFileOptions = AWSS3StorageUploadFileOptions.builder().setUseAccelerateEndpoint(true).build(); Amplify.Storage.uploadFile( StoragePath.fromString("public/example"), file awsS3StorageUploadFileOptions, result -> Log.i("MyAmplifyApp", "Successfully uploaded: " + result.getPath()), storageFailure -> Log.e("MyAmplifyApp", "Upload failed", storageFailure));val awsS3StorageUploadFileOptions = AWSS3StorageUploadFileOptions.builder(). setUseAccelerateEndpoint(true). build() Amplify.Storage.uploadFile( StoragePath.fromString("public/example"), file awsS3StorageUploadFileOptions, { Log.i("MyAmplifyApp", "Successfully uploaded: " + it.getPath()) }, { Log.e("MyAmplifyApp", "Upload failed", it) })val awsS3StorageUploadFileOptions = AWSS3StorageUploadFileOptions.builder(). setUseAccelerateEndpoint(true). build()val upload = Amplify.Storage.uploadFile(StoragePath.fromString("public/example"), file, awsS3StorageUploadFileOptions)try { val result = upload.result() Log.i("MyAmplifyApp", "Successfully uploaded: ${result.path}")} catch (error: StorageException) { Log.e("MyAmplifyApp", "Upload failed", error)}AWSS3StorageUploadFileOptions awsS3StorageUploadFileOptions = AWSS3StorageUploadFileOptions.builder().setUseAccelerateEndpoint(true).build();RxProgressAwareSingleOperation<StorageUploadFileResult> rxUploadOperation = RxAmplify.Storage.uploadFile(StoragePath.fromString("public/example"), file, awsS3StorageUploadFileOptions);rxUploadOperation .observeResult() .subscribe( result -> Log.i("MyAmplifyApp", "Successfully uploaded: " + result.getPath()), error -> Log.e("MyAmplifyApp", "Upload failed", error) );キーを使用する(非推奨)
AWSS3StorageUploadFileOptions awsS3StorageUploadFileOptions = AWSS3StorageUploadFileOptions.builder().setUseAccelerateEndpoint(true).build(); Amplify.Storage.uploadFile( "KEY", file awsS3StorageUploadFileOptions, result -> Log.i("MyAmplifyApp", "Successfully uploaded: " + result.getKey()), storageFailure -> Log.e("MyAmplifyApp", "Upload failed", storageFailure));val awsS3StorageUploadFileOptions = AWSS3StorageUploadFileOptions.builder(). setUseAccelerateEndpoint(true). build() Amplify.Storage.uploadFile( "KEY", file awsS3StorageUploadFileOptions, { Log.i("MyAmplifyApp", "Successfully uploaded: " + it.getKey()) }, { Log.e("MyAmplifyApp", "Upload failed", it) })val awsS3StorageUploadFileOptions = AWSS3StorageUploadFileOptions.builder(). setUseAccelerateEndpoint(true). build()val upload = Amplify.Storage.uploadFile("KEY", file, awsS3StorageUploadFileOptions)try { val result = upload.result() Log.i("MyAmplifyApp", "Successfully uploaded: ${result.key}")} catch (error: StorageException) { Log.e("MyAmplifyApp", "Upload failed", error)}AWSS3StorageUploadFileOptions awsS3StorageUploadFileOptions = AWSS3StorageUploadFileOptions.builder().setUseAccelerateEndpoint(true).build();RxProgressAwareSingleOperation<StorageUploadFileResult> rxUploadOperation = RxAmplify.Storage.uploadFile("KEY", file, awsS3StorageUploadFileOptions);rxUploadOperation .observeResult() .subscribe( result -> Log.i("MyAmplifyApp", "Successfully uploaded: " + result.getKey()), error -> Log.e("MyAmplifyApp", "Upload failed", error) );