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

Choose your framework/language

Gen1 DocsLegacy

Page updated May 12, 2026

ファイルのアップロード

アップロード機能の実装

注意: ストレージAPIのTransfer Accelerationを有効にする方法については、Transfer Accelerationのドキュメントを参照してください。

ファイルからのアップロード

以下は、ファイルオブジェクトからファイルをアップロードする方法の例です。ファイルオブジェクトはローカルマシンや別のソースから取得できます。

import React from 'react';
import { uploadData } from 'aws-amplify/storage';
function App() {
const [file, setFile] = React.useState();
const handleChange = (event) => {
setFile(event.target.files?.[0]);
};
const handleClick = () => {
if (!file) {
return;
}
uploadData({
path: `photos/${file.name}`,
data: file,
});
};
return (
<div>
<input type="file" onChange={handleChange} />
<button onClick={handleClick}>Upload</button>
</div>
);
}

データからのアップロード

メモリに保存されたデータをクラウドにアップロードしたい場合は、この例に従ってください。

import { uploadData } from 'aws-amplify/storage';
try {
const result = await uploadData({
path: "album/2024/1.jpg",
// Alternatively, path: ({identityId}) => `album/${identityId}/1.jpg`
data: file,
}).result;
console.log('Succeeded: ', result);
} catch (error) {
console.log('Error : ', error);
}

指定したバケットへのアップロード

bucketオプションを指定することで、特定のバケットへのアップロード操作を実行することもできます。Amplify Backendでのターゲットバケットの割り当て名を表す文字列を渡すことができます。

import { uploadData } from 'aws-amplify/storage';
const result = await uploadData({
path: 'album/2024/1.jpg',
data: file,
options: {
// Amplify Backendで割り当てられた名前を使ってターゲットバケットを指定する
bucket: 'assignedNameInAmplifyBackend'
}
}).result;

あるいは、コンソールからバケット名とリージョンを指定してオブジェクトを渡すこともできます。

import { uploadData } from 'aws-amplify/storage';
const result = await uploadData({
path: 'album/2024/1.jpg',
data: file,
options: {
// あるいは、コンソールからバケット名と関連するリージョンを指定する
bucket: {
bucketName: 'bucket-name-from-console',
region: 'us-east-2'
}
}
}).result;

アップロードの進捗を監視する

onProgressオプションを使用してアップロードの進捗を監視します。

import { uploadData } from 'aws-amplify/storage';
const monitorUpload = async () => {
try {
const result = await uploadData({
path: "album/2024/1.jpg",
// Alternatively, path: ({identityId}) => `album/${identityId}/1.jpg`
data: file,
options: {
onProgress: ({ transferredBytes, totalBytes }) => {
if (totalBytes) {
console.log(
`Upload progress ${Math.round(
(transferredBytes / totalBytes) * 100
)} %`
);
}
},
},
}).result;
console.log("Path from Response: ", result.path);
} catch (error) {
console.log("Error : ", error);
}
}

アップロードの一時停止、再開、キャンセル

uploadDataリクエストの再開、一時停止、キャンセルをサポートするコールバック関数があります。

import { uploadData, isCancelError } from 'aws-amplify/storage';
// タスクの一時停止、再開、キャンセル
const uploadTask = uploadData({ path, data: file });
//...
uploadTask.pause();
//...
uploadTask.resume();
//...
uploadTask.cancel();
//...
try {
await uploadTask.result;
} catch (error) {
if (isCancelError(error)) {
// タスクのキャンセルによってスローされたエラーを処理する
}
}

オブジェクトメタデータ付きの転送

metadataオプションを渡すことで、カスタムメタデータをアップロードされたオブジェクトに関連付けることができます。

import { uploadData } from 'aws-amplify/storage';
const result = await uploadData({
path: 'album/2024/1.jpg',
data: file,
options: {
metadata: {
customKey: 'customValue',
},
},
});

その他のアップロードオプション

uploadDataの動作とアップロードされたオブジェクトのプロパティは、追加のオプションを渡すことでカスタマイズできます。

import { uploadData } from 'aws-amplify/storage';
const result = await uploadData({
path: 'album/2024/1.jpg',
data: file,
options: {
// ダウンロード時に使用するcontent-typeヘッダー
contentType: "image/jpeg",
// オブジェクトの表示方法を設定する
contentDisposition: "attachment",
// アクセラレートエンドポイントを使用するかどうか
useAccelerateEndpoint: true,
// リクエストされたバケットを所有するアカウントID
expectedBucketOwner: "123456789012",
// アップロード完了前に同じキーを持つオブジェクトがすでに存在するかチェックするかどうか
preventOverwrite: true,
// S3がデータの整合性を検証できるよう、アップロードするデータのチェックサムを計算するかどうか
checksumAlgorithm: "crc-32", // 現在は'crc-32'のみサポート
},
});
オプションデフォルト説明
bucketstring |
{ bucketName: string;
region: string; }
Amplify設定のデフォルトバケットとリージョンAmplify Backendでの割り当て名を表す文字列、またはコンソールのバケット名とリージョンを指定するオブジェクト。

詳細は追加のストレージバケットの設定をご覧ください。
contentTypestringapplication/octet-streamファイルをダウンロードする際のデフォルトcontent-typeヘッダー値。

詳細はContent-Typeのドキュメントをご覧ください。
contentEncodingstringファイルをダウンロードする際のデフォルトcontent-encodingヘッダー値。

詳細はContent-Encodingのドキュメントをご覧ください。
contentDispositionstringオブジェクトの表示情報を指定します。

詳細はContent-Dispositionのドキュメントをご覧ください。
metadatamap<string>S3のオブジェクトと一緒に保存するメタデータのマップ。

詳細はS3メタデータのドキュメントをご覧ください。
useAccelerateEndpointbooleanfalseアクセラレートエンドポイントを使用するかどうか。

詳細はTransfer Accelerationをご覧ください。
expectedBucketOwnerstring-リクエストされたバケットを所有するアカウントID。
preventOverwritebooleanfalseアップロード完了前に同じキーを持つオブジェクトがすでに存在するかチェックするかどうか。存在する場合、Precondition Failedエラーがスローされます。
checksumAlgorithm"crc-32"-S3がデータ整合性を検証できるよう、アップロードするデータのチェックサムを計算するかどうか。現在は'crc-32'のみサポートされています。

1時間以上前に開始されたアップロードは自動的にキャンセルされます。デバイスがオフラインになったりユーザーがログアウトするなどの場合、不完全なファイルがAmazon S3アカウントに残ることがあります。不完全なアップロードリクエストを自動的にクリーンアップするために、S3ライフサイクルルールの設定を推奨します。

マルチパートアップロード

Amplifyは5MBを超えるオブジェクトに対して自動的にAmazon S3マルチパートアップロードを実行します。S3のマルチパートアップロードの詳細については、マルチパートアップロードを使用したオブジェクトのアップロードとコピーを参照してください。

署名付きURLを使用したアップロード

method: 'PUT'を指定したgetUrl APIを使用して、S3に直接ファイルをアップロードするための署名付きURLを生成できます。これは以下のような場合に便利です:

  • 標準HTTPURLエンドポイントのみを受け付けるサードパーティのツールやライブラリと統合する必要がある場合(例: DuckDB、データベースエクスポートツール)
  • Next.js APIルートやその他のSSRフレームワークなど、サーバーサイドの環境からアップロードしたい場合
  • 一時的なアップロードリンクを別のクライアントやサービスと共有したい場合
import { getUrl } from 'aws-amplify/storage';
// アップロード用の署名付きURLを生成する
const { url, expiresAt } = await getUrl({
path: 'album/2024/1.jpg',
options: {
method: 'PUT',
expiresIn: 3600, // URLは1時間有効
contentType: 'image/jpeg',
}
});
console.log('Upload URL: ', url);
console.log('URL expires at: ', expiresAt);

次に署名付きURLを使用して標準HTTPのPUTリクエストでファイルをアップロードします:

await fetch(url, {
method: 'PUT',
body: file,
headers: {
'Content-Type': 'image/jpeg',
},
});

method: 'PUT'が指定された場合、オブジェクトがまだ存在しない可能性があるため、validateObjectExistenceオプションは無視されます。

署名付きURLを生成する際にcontentTypeを指定した場合、アップロードリクエストに一致するContent-Typeヘッダーを必ず含める必要があります。不一致があるとS3が署名エラーでリクエストを拒否します。

サードパーティツールでの署名付きURLの使用

署名付きURLは標準HTTPエンドポイントであるため、HTTPアップロードをサポートする任意のツールで使用できます:

import { getUrl } from 'aws-amplify/storage';
const { url } = await getUrl({
path: 'analytics/data.parquet',
options: {
method: 'PUT',
contentType: 'application/octet-stream',
}
});
// 例: DuckDBを使用してクエリ結果をS3に直接エクスポートする
await duckdb.query(`
COPY (SELECT * FROM processed_data)
TO '${url}'
(FORMAT PARQUET)
`);

署名付きURLアップロードオプション

オプションデフォルト説明
method'GET' | 'PUT''GET'署名付きURLのHTTPメソッド。アップロードURLを生成するには'PUT'を使用します。
bucketstring |
{ bucketName: string;
region: string; }
Amplify設定のデフォルトバケットとリージョンAmplify Backendでの割り当て名を表す文字列、またはコンソールのバケット名とリージョンを指定するオブジェクト。

詳細は追加のストレージバケットの設定をご覧ください。
expiresInnumber900URLが期限切れになるまでの秒数。

署名付きURLの有効期限はセッションに依存し、最大1時間となります。
contentTypestringアップロードするファイルのMIMEタイプ。指定した場合、アップロードリクエストに一致するContent-Typeヘッダーを含める必要があります。
contentDispositionstring | objectオブジェクトの表示情報を指定します。文字列(例: 'attachment; filename="file.jpg"')またはオブジェクト(例: { type: 'attachment', filename: 'file.jpg' })で指定できます。
expectedBucketOwnerstringリクエストされたバケットを所有するアカウントID。