AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

複数の AWS アカウントを操り S3 にファイルをアップロードする

AWS のアカウントを追加する

利用するアカウントには S3 へのアクセスポリシーが設定されているものとする。

macbook:~ user$ aws configure --profile NAME
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: 
Default output format [None]:
  • NAME
    • 何かわかりやすい名前を指定する。今後コマンド利用する際に指定する名前なので少し考えよう。
  • AWS Access Key ID
    • AWS の IAM 管理から発行した値
  • AWS Secret Access Key
    • AWS の IAM 管理から発行した値
  • Default region name
    • 東京の場合は「ap-northeast-1」
  • Default output format
    • 何も指定しないと記述されないが、json になる

追加できたら、~/.aws/config に追記される。

S3 が見えるか、追加した profile を指定して確認する

macbook:~ user$ aws s3 ls --profile NAME
2017-03-15 22:28:15 muccha-good-looking-bucket

見えましたね。

ファイルをアップロードして確かめてみる

macbook:~ user$ aws s3 cp ~/Pictures/yakiniku.jpg s3://muccha-good-looking-bucket/ --profile NAME
upload: Pictures/yakiniku.jpg to s3://muccha-good-looking-bucket/yakiniku.jpg

このままだとアクセスしても Access Denied になります。 S3 のマネジメントコンソールから、yakiniku.jpg の権限を「全員」に「開く/ダウンロード」を指定して保存しましょう。

上記のバケット名や画像は実際には存在しないのですが、以下のような URL とすることでブラウザからアクセス出来ることを確認しましょう。

http://muccha-good-looking-bucket.s3-ap-northeast-1.amazonaws.com/yakiniku.jpg

見えたら成功です。

ちなみに

アップロードする時に権限を付与できるので、以下のようにすればマネジメントコンソールでの操作しなくても全世界に公開できると思います。

macbook:~ user$ aws s3 cp ~/Pictures/yakiniku.jpg s3://muccha-good-looking-bucket/ --acl public-read --profile NAME