サイトアイコン 上尾市のWEBプログラマーによるブログ

「ゼロからわかるAmazon Web Services超入門 はじめてのクラウド」の感想・備忘録1

書籍「ゼロからわかるAmazon Web Services超入門 はじめてのクラウド」のまとめ。

点数

90点

感想

説明が丁寧で、とてもわかりやすかった。
個人的には既に知っていることが多く少々物足りない内容だったが、AWS初心者向けとしては素晴らしい書籍だと思う。

主な内容

SLA(Service Level Agreement)

SLAとは

どの程度の可用性を保証するか、それが満たされなかった場合いくら返金するか、などの契約のこと。
AWSでは以下の内容となっている。
https://aws.amazon.com/compute/sla/?nc1=h_ls

月間稼働率サービス クレジット
99.0%以上99.99%未満 10%
95.0%以上99.0%未満30%
95.0%未満100%

停止時間の計算

稼働率99.9%や99.99%というとかなり高い品質に見えるが、計算してみるとそうでもない。

1か月=30日=43,200分で計算すると
43,200分x99.9%=7.2時間
43,200分x99.99%=43.2分

IAM(Identity and Access Management)ユーザーとポリシー

IAMユーザーにポリシーを適用することで、ユーザーに権限を与えることができる。
ポリシーとはアクション(=各種操作)をグループ化したもの。
ポリシーは自分で作成することもできるが、あらかじめ多くのポリシーが用意されているので通常はそれを利用する。

IAMグループ

IAMユーザーをグループ化したもの。
AWSでは、IAMユーザーではなくIAMグループにポリシーを適用することを推奨している。
IAMユーザーが1アカウントしか存在しないときでもIAMグループに所属させておけば、あとからIAMユーザーが追加された場合の対応が容易になる。

IAMロール

IAMユーザーは人間やプログラムに対するアカウントであるのに対し、IAMロールはAWSのリソースに対するアカウント。
たとえば、EC2サーバからS3にアクセスする場合、EC2インスタンスに「S3の全操作が可能なIAMロール=AmazonS3FullAccess」を付与する。

AWS Budgets

設定した金額を超えた場合にアラートメールを送信してくれる管理ツール。
以前はCloudWatchのBillingAlertで設定していたが、AWS Budgetsでは細かい設定ができるようになった。
月以外の期間指定(3か月や1年など)、予想額(予算を超えると予測されたとき)でのメール送信、など。

S3のStatic website hostingへ独自ドメインでアクセスできるようにする

  1. S3バケット名をwww.xxx.xxのようなドメイン名にする
  2. DNSの設定をする(Aレコードのエイリアスで、S3バケットのエンドポイントを選択する)

S3バケットにはパブリックIPは付いておらず、エンドポイントはドメイン名である。 そのため、通常のDNSではAレコードではなく、CNAMEを使う必要がある。
ex) www CNAME site.xxxxxxx.info.s3-website-ap-northeast-1.amazonaws.com
なお、CNAMEはドメイン名のみ(ホスト名なしの)の場合は使うことができないので注意。

Route53にはAレコードの「エイリアス」という独自機能があり、S3バケットなどのエンドポイントを指定すると、内部的にIPアドレスに変換してくれる。 Route53を使う場合は、DNSクエリが半分になるのでCNAMEよりもAのエイリアス使用が推奨されている。 なお、エイリアスはホスト名なしでも使うことができる。

S3のStatic website hostingへhttpsでアクセスする

Static website hostingはHTTPSに対応していない。
CloudFrontはHTTPSに対応しているため、S3の前段にCloudFrontを設置することでHTTPS通信にすることができる。
ブラウザ⇔CloudFront間はHTTPS、CloudFront⇔S3間はHTTP、という構成になる。

AWS Transfer for SFTP

2018年11月に発表されたS3へSFTP接続できるサービス。
ただし、常時起動していると月200ドル以上かかり、データ転送でも課金されるので、料金を考えると使うことはなさそう。

S3のStatic website hostingのためのバケットポリシー

Static website hostingをオンにしただけでは匿名アクセスができない。
バケットに対してバケットポリシーを設定する必要がある。
ただし「匿名アクセスを許可する」というポリシーは用意されていないため、自分でカスタムポリシーを作る必要がある。
カスタムポリシーはJSON形式で記述する必要があり少々複雑だが、「全ユーザーに読み取り権限を与える」というポリシーはAWSのドキュメントに設定例が記載されているので、それをそのまま使えばよい。https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/WebsiteAccessPermissionsReqd.html
※ バケット名は自分のものに変更する

また、セキュリティ上の理由から、デフォルトでは匿名アクセスを許可するポリシーは作成できないようになっているので、以下の手順で許可する必要がある。

  1. 「アクセス権限」タブ⇒「パブリックアクセス設定」⇒「編集」をクリック
  2. 「新規のパブリックバケットポリシーをブロックする (推奨) 」のチェックを外す
  3. 「パブリックポリシーを持つバケットへのパブリックアクセスとクロスアカウントアクセスをブロックする (推奨) 」のチェックを外す
  4. 「アクセス権限」タブ⇒「バケットポリシー」をクリック
  5. 以下のJSONを貼り付けて「保存」をクリック
{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"PublicRead",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::xxx.xx/*"]
    }
  ]
}

※ xxx.xxはバケット名

バケットポリシーとユーザーポリシー

S3のポリシーにはバケットポリシーとユーザーポリシーの2通りがある。
アクセスされる側(S3バケット)とアクセスする側(IAMユーザー)のどちらに設定するかの違いである。
バケットポリシーには「全ユーザー」への設定もでき、ユーザーポリシーには「全バケット」への設定もできる。
Static website hostingへの匿名アクセスは「全ユーザー」への設定なので、バケットポリシーを使って設定しているのである。

S3へデータを転送できるツール

これらのツールから接続する場合は、認証にアクセスキーとシークレットアクセスキーが必要となる。

アクセスキー発行手順

  1. IAMユーザーの詳細画面を開く
  2. 認証情報タブをクリック
  3. 「アクセスキーの作成」をクリック
  4. アクセスキーIDとシークレットアクセスキーが発行される
モバイルバージョンを終了