【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

今回は、新ユーザーを作成して「アクセスキー」「シークレットキー」を作成し、Windows よりインターネット経由で AWS S3 にアクセスをするための設定手順について解説をします。

 

 

 

Amazon S3(Simple Storage Service)とは

Amazon S3(Simple Storage Service)とは、インターネット上にあるストレージサービスです。

S3 の堅牢性はイレブンナイン(9が11個)と呼ばれ、99.999999999% の耐久性があると言われています。

このイレブンナインですが、絶対に S3 のサービスが停止しないというわけではなく、1年のうちに S3 を利用できない時間が数分間という意味のようです。

 

Amazon S3 料金表

Amazon S3 の料金表です。

 

Amazon S3 Pricing
https://aws.amazon.com/jp/s3/pricing/?p=ps

 

下図を確認しても分かりますが、ほとんどの企業でも「50TB」は超えることはないと思うので「実質「0.025USD/GB」で利用できます。

※仮に超えたとしても「0.024USD/GB」となり多少割安になります。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

S3 はバックアップ用ストレージに優れている

S3 の「データ転送料金表」を確認すると S3 はバックアップ用ストレージとして優れています。

基本的にバックアップデータは万が一の時のために保存するだけで、万が一がなければバックアップデータを復元することはないため「データ転送料金」としては実質0円と計算できます。

しょっちゅうバックアップデータをリストアするような環境の場合は、別のサービスを利用する方がお得かもしれません。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

Amazon S3 の利用料金の計算例

例えば、バックアップデータ100GBを7世代(一週間分)取得するとして

100GB×7=700GB

1USD=113.65円

700GB×0.025×113.65=1988.875円

1か月 1,988円

 

700GB のバックアップデータを「Amazon S3」に保存するとした場合、1か月の利用料金は約2,000円になります。

 

 

作業の概要

以下の手順で設定し動作確認をします。

  1. Amazon S3 バケットの作成
  2. S3へアクセスするための「ユーザー」と「アクセスキー(Access key ID)」と「シークレットキー(Secret access key)」を取得する
  3. Windows に AWS Cli をインストールする
  4. S3 へのアクセス確認

 

 

 

Amazon S3 バケットの作成手順

初めに Amazon S3 バケットを作成します。

 

AWS マネジメントコンソールにログインし、「サービス」「ストレージ」「S3」をクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

Amazon S3 のトップ画面に移動するので、下図のように「バケットを作成する」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

以下のように「バケットの作成」画面が表示されます。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

  • バケット名: ← DNS準拠のバケット名を入力する

「DNS準拠のバケット名」と記載があります。

 

 

 

S3バケットの命名規則

Amazon S3 バケットの命名規則は以下のようにまとめられています。

 

バケットの制約と制限

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/BucketRestrictions.html

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

バケット名は「DNS 命名規則に沿って命名する必要があります。」とありますが、「DNS 命名規則」とはなんでしょうか。

 

 

■ DNS 命名規則とは

DNS 命名規則を簡単にまとめると以下のようになります。

  • 長さが 25 文字を超えない
  • 文字で始まり、英数字で終わる。英数字とハイフン以外は使用しない
  • 末尾にハイフンと数字を付けない

 

 

 

以下のようにバケット名を入力して「次へ」ボタンをクリックします。

  • バケット名 : backup-s3-001
  • リージョン : アジアパシフィック(東京)

■①名前とリージョン【Part.1】

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

■①名前とリージョン【Part.2】

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

バージョニングとは

バージョニングを使用すると、1 つのバケットで複数バージョンのオブジェクト(ファイルなど)を維持できます。

つまりバージョニングとは、同じバケット内でファイルの複数バージョンを保持する機能です。

(Windows のシャドウコピーがイメージしやすいかもしれません)

 

バージョニングを利用すると Amazon S3 バケットに格納されたあらゆるファイルの過去のバージョンを取得したり復元できます。

そのため、誤ってユーザーがファイルを消した場合や、過去のファイルを上書きしてしまった場合でも簡単に回復することができます。

 

 

■今回の S3 使用方法

今回作成した S3 バケットは、バックアップファイルを保存する目的で、バックアップファイルは以下のように考えています。

【ファイル名の例】

  • backup-20181001
  • backup-20181002
  • backup-20181003

つまり日付ごとのバックアップファイルで、障害がなければファイルを開くことはないため、バージョニングの機能は不要です。

 

サーバーアクセスのログ記録とは

サーバーアクセスのログには、バケットに対するリクエストの詳細が記録され、そのログ情報はセキュリティやアクセスの監査に役立ちます。

Amazon S3 バケットに対するサーバーアクセスのログ記録を有効にしても追加料金は発生しませんが、システムが配信するログファイルについては、通常のストレージ料金がかかります (ログファイルはいつでも削除できます)。

今回は利用しません。

「次へ」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

■③アクセス許可の設定画面

「パブリックアクセス許可を管理する」で、今回は「このバケットにパブリック読み取り権限を付与しない(推奨)」を選択します。

※パブリックアクセスを許可にすると世界中からアクセスが可能になるので注意です。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

以下の 2 つの S3 へのパブリックアクセスの許可を設定できます。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

設定を確認し問題がなければ「バケットを作成」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

以下のように S3 バケットが作成されました。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

S3へアクセスするための「ユーザー」「アクセスキー(Access key ID)」「シークレットキー(Secret access key)」を取得する手順

S3へアクセスするための「ユーザー」「アクセスキー(Access key ID)」「シークレットキー(Secret access key)」を取得する手順です。

 

AWS コンソール画面にログインし、下図のようにアカウントをクリックし「セキュリティ認証情報」をクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

「セキュリティ認証情報」画面に移動したら、右側ペインより「ユーザー」をクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

「ユーザーを追加」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

下図のように設定を入れます。

  • ユーザー名 : 任意のユーザー名を入力します。
  • アクセスの種類 : 「プログラムによるアクセス」を選択します。

「アクセス権限」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

下図のように設定します。

  • アクセス許可の設定 : 「既存のポリシーを直接アタッチ」を選択します。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

下図のように「ポリシーのフィルタ」「S3」と入力して検索すると、「AmazonS3FullAccess」が検索結果として表示されるのでクリックします。

「確認」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

設定を確認し問題がなければ「ユーザーの作成」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

以下のように「ユーザーを追加」画面が表示されるので「.csv のダウンロード」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

「credentials.csv」ファイルがダウンロードされるのでダブルクリックして開きます。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

以下のように「User name」「Access key ID」「Secret access key」が記載されていることを確認します。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

AmazonS3FullAccess の権限内容の確認

今回割り当てた「AmazonS3FullAccess」の権限はどのように規定されているのか確認します。

 

今回作成した

 

 

今回割り当てたデフォルトで存在している「AmazonS3FullAccess」は、下図のように「Resource」 “*(アスタリスク)”になっているため、すべての S3 に対して権限が割り当てられます。

そのため、特定の S3 に対してのみ権限を割り当てたい場合は、別途ポリシー(例:AmazonS3BackupFullAccess等)を作成し、Resource に特定のバケットを設定します。

 

※「AmazonS3FullAccess」はどのバケットでもどのフォルダにもアクセスができ、更にファイルを削除したりファイルを変更できる一番強い権限です。そのためセキュリティのリスクが高いので最低限必要な権限だけを割り当てるようにします。権限を絞ったポリシーの設定は以下で解説をします。

 

 

 

権限を絞ったポリシーを作成してユーザーに割り当てる手順

先ほど作成した「buckup-s3-upload-user」ユーザーは「AmazonS3FullAccess」が割り当てられているため権限が強すぎます。

そのため、権限を絞ったポリシーを作成して「buckup-s3-upload-user」ユーザーに割り当てます。

 

新規ポリシーを作成する

AWS 管理コンソール画面より、右上のアカウントをクリックして「セキュリティ認証情報」をクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

「Identity and Access Management」画面に移動したら左側ペインより「ポリシー」をクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

「ポリシーの作成」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

 

「ポリシーの作成」画面で「JSON」タブをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

以下のようにポリシーを設定します。

ポリシーはすべてのバケットに対する権限を割り当てるのではなく、特定のバケット(backup-s3-001)に対してだけ権限を割り当てています。


    “Version”: “2012-10-17”, 
    “Statement”: [ 
        { 
            “Sid”: “VisualEditor0001”, 
            “Effect”: “Allow”, 
            “Action”: “s3:*”, 
            “Resource”: [ 
                “arn:aws:s3:::backup-s3-001/*”,   ←  バケットの中身(フォルダやファイル)に対しての操作 
                “arn:aws:s3:::backup-s3-001″   ← バケットに対しての操作 
            ] 
        }, 
        { 
            “Sid”: “VisualEditor0002”, 
            “Effect”: “Allow”, 
            “Action”: “s3:ListAllMyBuckets”, ← s3:ListAllMyBuckets と記述することで、TOPで弾かれることがなくなる。 
            “Resource”: [ 
               “arn:aws:s3:::*” ← リソースはすべての S3 を設定します。 
            ] 
        } 
    ] 

 

 

 

 

 

 

「Review policy」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

 

名前を入力します。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

「Create policy」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

 

 

 

 

 

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S3 バケットのアクセス権の設定手順

S3 バケットのアクセス権は「アクセス権限」タブをクリックすると以下のように 3つのボタンを確認できます。

  • アクセスコントロールリスト
  • バケットポリシー
  • CORS の設定

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

下図のようにアカウントの「AWS 正規ユーザー ID(Cannonical User ID)」を確認できます。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

AWS 正規ユーザー ID(AWS Cannonical User ID)の確認方法

他にも AWS 正規ユーザー ID(AWS Cannonical User ID)は AWS マネジメントコンソールより確認することができます。

 

アカウントをクリックして「セキュリティ認証情報」をクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

下図のように「AWS アカウント ID(AWS Account ID)」「正規ユーザー ID(Cannonical User ID)」を確認することができます。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

 

アクセスコントロールリストについて

「バケット」「オブジェクト(ファイル)」へのアクセスを管理できます。

各バケットとオブジェクトには ACL がアタッチされています。

各バケットとオブジェクトに対してアクセスが許可される「アカウントもしくはグループ」「アクセスの種類」が定義されます。

 

 

バケットポリシーについて

ポリシーを JSON で定義します。

上部でユーザー「backup-s3-upload-user」にポリシー「AmazonS3FullAccess」を割り当てて「アクセスキー」「シークレットキー」を取得する手順を解説しましたが、「バケットポリシー」は設定画面に直接ポリシーを書き込むイメージです。

特定の IAMユーザー、特定の AWS アカウントを指定できます。

Condition(条件)で接続元IPアドレスを絞ったり、細かく条件を指定できます。

 

■バケットポリシーの例

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/example-bucket-policies.html

 

 

バケットポリシーの例


  “Version”:”2012-10-17″, 
  “Statement”:[ 
    { 
      “Sid”:”AddPerm”, 
      “Effect”:”Allow”, 
      “Principal”: “*”, 
      “Action”:[“s3:GetObject”], 
      “Resource”:[“arn:aws:s3:::examplebucket/*”] 
    } 
  ] 
}

 

  • Sid:ステートメントID。ユーザーが識別しやすいタグのようなもの。かぶらなければOKです。
  • Effect:Allow(許可)、Deny(拒否)かを記載します。
  • Principal:リソースへのアクセスを許可または拒否するユーザー、アカウント、サービスを指定します。「*」の場合は全部が対象です。
  • Action:どのような操作(オペレーション)をするか記載します。(例:CreateBucket、DeleteBucket、ListBucket など)
  • Resource:対象となるオブジェクトを記載します。ARN で記載します。(例:arn:aws:s3:::backup-s3-001 など)

 

バケットの ARN は以下の方法で確認できます。

下図の赤い枠で囲まれた部分をクリックします。

※「backup-s3-001」のリンクをクリックするとバケットの下に移動します。

 

 

 

下図の「バケット ARN をコピーする」ボタンをクリックすると、ARN をコピーすることができます。

 

 

 

 

CORS の設定について

CORSは「Cross-Origin Resource Sharing」の略です。

特定のドメインにロードされた クライアント ウェブ アプリケーション が異なるドメイン内のリソースと通信する方法を定義します。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

Windows に AWS Cli をインストールする手順

S3 へのバックアップファイルのアップロードのため Windows に AWS Cli をインストールします。

 

以下のURLにアクセスします。

Microsoft Windows で AWS Command Line Interface をインストールする
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/awscli-install-windows.html

 

使用している Windows の「システムの種類」を確認し「64ビット」もしくは「32ビット」の MSI インストーラの URL をクリックしてダウンロードします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

「コントロールパネル」「システム」をクリックして「64ビット」もしくは「32ビット」かを確認します。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

ダウンロードした「AWSCLI32.msi」ファイルをダブルクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

下図の画面が表示されたら「実行」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

「Next」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

「I accept the terms in the License Agreement」にチェックを入れて「Next」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

「Next」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

「Install」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

インストールが完了したら「Finish」ボタンをクリックします。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

S3 へのアクセス確認

最後に S3 へアクセスができるか確認します。

 

コマンドプロンプトを起動します。

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

 

 

以下のように「aws –version」コマンドを実行し、aws-cliのバージョンが表示されれば正常にインストールされています。

C:\>aws –version 
aws-cli/1.16.24 Python/2.7.15 Windows/7 botocore/1.12.14 
 
C:\>

 

 

以下のように「aws configure」コマンドで先ほど取得した「アクセスキー(Access Key ID)」「シークレットキー(Secret Access Key)」を設定します。

C:\>aws –version 
aws-cli/1.16.24 Python/2.7.15 Windows/7 botocore/1.12.14 
 
C:\>aws configure 
AWS Access Key ID [None]: AKXXXXXXXXXXXXXXXQ 
AWS Secret Access Key [None]: NXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXd 
Default region name [None]: ap-northeast-1
Default output format [None]: json
 
C:\> 

 

 

「aws s3 ls」コマンドを実行し以下のようにバケット一覧が表示されれば正常に設定ができています。

C:\>aws s3 ls 
C:\Program Files\Amazon\AWSCLI\.\dateutil\parser\_parser.py:1175: UnicodeWarning : Unicode equal comparison failed to convert both arguments to Unicode – interpreting them as being unequal 
2018-09-30 20:11:25 backup-s3-001 
2018-09-30 20:13:04 test-backup-01 
 
C:\>

 

【AWS】【S3】作成手順 & アップロード手順 & アクセス権限設定手順

 

 

Amazon S3 へアクセスするためのポート

社内やデータセンターから Amazon S3 へアクセスする場合は、ファイアウォールでアウトバウンドで「TCP/443」を許可しておきます。

 

 

 

まとめ

ポリシーや権限がいろいろからんで複雑に見えますが、シンプルに以下の手順で S3 に正しくアクセス権限を設定できると思います。

  1. どこに誰からどの権限でアクセスをさせたいのか決める(設計)
  2. S3バケットを作る←ARNができる
  3. 作成したS3バケット用のポリシーを作る(AmazonS3FullAccessをコピーしてリソースや権限を変更して作る)
  4. 新規でユーザーを作成し、作成したポリシーを割り当てて、「アクセスキー」と「シークレットキー」を取得する
  5. クライアントに「AWS CLI」をインストールして「アクセスキー」と「シークレットキー」を設定する

 

 

 

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください