AWS Cloudfront のコンテンツのスナップショットを作るために、そのオリジンとしていたAWSのS3バケットのコピーのやり方を備忘として残しておきます。
AWS CLI for Windowsをインストールする
WebブラウザからアクセスできるAWSの管理コンソールでは、S3バケットをコピーする機能がないため、コマンドラインインタフェース(CLI)を使います。ここではWindows PowerShell から使うために、AWS CLI for Windows をインストールします。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
AWSCLIV2.msi ファイルをダンロードしたら、手元のWindows 上で実行してインストールします。
インストールが済んだら、PowerShell を立ち上げて、インストールされたAWS CLI のバージョンを確認しておきましょう。
aws --version
aws-cli/2.15.53 Python/3.11.8 Windows/10 exe/AMD64
S3のコピーに使用するIAMユーザを追加する
AWS CLIで使用するAWSのIAMユーザ(ここではcli-user)を作ります。今回はS3にアクセスするので、AmazonS3FullAccess ポリシーをそのユーザの権限としてアタッチします。
WebブラウザからAWS マネジメントコンソールにアクセスして、IAM(Identity and Access management)でユーザcli-userを作ります。
作った cli-userの「許可ポリシー」にAmazonS3FullAccess ポリシーをアタッチ(追加)します。
また、「アクセスキーを作成」から、AWS CLIでアクセスする際に使用するアクセスキーを作っておきます。アクセスキーを作ると、「アクセスキー」と「シークレットアクセスキー」のペアが作られるので、Windows 上で使うために控えて置きます。ここでは説明のために、次のキーが作られたと仮定して進めます。
アクセスキー:abcd1234abcd
シークレットアクセスキー: ABCD1234ABCD
AWS CLIの環境設定
PowerShell上で、AWS CLIに必要な設定ファイルを作成します。
ホームディレクトリの直下に .awsディレクトリ(~/.aws)を作成して、この下にconfigファイル、credentials ファイルを作成します。
mkdir .aws
configファイルには、AWS CLIの出力フォーマット(output)と、使用するリージョン(region)を指定しておきます。
また、credentials ファイルにはアクセスキーとシークレットアクセスキーを指定します。
configファイルやcredentials ファイルには複数の設定を「プロファイル」として記載できるので、今回は「test」というプロファイル名で設定しておきます。
=====config=====
[test]
output = json
region = us-east-1
=====credentials=====
[test]
aws_access_key_id = abcd1234abcd
aws_secret_access_key = ABCD1234ABCD
S3バケットをコピーする
S3バケット間で直接コピーする方法がないので、S3バケットの内容を一度Windows にコピーして、そのコピーを別のS3バケットに再度コピーします。
説明のために、コピー元のS3バケットを s3://original.foo.bar、コピー先のS3バケットを s3://copy.foo.bar とします。
まずは、AWS CLI を使ってS3バケット s3://original.foo.bar からPC上のs3backup フォルダにコピーします。
aws s3 cp s3://original.foo.bar ./s3backup --recursive --profile test
続いて、PC上のs3backup フォルダのファイルをS3バケット s3://copy.foo.bar にコピーします。
aws s3 cp ./s3backup s3://copy.foo.bar --recursive --profile test