AWSの環境構築(S3)

S3(Simple Storage Service)へのファイルのアップロードはCLI経由で行うため、最初にCLI環境の構築が必要。

S3の概要

S3はその名前の通りオブジェクトストレージ。

  • 99.999999999%(ナイン・イレブン)の耐久性を実現する。
  • S3は単純なKVS(Key-Value型データストア)であり「ディレクトリでファイルを管理する」従来のファイルサーバの仕組みと異なる。
  • 従量課金制。
  • 容量制限なし。

S3の用語

バケット

  • オブジェクトの保存先。
  • 作成可能なバケット数は1アカウントあたり最大で100個まで。
  • バケット名はグローバルでユニークな必要あり。

オブジェクト

  • S3に格納されるファイル。
  • 上限5T。

キー

  • オブジェクト固有の識別子(オブジェクトの名前)。
  • オブジェクトにはウェブサービスエンドポイント、バケット名、キー、(およびオプションでバージョン)を組み合わせることで一意にアクセスすることができる。

CLI環境の準備

  • アクセスキーおよびシークレットアクセスキー*1を生成する。
  • aws-cliをインストールする。
$ sudo pip install awscli

CLI環境の設定

aws configureコマンドを実行し、アクセスキー・シークレットアクセスキー・デフォルトリージョン・デフォルト出力形式を設定する。

# aws configureコマンド実行後は設定した内容が表示される。
$ aws configure
AWS Access Key ID [********************]: 
AWS Secret Access Key [********************]: 
Default region name [ap-northeast-1]: 
Default output format [text]: 

# .awsディレクトリが作成される。
$ ls .aws
config      credentials

バケットの作成〜オブジェクトのアップロード例

# パケットの作成
$ aws s3 mb s3://test0515
make_bucket: test0515
$ aws s3 ls
2018-05-09 00:11:30 test-croudtrail-bucket
2018-05-15 15:03:15 test0515

# オブジェクトのアップロード
$ aws s3 cp icon.png s3://test0515/icon
upload: ./icon.png to s3://test0515/icon

権限の設定

https://s3.console.aws.amazon.com/s3/にアクセスしてオブジェクトに読み取り権限を付与した。

アップロード確認

ブラウザでhttp://test0515.s3.amazonaws.com/iconにアクセスすると画像が表示された! f:id:okn-yu:20180515152713p:plain

バケットの削除

オブジェクトが存在するバケットを削除しようとすると失敗する。

# 失敗例
$ aws s3 rb s3://test0515
remove_bucket failed: s3://test0515 An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty

# オブジェクトの削除
$ aws s3 rm s3://test0515/icon
delete: s3://test0515/icon

# バケットの削除
$ aws s3 rb s3://test0515
remove_bucket: test0515

# バケットが削除確認
$ aws s3 ls
2018-05-09 00:11:30 test-croudtrail-bucket

参考

gihyo.jp www.task-notes.com

*1:シークレットアクセスキーが表示されるのは初回のみ。もしシークレットアクセスキーを忘れた場合は再度アクセスキーの生成からやり直す必要がある。