AWS S3の作成方法【初心者】


仕事で、S3を利用することになったので備忘。

#IAMの作成

IAMの作成の順番としては、以下の通り。
ポリシーの作成⇨グループの作成⇨ユーザーの作成

参考：[【図解/AWS】IAM入門～ロールとグループとポリシーの違い,設計・設定手順について～](https://milestone-of-se.nesuke.com/sv-advanced/aws/iam-policy-role-group/)

##ポリシーの作成

以下を参考にし、ポリシーを作成。

[AWS S3でホワイトリスト形式でIP制限する（特定IPのみアクセス許可）](https://qiita.com/flat-8-kiki/items/5392d931d8e34a4e2ae4#allow-ipaddress%E3%82%92%E4%BD%BF%E3%81%86%E5%A0%B4%E5%90%88)
[S3のアクセスコントロールまとめ](https://qiita.com/ryo0301/items/791c0a666feeea0a704c#%E5%AF%BE%E8%B1%A1%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE%E6%8C%87%E5%AE%9A)


```json:
{
    "Version": "2012-10-17",
    "Statement":[
      // S3ホームディレクトリでバケット一覧を表示するために必要
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListAllMyBuckets"
         ],
         "Resource":"arn:aws:s3:::*"
      },
      // バケットに対する操作を許可
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket",
            "s3:GetBucketLocation"
         ],
         "Resource":"arn:aws:s3:::samplebucket20191014"
      },
      // オブジェクトに対する操作を許可
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject",
            "s3:DeleteObject"
         ],
         "Resource":"arn:aws:s3:::samplebucket20191014/*",
         // IPアドレスの制限
         "Condition": {
            "IpAddress": {
                "aws:SourceIp": [
                    "xxx.xxx.xx.xxx"
                ]
            }
        }
      }
   ]
}
```

###注意点
`Version`というくらいだから、バージョン管理だと思い、同日日付に変更するとエラーになる。
調べると、`2012-10-17`でポリシー変数（Effect）とかを利用できるらしい
以下、参考にしたサイト
[AWS/S3のバケットポリシー入門](https://morizyun.github.io/infrastructure/aws-s3-bucket-policy.html)
[S3のアクセスコントロールまとめ](https://qiita.com/ryo0301/items/791c0a666feeea0a704c#version)

また、ソースにあるコメントを削除しないとエラーになりました。

##グループの作成

任意のグループ名を作成し、上記で作成したポリシーを割り当てます。

##ユーザーの作成

任意のユーザー名を作成します。
ここで、`アクセスの種類`を選択します。
また、グループを利用せず、ユーザに直接ポリシーを割り当てることもできます。

なお、作成完了時に、シークレットアクセスキー・アクセスキー・パスワードが表示されるので忘れずにメモしましょう。
[AWSアクセスキー作成](https://qiita.com/miwato/items/291c7a8c557908de5833#3-%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%AD%E3%83%BCid%E3%82%B7%E3%83%BC%E3%82%AF%E3%83%AC%E3%83%83%E3%83%88%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%AD%E3%83%BC%E3%81%AE%E7%A2%BA%E8%AA%8D)

#AWS CLI のインストール

利用ユーザに aws cli をインストールしてもらいます。
今回のエンドユーザは、windowsのため、以下を参考にインストールしてもらいました。

[AWS CLIのセットアップ(Windows)](https://qiita.com/riversun/items/4bb83ac39c0a9a86b1d6)
[WS CLIのインストールから初期設定メモ](https://qiita.com/n0bisuke/items/1ea245318283fa118f4a#aws-cli%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97)

##接続確認

`aws s3 ls`をコマンドプロンプトに入力して、バケット一覧が表示されれば問題ありません。

#コンソールでの接続確認

[IAM] - [ユーザー] - [認証情報タグ] に「コンソールのサインインリンク」が表示されるので、アクセスします。
ユーザー名・パスワードを入力すると、S3のみアクセスできることを確認します。


#参考
[【図解/AWS】IAM入門～ロールとグループとポリシーの違い,設計・設定手順について～](https://milestone-of-se.nesuke.com/sv-advanced/aws/iam-policy-role-group/)
[AWS S3でホワイトリスト形式でIP制限する（特定IPのみアクセス許可）](https://qiita.com/flat-8-kiki/items/5392d931d8e34a4e2ae4#allow-ipaddress%E3%82%92%E4%BD%BF%E3%81%86%E5%A0%B4%E5%90%88)
[S3のアクセスコントロールまとめ](https://qiita.com/ryo0301/items/791c0a666feeea0a704c#%E5%AF%BE%E8%B1%A1%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE%E6%8C%87%E5%AE%9A)
[AWS/S3のバケットポリシー入門](https://morizyun.github.io/infrastructure/aws-s3-bucket-policy.html)
[S3のアクセスコントロールまとめ](https://qiita.com/ryo0301/items/791c0a666feeea0a704c#version)
[AWSアクセスキー作成](https://qiita.com/miwato/items/291c7a8c557908de5833#3-%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%AD%E3%83%BCid%E3%82%B7%E3%83%BC%E3%82%AF%E3%83%AC%E3%83%83%E3%83%88%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%AD%E3%83%BC%E3%81%AE%E7%A2%BA%E8%AA%8D)
[AWS CLIのセットアップ(Windows)](https://qiita.com/riversun/items/4bb83ac39c0a9a86b1d6)
[WS CLIのインストールから初期設定メモ](https://qiita.com/n0bisuke/items/1ea245318283fa118f4a#aws-cli%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97)