Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.
Gen1 DocsLegacy

Page updated May 22, 2024

S3 リソースを拡張する

Amplify で生成された S3 リソースの場合

Amplify Storage は、ストレージ機能を提供するために Amazon S3 リソースを生成します。AWS Cloud Developer Kit (AWS CDK) を使用して、基盤となる Amazon S3 リソースにアクセスして、バックエンド設定をさらにカスタマイズできます。

例 - Transfer Acceleration を有効にする

以下は、バケットで Transfer Acceleration を有効にする方法の例です(CDK ドキュメント)。バケットで Transfer Acceleration を有効にするには、次のように L2 CDK コンストラクトから L1 CDK コンストラクトをアンラップする必要があります。

import * as s3 from 'aws-cdk-lib/aws-s3';
import { defineBackend } from '@aws-amplify/backend';
import { storage } from './storage/resource';
const backend = defineBackend({
storage
});
const s3Bucket = backend.storage.resources.bucket;
const cfnBucket = s3Bucket.node.defaultChild as s3.CfnBucket;
cfnBucket.accelerateConfiguration = {
accelerationStatus: "Enabled" // 'Suspended' if you want to disable transfer acceleration
}

高速化された S3 エンドポイントを使用してファイルをアップロードする

AWSS3StorageUploadFileOptionsuseAccelerateEndpoint パラメータを true に設定することで、高速化された S3 エンドポイントに切り替えます。

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)
);

詳細は CDK のエスケープハッチ をご覧ください。