S3のクロスアカウントアクセス方法(とにかく簡単編)
目次
はじめに
こんにちは!スカイアーチHRソリューションズのアミです。
今回は、別のAWSアカウントのS3からファイルをダウンロードする方法について紹介したいと思います。
S3を使ってファイルを共有する方法は調べればたくさん出てくるのですが、ここではとにかく簡単に、少ない手順でをモットーに記載していきます!!
やること
S3にアップロードしたファイルを、別のアカウントのIAMユーザーを使用してダウンロードします。
設定方法
バケット作成
早速バケットを作成していきましょう。
まずはマネジメントコンソールからS3バケットを作成します。今回は全項目デフォルトで作成しますが、環境に合わせて作成していただければと思います。
次に、以下のバケットポリシーを設定します。この設定をすることでクロスアカウントアクセスが可能になります。
12桁のアカウントID、バケットのARNはご自身が利用する環境の値に変更して設定してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GetObject",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketname/*"
},
{
"Sid": "ListBucket",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::bucketname"
}
]
}
今回はアクセスするAWSアカウントからの全てのアクセスを許可をしていますが、Principalの値を変更すれば特定のユーザーやポリシーなどで制限することも可能です!
また、PutObjectを許可すればアップロードも可能になります。
アクセス
あとはアクセスするのみです!CLIコマンドを使用します。
EC2やローカルからAWS CLIを使用することもできるのですが、今回はとにかく簡単にアクセスしたいのでAWS CloudShellを使用します。
試しにS3のファイル一覧を確認してみましょう。
[cloudshell-user@ip-10-2-56-52 ~]$ aws s3 ls s3://s3-test-hrs-ami
2023-09-30 14:12:44 3477 test.txt
2023-09-30 14:12:44 6 test2.txt
バッチリです~!!
ダウンロード
AWS CloudShellで以下のコマンドを実行してダウンロードできます!
# 指定のパス配下のファイルを全てダウンロードする
# aws s3 cp s3://<指定のパス> <保存先となるCloudShellのディレクトリ> --recursive
[cloudshell-user@ip-10-2-56-52 ~]$ aws s3 cp s3://s3-test-hrs-ami /home/cloudshell-user --recursive
download: s3://s3-test-hrs-ami/test.txt to ./test.txt
download: s3://s3-test-hrs-ami/template1 to ./test2.txt
# 特定のファイルをダウンロードする
# aws s3 cp s3://<ファイルのパス> <保存先となるCloudShellのディレクトリ>
[cloudshell-user@ip-10-2-56-52 ~]$ aws s3 cp s3://s3-test-hrs-ami/test.txt /home/cloudshell-user
download: s3://s3-test-hrs-ami/test.txt to ./test.txt
余談ですが、CloudShellにダウンロードしたファイルは[アクション]ボタンからローカルにもダウンロードできます。
おわりに
以上でS3のクロスアカウントアクセスができるようになりました。あっという間でしたね◎
サクッと設定してサクッとファイル共有していきましょう!