- 新しい順
- 投票が多い順
- コメントが多い順
ご質問ありがとうございます。S3とEC2間のファイル連携における同期の問題についてですね。
提供いただいた情報からは、「S3-Files」という具体的なAWSサービスや機能が特定できませんでした。一般的なS3とEC2の連携において、以下の点を確認することをお勧めします:
考えられる原因:
- キャッシュの問題
- EC2側でファイルをキャッシュしている場合、S3で直接更新されたファイルが反映されない可能性があります
- アプリケーションレベルやミドルウェアレベルでのキャッシュ設定を確認してください
- 同期メカニズムの不足
- EC2からS3へのアクセスが一度きりの読み込みで、その後の変更を検知する仕組みがない場合、古いデータが表示され続けます
- 定期的な同期や、変更検知の仕組みが必要です
推奨される対処方法:
- S3イベント通知の活用
- S3バケットでイベント通知を設定し、ファイル更新時にEC2側のアプリケーションに通知する仕組みを構築できます
- 定期的な同期
- AWS CLIやSDKを使用して、定期的にS3から最新のファイルを取得する仕組みを実装してください
- キャッシュのクリア
- アプリケーションやミドルウェアのキャッシュ設定を見直し、適切なTTL(Time To Live)を設定してください
より具体的なサポートが必要な場合は、AWS Support Center(https://console.aws.amazon.com/support/)で詳細な構成情報とともにお問い合わせいただくことをお勧めします。
回答済み 1ヶ月前
古いファイルが表示されるといった動作は私が試したときは見たことが無かったですが、こちら辺の説明が関連しているかもしれません。
S3のイベント通知を使用してS3 Filesに更新が反映されるようなのですが、データの有効期限が切れたものについては次回アクセスするときに更新されるようなので、反映に時間がかかるとそういうこともあり得るのかもしれません。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/s3-files-synchronization.html#s3-files-sync-changes-from-bucket
S3 Files は、S3 イベント通知を使用して S3 バケットの変更をモニタリングします。S3 API を使用する別のアプリケーションが S3 バケット内のオブジェクトを追加、変更、または削除すると、S3 Files は、現在データがファイルシステムの高性能ストレージに保存されているファイルについて、これらの変更をファイルシステムに自動的に反映します。ファイルシステムからデータの有効期限が切れたファイルは、次回アクセスするまで更新されません。その時点で、S3 Files は S3 バケットから最新バージョンを取得します。
ただ、期限が切れたものについてもアクセスしたときにS3から取ってくる動きになるはずなので今回の動作は不思議な動きをしている気がします。
可能性があるとすれば、インポートデータルールで取り込む対象のファイルサイズが小さくなっているのではという懸念です。
S3 Files の同期のカスタマイズ - Amazon Simple Storage Service
sizeLessThan – 自動的にインポートする最大ファイルサイズ (バイト単位)。S3 Files はすべてのファイルのメタデータをインポートしますが、このしきい値より小さいファイルのデータのみをインポートします。
ちなみに以下のコマンドの実行結果はどのようになってますでしょうか?
$ aws s3files get-synchronization-configuration --file-system-id fs-〜〜〜
{
"latestVersionNumber": 4,
"importDataRules": [
{
"prefix": "",
"trigger": "ON_DIRECTORY_FIRST_ACCESS",
"sizeLessThan": 51200
}
],
"expirationDataRules": [
{
"daysAfterLastAccess": 30
}
]
}
回答済み 1ヶ月前
