概要
AWS のs3 のバケットを別アカウントで見えるようにする手順のメモ
手順
AccountA (以降【A】) から AccountB(以降【B】)に公開するものとする。
- 【A】に
bucket-a
作成。ファイルを配置。 - 【A】の
bucket-a
のバケットポリシーで下記を追加(【B】の root に対して公開):-
aa/
以下に List 限定 -
aa/aa1/
以下は読み取り専用 -
aa/aa2/
以下は読み書き可能
{ "Version": "2012-10-17", "Statement": [ { "Sid": "OpenToBToList", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{BのアカウントID}:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::backet-a", "Condition": { "StringLike": { "s3:prefix": "aa/*" } } }, { "Sid": "OpenToBToReadOnly", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{BのアカウントID}:root" }, "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::backet-a/aa/aa1/*" ] }, { "Sid": "OpenToBToReadWrite", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{BのアカウントID}:root" }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::backet-a/aa/aa2/*" ] } ] }
-
- 【B】のユーザに下記のポリシーを適用(【B】の root が個別のユーザに対してアクセスを許可):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccessToA", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::backet-a", "arn:aws:s3:::backet-a/*" ] } ] }
- 【B】から下記実行:
aws s3 ls s3://bucket-a/aa/
注意
-
aws s3 ls
ではバケット名は出て来ない。コンソールのバケット一覧にも出てこない。 - Admin の権限でアクセスするならユーザのポリシーは関係ない(テストするときには注意)。
おまけ - WinScp から上記に繋ぐ場合の設定
-
転送プロトコル
:Amazon S3
-
ホスト名
:s3.amazonaws.com
-
ポート番号
:443
-
設定
>ディレクトリ
>リモート ディレクトリ
:/bucket-a/aa/