1. ホーム
  2. amazon-web-services

[解決済み] `aws s3 cp` vs `aws s3 sync` 動作とコスト [終了しました]。

2022-03-10 23:11:52

質問

にデプロイしている静的サイトがあります。 s3 を使用し CloudFront を使用してユーザーに配布しています。サイトを構築した後、新しいビルドをプッシュして s3 . そのために、2つのアプローチを見つけました。

  • aws s3 cp --recursive ./public/ s3://bucket-name --cache-control 'public, max-age=300, s-maxage=31536000'

  • aws s3 sync --delete ./public/ s3://bucket-name --cache-control 'public, max-age=300, s-maxage=31536000'

毎週1~2回のデプロイを予定しています。

どれが安価(お金)か知りたいのですが?もっとはっきり言うと、この中でどれが長い目で見てコストがかからないか知りたいのです。

ドキュメントを読んでみたのですが、違いがよくわかりませんでした。どうかご教授ください。

どのように解決するのですか?

一つ注意すべきは aws s3 cp --recursiveaws s3 sync --delete は異なる動作をします。

aws s3 cp は、コピー先の領域にすでに存在するファイルであっても、すべてのファイルをコピーします。 また、コピー元からファイルが削除されても、コピー先からファイルを削除することはありません。

aws s3 sync は、ファイルをコピーする前にコピー先を見て、新しいファイルや更新されたファイルのみをコピーします。この --delete フラグは、ソースで削除されたものをデスティネーションで削除することもできます。

その sync コマンドは、2つのフォルダを同期させながら、最小限のデータをコピーするように設計されているので、このコマンドを使用します。 同期することで、S3バケットにプッシュされるデータは少なくなるはずなので、全体的なコストは少なくなるはずです。

反例を挙げるとすれば、例えば aws s3 cp よりも高性能かつ低コストで sync は、ファイルの転送だけが必要で、かつ 知っている はすべて宛先の新しいファイルです。 この方法は、転送を開始する前に転送先にファイルが存在するかどうかを確認する必要がないため、より高いパフォーマンスと低コストを実現します。