概要
S3を複数のユーザで利用するファイルサーバ(ファイルストレージ)として利用する方法をご紹介します。
S3を作成して共有するだけでファイルのやりとりは可能ですが、すべてのユーザがrootユーザとしてアクセスすることになるのでセキュリティ上よろしくありません。IAMユーザとIAMグループを作成し、適切に権限を付与させていきます。
手順
S3バケットの作成
マネジメントコンソールの「S3」から、「バケットを作成する」を選択します。
バケット名とリージョンを入力し、ウインドウ左下の「作成」を選択します。
バケットができました。
IAMユーザの作成
マネジメントコンソールの「IAM」を開き、サイドメニューから「ユーザー」を選択します。
「ユーザを追加」を選択します。
「ユーザ名」を入力して、「プログラムによるアクセス」にチェックをいれて「次のステップ:アクセス権限」へすすみます。
一旦アクセス権限は飛ばします。
そのまま「次のステップ:確認」へすすみます。
「ユーザの作成」を選択します。
するとユーザが作成され、アクセスキーとシークレットアクセスキーが表示されます。
この情報はS3とのファイルのやり取りに必要になりますので「表示」を押してメモをとっておくか、「.csvのダウンロード」で情報をダウンロードしておきます。
確認したら「閉じる」を選択します。
IAMグループの作成
サイドメニューから「グループ」にすすみ、「新しいグループの作成」を選択します。
「グループ名」を入力し、「次のステップ」を選択します。
「グループの作成」を選択します。
続いて作成したグループにユーザを追加します。
グループを選択して、「グループのアクション」から「グループにユーザーを追加」を選択します。
IAMユーザの作成で作成したユーザを選択して「ユーザの追加」でユーザーをグループに追加します。
IAMポリシーの作成
サイドメニューから「ポリシー」にすすみ、「ポリシーの作成」を選択します。
「独自のポリシー」を選択します。
ポリシー名に任意の名前をつけ、「ポリシードキュメント」の欄に以下のJSONをコピーします。
kabegiwa-bucket
の部分はバケット名ですのでアクセス許可を与えたいS3の名前に変更してください。
それぞれ入力したら「ポリシーの作成」を選択します。
ポリシードキュメント例
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::kabegiwa-bucket", "arn:aws:s3:::kabegiwa-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::kabegiwa-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListAllMyBucket", "Resource": "arn:aws:s3:::*" } ] }
このポリシーは以下の3つのことを許可するポリシーです。
- kabegiwa-bucketのすべて(
/*
)に対してすべての許可であるs3:*
を許可 - kabegiwa-bucketに対して
s3:ListBucket
,s3:GetBucketLocation
でバケット一覧の取得とバケットの場所の取得を許可 - S3全体に
s3:ListAllMyBuckets
で存在するバケットの一覧取得を許可
IAMグループにポリシーをアタッチする
作成したポリシーから「アタッチされたエンティティ」タブを選択し、「アタッチ」をクリックします。
IAMグループの作成で作成したグループを選択し、「ポリシーのアタッチ」を選択します。
以上でAWS側の設定は完了です!
AWSCLIで実際にファイルのやり取りを行う
コンソールやコマンドプロンプトを開き以下のコマンドを実行し、ユーザ作成時に控えておいたアクセスキーとシークレットアクセスキーを入力します。
リージョンは東京リージョンの場合はap-northeast-1
と入力します。
最後のoutput formatは空白のままそのままEnterでかまいません。
kabegiwa: ~$ aws configure AWS Access Key ID [None]: アクセスキー AWS Secret Access Key [None]: シークレットアクセスキー Default region name [None]: ap-northeast-1 Default output format [None]: そのままEnter
そしてs3コマンドを使ってS3を操作します。
コピーする場合
kabegiwa: ~$ aws s3 cp wawawa.txt s3://kabegiwa-bucket/
移動する場合
kabegiwa: ~$ aws s3 mv wawawa.txt s3://kabegiwa-bucket/
バケットにファイルを置くことができました!
kabegiwa: ~$ aws s3 ls s3://kabegiwa-bucket 2017-10-31 21:31:14 0 wawawa.txt
まとめ
S3を利用してセキュリティを確保したファイルサーバを作成することができました。
CLIの利用が面倒な場合はCyberduckなどのGUIツールを利用するのがよいかもしれません。
Cyberduckを利用する方法はこちらから
Amazon Web Services パターン別構築・運用ガイド 一番大切な知識と技術が身につく
- 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,小西秀和,佐藤瞬
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/03/25
- メディア: Kindle版
- この商品を含むブログを見る