AWSに関するありがちミスとその対策~EC2、S3、RDS、Lambda、CloudFrontの場合

AWS入門者が基本として知っておくべき知識を、AWS導入&運用サポートのプロである、アイレットのエンジニア3名に聞きました。多くのAWSユーザーに支持されるAmazon EC2、Amazon S3、Amazon RDS、AWS Lambda、Amazon CloudFrontそれぞれの勘所やオススメの設定を、余すところなく紹介してもらいます!

AWSに関するありがちミスとその対策~EC2、S3、RDS、Lambda、CloudFrontの場合

  1. なぜ、AWSを選ぶのか?
  2. Amazon EC2~インスタンス起動後はプライベートIPを設定できないので注意
  3. Amazon S3~S3はディスクではない。マウント非推奨の理由
  4. RDS~自動スナップショットの保持期間を0にし「スナップショットをとらない」状態に
  5. AWS Lambda~よくあるトラブルはタイムアウトエラー
  6. Amazon CloudFront~意図せぬキャッシュでの情報漏洩に注意
  7. 総括

Webエンジニアなら誰もがその名を知るクラウドサービス、アマゾン ウェブ サービス(以下、AWS)。法人・個人問わず利用ユーザが増え続けているため、もはや若手インフラエンジニアにとっては「必修科目」になりつつあるでしょう。

一方で、サービス範囲が非常に広いことから、「なにを使えばいいのか? なにを勉強すればいいのか?」という悩みもあるかもしれません。今回はそんな悩みを解決するヒントを探るべく、「cloudpack(クラウドパック)」と呼ばれるAWS導入・運用支援サービスを提供し、800社を超える企業へのAWS導入、その後の運用サポートも手掛ける、アイレット株式会社のエンジニア3名に「まずは押さえておきたいAWSサービス」を聞きました。

本稿ではAWSの中でも多くのユーザに支持されている5つのサービス、Amazon EC2(以下、EC2)、Amazon S3(以下、S3)、Amazon RDS(以下、RDS)、AWS Lambda(以下、Lambda)、Amazon CloudFront(以下、CloudFront)それぞれの勘所やオススメの設定を余すところなく紹介してもらいます。サービスを使い始めたユーザの多くが「ハマりやすいポイント」にも触れているので、ぜひ参考にしてみてください。

1Amazonクラウドでビジネスを加速|AWS専業のcloudpack(クラウドパック)

2クラウドの活用とシステム開発ならアイレット株式会社

3

なぜ、AWSを選ぶのか?

10年以上のクラウドインフラ運用ノウハウと、大小問わず多くの企業に導入されている実績

――今でこそ多くのユーザを抱えるAWSですが、運用開始から10年を超えるんですね。

栄野川 2006年3月にリリースされたS3を皮切りに、同年後半にはEC2が公開されたものの、当時はユーザが具体的な導入イメージを描けず、盛り上がりはいまひとつだったようです。

弊社がAWSを知ったのは、海外拠点のWebサイトを立ち上げたいと考えられていたお客様から「現地のホスティングサービスで、何を選べばいいか」というご相談を受けたのがきっかけだったと聞いています。2009年から導入支援サービスの「cloudpack(クラウドパック)」を始めて以来、少しずつ利用されるお客様が増え、現在は国内外合わせて840社を超えるAWS導入のサポートをしています。

AWSの認知度が一気に高まったのは2014年のCIA事件と言われており、多くの機密事項を管理するCIA(Central Intelligence Agency:米中央情報局)が、情報インフラをIBM製のオンプレミスシステムからAWSに切り替えました。政府機関、しかも多くの機密事項を抱えているCIAがクラウドサービスに乗り換えたという事実に、IT業界には激震が走ったようです。

日本でクラウドが注目され始めたのは2011年の東日本大震災がきっかけだと言われています。クラウドサービスのメリットのひとつ「Disaster Recovery(災害復旧)に向いている」ことが見直され、国内企業での導入が進みました。

サービスの広がり方から「スタートアップやスモールビジネスに強い」と言われがちなAWSですが、近年はエンタープライズでの導入も進み、cloudpackのクライアント様はスタートアップ、中規模企業、大企業の割合はほぼ等しい状況です。

他社クラウドサービスとの単純比較はナンセンス

――AWS以外のクラウドサービスも、認知度が高まってきています。

栄野川 「他社のクラウドサービスとAWSはどこが違うのか」とはよく聞かれます。しかし他社クラウドとの単純な機能比較は、各社で力を入れている部分が違うためナンセンスだと思います。

AWSの強みは、蓄積されたノウハウの量と機能追加スピードの早さです。後発サービスのMicrosoft Azure(2010年サービス開始)やGoogle Cloud(2014年サービス開始)に比べ、圧倒的な運用ノウハウを持ちます。またAWSは「一度発生させたトラブルは二度と起こさない」という姿勢を重んじており、障害対応も迅速です。

合わせて公開サービスの改善や機能追加にも力を入れており、現在は年間1000超の機能追加がされています。

Amazon EC2

4Amazon EC2 (安全かつスケーラブルなクラウド上の仮想サーバーホスティング) | AWS

ユースケース

栄野川 EC2はApache、MySQL、PHP、Ruby on Railsなどを使った動的なサイトを構築するときに使われる仮想サーバをクラウド上で提供するサービスです。AWSで提供されているサービスの中では、チームの規模を問わず最も使われているサービスだといえるでしょう。

EC2が作動しているAWSサービスも多いです。例えばWebアプリケーションのデプロイや構成管理ができるElastic Beanstalk、ビッグデータを処理・分析するAmazon Elastic MapReduce(EMR)でもEC2インスタンス(EC2でのコンピューティング仮想環境)が後ろ側で動いています。

インスタンスメタデータにHTTPリクエストを送ると……

――最も使われているサービスとのことですが、意外と知られていない機能もあると伺っています。

栄野川 インスタンスメタデータ(EC2固有の機能。EC2の中からしかアクセスできないIPアドレス)にHTTPリクエスト169.254.169.254を送ると、さまざまな情報を閲覧できます。

  • 自身のインスタンス識別ID
  • パブリックIPアドレス
  • OS
  • IAM Role
  • ホストネーム
  • 自分がどのネットワークにいるか

インスタンス起動後はプライベートIPを設定できないので注意

――EC2の利用者が陥りがちなミスなどはあるのでしょうか?

栄野川 多いトラブルが起動時の設定ミスです。EC2はインスタンスを一度起動してしまうと、以下のような後から変更できない項目がいくつかあります。

インスタンス起動後に変更できない項目
  • AMI(Amazon Machine Image)
  • OS
  • プライベートIP
  • 配置しているVPCおよびサブネット

特に気を付けたいのはネットワーク設定。利用者が特に指定をしない場合はAWS側が自動的にDHCPで起動するので、プライベートIPアドレスがランダムで配分されます。また、起動後はVPCの変更ができなくなるため、プライベート、パブリック含めたサブネットを指定した設定には注意が必要です。

また、サービスのスケーリングを考えるときに気を付けたいのが、コンテンツ同期と負荷分散です。

複数のサーバ間でコンテンツの同期を取らずに「アクセスごとに挙動が変わってしまう」というお客様からの問い合わせも少なくありません。サーバのディスク内にある画像データなどをS3に配置しておく、同時デプロイでコンテンツが同期されるようにする、などの仕組みづくりを忘れずに行ってください。

数千台の運用をサポートさせていただいていると、EC2の障害に起因しアクセスができなくなってしまうケースも少なくないなと感じます。サーバが落ちることを前提に考えた設計にした方がいいでしょう。ダウンタイムが許容できないなら、ロードバランサのElastic Load Balancing(ELB)をEC2の前に置いて冗長化した負荷分散をおすすめします。

コラム:タグ機能を活用して、インスタンスを制御

EC2に限りませんが、「タグ」機能を活用するとインスタンス制御が便利になります。

  • KeyValue形式
  • Name KeyをValueで指定
  • Value=インスタンス名

インスタンスの役割ごとに共通のタグを設定し、APIでデプロイするときに「roleタグがWebの場合のみデプロイされる」という動かし方も可能です。

自動で起動、停止するスクリプト(自作)で「特定のKeyがついているインスタンスだけ平日の営業時間外に起動する」。AWS Lambdaと組み合わせると、複数のインスタンスを動作制御できますし、スクリプトを他のインスタンスにも使い回せるのでおすすめです。

5

栄野川直斗さん:沖縄国際大学卒業後、2015年4月に新卒でアイレットにジョイン。主に金融関係やECサイトのAWSインフラ構築および運用を担当。好きなAWSサービスはAutoScaling。

Amazon S3

6Amazon S3(拡張性と耐久性を兼ね揃えたクラウドストレージ)|AWS

ユースケース

――S3もEC2と同じ、オンライン仮想サーバですね。

栄野川 S3は静的なストレージサービスとして知られています。EC2やRDSのスナップショットもS3に保存されます。

「AWSをとりあえず触ってみたい」と考える人にとって、S3はハードルが低いと思います。公式ドキュメントにあるチュートリアルにそって動かせば、簡単にWebサイトが公開できます。AWS未経験のエンジニアにも「一度S3やってみれば」というように薦めることが多いです。

S3を使う上で知っておきたいのは、静的Webサイトのホスティング機能です。時折Webサイトの立ち上げを考えているお客様から「S3だけでなく、物理サーバも必要?」という問い合わせがあるのですが、HTML、CSS、JavaScriptや画像も埋め込めるのでS3のみでホスティングが可能です。サーバをレンタルするなどの手間もなく、安価にサイトが運用できるので便利です。

EC2と連携するケースが多い

――S3は他のサービスと連携されることも多いですよね。

栄野川 EC2と連携されるケースが目立ちますね。PHPで動くWordpressなど動的なサイトはEC2、/wp-content配下など静的なコンテンツはS3で運用、さらにCloudFrontとも連携できます。

CloudFrontのBehaviors機能でPath Patternを設定することで、拡張子やパスに応じたキャッシュコントロールができます。

ログ転送ツールFluentdを使い、EC2からのログをS3に保存することも可能です。EC2にエージェントを仕込んで、定期的にシスログやアクセスログをS3バケットに出力するのもよくあるケースです。

EC2以外のさまざまなAWSサービスと組み合わせるケースもあります。Amazon Lambda(Lambda)をデプロイする際に、Serverless Framework(サーバレスフレームワーク)で権限を設定したり、Lambdaにコードを自動デプロイする、といったこともできます。

7

CloudFrontによるパス振り分け&アクセスログの転送例。

S3はディスクではない。マウント非推奨の理由

――S3で起こりがちなトラブルはあるのでしょうか?

栄野川 S3をNAS(Network Attached Storage)の代替にする、と耳にすることもありますが、S3をディスクとみなして扱うのはお勧めしません。「EC2からS3をマウントしたい」というご要望もいただくのですが、弊社ではS3のマウントを推奨していません。

HTMLファイルやアクセスが多いコンテンツに対してS3をマウントさせると、EC2からAPIを通してS3にアクセスするのでラグが発生します。大量アクセス時に頻繁にマウントが外れてS3にアクセスできなくなり、サービスに影響が出てしまう可能性もあります。

アクセス対策としてはDatadogなどの監視ツールを導入し、マウント外れが起こったら再度マウントする設定にしておくほか、CloudFrontを使った構成にしておきましょう。

RDS

8Amazon RDS(クラウドでのリレーショナルデータベースサービス) | AWS

ユースケース

栄野川 RDSはスケーラブルなフルマネージドのDBサービスです。AWSが提供するRDSエンジンAmazon Aurora(Aurora)はもちろん、MySQL、PostgreSQL、MariaDB、MS SQL Server、Oracleに対応しています。

AWSには複数のDBサービスがありますが、代表的なものは以下の3種です。それぞれ違った特徴があるのでご紹介しましょう。

  • RDS for MySQL

    • 概要:Amazon RDSによって、MySQLのデプロイをクラウド内で簡単にセットアップ、運用、スケールできる。Amazon RDSを使用すると、コスト効率が良く、サイズ変更が可能なハードウェア容量で、スケーラブルなMySQLサーバーを数分でデプロイ可能
    • 特色:MySQLのエラーログやスロークエリログをCloudWatch Logsへ転送できる。なお、2018年6月現在はMySQLとMariaDBにのみ提供されている機能
  • RDS for Aurora

    • 概要:Amazon Auroraは、クラウド向けに構築され、MySQLやPostgreSQLと互換性のあるリレーショナルデータベースで、高性能の商用データベースのパフォーマンスや可用性と、オープンソースデータベースのシンプルさや費用対効果を兼ね備えている。
    • 特色:Auroraは、標準的なMySQLデータベースと比べて最大で5倍、標準的なPostgreSQLデータベースと比べて最大で3倍高速化できる。また、商業用データベースと同等のセキュリティ、可用性、信頼性を10分の1のコストで実現する
  • Dynamo DB

    • 概要:Amazon DynamoDBは、どのような規模においても整合性と1桁ミリ秒単位のレイテンシーを必要とするアプリケーションに対応した、高速かつ柔軟な非リレーショナルデータベースサービス
    • 特色:EC2だけではなくLambdaなどのサーバーレスとの相性が良い。用途によって読み込み/書き込みの性能(キャパシティユニット)を柔軟に変更することが可能

自動スナップショットの保持期間を0にすると「スナップショットをとらない」状態にできる

――RDSを使う上で、おさえておきたい設定はありますか?

栄野川 バックアップ保持期間を0に設定すると、「自動バックアップをとらない」状態にすることができます。しかし「やはりバックアップをとりたい」と考えて0から1以上の数に設定し直すと、RDSが再起動してしまいます。

詳しくは公式ドキュメントにも記されています。

バックアップ保持期間

DB インスタンスを作成するとき、バックアップ保持期間を設定できます。

(中略) Aurora 以外の DB エンジンの場合は、バックアップ保持期間を 0 に設定して、自動バックアップを無効にすることもできます。自動バックアップには、手動スナップショットの制限 (リージョンごとに 100) は適用されません。

参照元:バックアップの使用 - Amazon Relational Database Service

RDS要注意ポイント(1) パラメータグループ「デフォルト」

――RDSを扱う上での注意点を伺いたいです。

栄野川 注意したい点は大きく2つです。

ひとつは起動時の設定です。デフォルトのままインスタンスを起動してしまうと、パラメータ設定が設定されず、RDSの再起動が必要になる場合もあります。

RDS要注意ポイント(2) RDSを消すと、スナップショットも同時に消える

栄野川 もう1つ、RDSインスタンスの削除は慎重に行ってください。インスタンスの削除と同時に自動でとられた自動バックアップデータも同時に消され、データの復旧ができなくなってしまうのです。「バックアップの状態に戻したい」ときに間違って現在の状態を削除してしまった場合も同様です。

対策はこの3つです。

  • スナップショットを手動でコピーする
  • RDSを別の名前に書き換えて起動する
  • DBのエンドポイントを変える

このトラブルは本当に要注意で、社内のメンバーも間違って削除した経験があるくらいです(笑)。AWSにも問い合わせがあるようで、最近はRDSの削除前にダイアログを出すようになりました。

9

RDS削除前に出るダイアログ。スナップショットの作成や、削除への同意チェックがユーザに通知される。

他にもある、気を付けたいポイント

――他にも、気を付けたい点があれば教えてください。

栄野川 ありがちな「うっかり」はこの2点でしょうか。

  1. RDS自体にはSSHログインができない

    • MySQLクライアントなどでRDSにログインする
  2. RDSのデフォルト設定では、自動でマイナーバージョンがアップデートされることがある

    • 基本的にも事前通知があるので、事前対応も可能

AWS Lambda

10AWS Lambda (サーバーレスでコードを実行・自動管理) | AWS

ユースケース

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く