別アカウントが所有するS3へのアップロードそしてダウンロードを挑戦した結果

AWS, S3

やろうとしたこと

AWSアカウント1 から、AWSアカウント2のバケットにファイルを置き、AWSアカウント3 でファイルを取得する。

準備

環境は以下の通り。これでいけるでしょう。

  1. 共有バケットの作成: AWSアカウント2 でバケット kyouyu を作成。
  2. アクセス側の設定 :AWSアカウント1 とAWSアカウント3 で kyouyu へのアクセス許可を付与したロール作成。(記載省略)
  3. 共有バケットの設定:バケットポリシーで上記ロールのアクセスを許可。
    kyouyu のバケットポリシー

できるかな

それではファイルを受け渡してみます。

  1. AWSアカウント1からファイルをアップロード

  2. AWSアカウント3からファイル をダウンロード

ダウンロードできませんでした。。。

なぜできないのか?

ファイルのオブジェクトの権限を確認してみました。

  • ファイルの所有者はAWSアカウント1
  • AWSアカウント1、AWSアカウント2 ともにFULL_CONTROL権限

大丈夫なハズと思いAmazonのドキュメントを調べてみると・・・・
バケットの所有者は、自分が所有していないオブジェクトへのアクセス許可を付与できません。
http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/access-policy-alternatives-guidelines.html

  • ファイルの所有者 AWSアカウント1 ≠ バケットの所有者 AWSアカウント2
    このファイルへは、バケットポリシーで指定したAWSアカウント3へのアクセス許可を付与できません。

なお、AWSアカウント2でアップロードしたファイルは所有者が一致するので、AWSアカウント3でダウンロードできました。

わかったこと

この方法では、複数アカウント間のファイルの受け渡しはできないことがわかりました。
クロスアカウントアクセスが必要になります。
(やっとクロスアカウントの必要性が理解できました)

この記事を書いた人

小田英了
小田英了

楽曲管理システムのサポートを担当しています。
趣味:ランニング めざせサブ3.5!

AWS, S3