AWSのEC2とS3を使って写真共有サービスを作成する
写真を保存するS3バケットを作成する
WebサーバーとなるEC2を起動する
S3 Bucketにアクセス可能なIAMポリシーを作成する
EC2が使用するIAMロールを作成する
EC2にIAMロールを設定する
EC2のセットアップをする
写真を保存するS3バケットを作成する
記載中
WebサーバーとなるEC2を起動する
- サービス一覧から「EC2」を選択する
- 「インスタンス起動」を選択
- Launch an instaceのページが開くので、「名前とタグ」に適当な名前を付ける。今回は
PhotoShareWebServer - OSはUbuntuを選択
- 「Ubuntu マシンイメージAMI」と「アーキテクチャ」はデフォルトのまま
- 「インスタンスタイプ」はt2.microを今回は選択した。利用料と相談して、今後変更も検討する
- 「キーペア」はキーペアなしで続行(推奨されません)
- 「ネットワーク設定」の「ファイアウォール (セキュリティグループ)」はセキュリティグループを作成
セキュリティグループのルールは後々検討する - ストレージ設定はデフォルト
- 「インスタンスを起動」を選択する
S3 Bucketにアクセス可能なIAMポリシーを作成する
※特定のバケットにのみアクセス許可を与える場合に作成する。
すべてのバケットにアクセス可能にして良いのなら、AmazonS3FullAccessを使用すればよい。
- サービス一覧から「IAM」を選択する
- 左側のメニューから「ポリシー」を選択する
- 右上の「ポリシーの作成」ボタンをクリック
- 「ポリシーエディタ」で「JSON」を選択する
- ポリシーエディタに以下をコピペする
photopublicが今回許可を与えたいバケット
ポリシーのJSON
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3ConsoleAccess",
"Effect": "Allow",
"Action": [
"s3:GetAccountPublicAccessBlock",
"s3:GetBucketAcl",
"s3:GetBucketLocation",
"s3:GetBucketPolicyStatus",
"s3:GetBucketPublicAccessBlock",
"s3:ListAccessPoints",
"s3:ListAllMyBuckets"
],
"Resource": "*"
},
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::photopublic"
]
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::photopublic",
"arn:aws:s3:::photopublic/*"
]
}
]
}
EC2が使用するIAMロールを作成する
- サービス一覧から「IAM」を選択する
- 左側のメニューから「ロール」を選択する
- 右上の「ロールを作成」ボタンをクリック
- 「信頼されたエンティティタイプ」は「AWSのサービス」を選択する
- 「ユースケース」の項目で「EC2」を選択して次へ
- 「許可ポリシー」で先ほど作成したポリシーを選択する
- 次へを選択して、ロール名に適当な名前を付ける。今回はEC2-PhotoPublic-Access
- 「ロールを作成」をクリックする
EC2にIAMロールを設定する
- サービス一覧から「EC2」を選択する
- 左のメニューから「インスタンス」を選択する
- 作成したPhotoShareWebServerを選択して
- 右上の「アクション」から「セキュリティ」→「IAMロールを変更」
- 作成したロールEC2-PhotoPublic-Accessを選択する
- 「IAMロールの更新」ボタンをクリックする
EC2のセットアップをする
- サービス一覧から「EC2」を選択する
- 左のメニューから「インスタンス」を選択する
- 作成したPhotoShareWebServerを選択して「接続」をクリックする
- 接続タイプ「EC2 Instance Connect を使用して接続する」を選択する
- 「ユーザー名」はデフォルトのUbuntuのまま「接続」をクリックする
- コマンド入力の画面が開く
$ sudo su
@ apt update -y
@ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
@ unzip awscliv2.zip
@ apt install unzip
@ unzip awscliv2.zip
@ ./aws/install
@ exit
$ mkdir photopublicS3
$ mount-s3 photopublic photopublicS3/
これでphotopublics3フォルダにS3のphopublicがマウントされる