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