AWS活用セミナー「AWSの利用を躊躇されている方々へ」
2015年10月23日にアイティメディア主催**「主導権はユーザー側が持つ 企業のためのAWS徹底活用セミナー」**に登壇いたしました。 当日セミナーにお越しいただけなかった方にもお伝えできるよう本ブログにてコンテンツとしてお届けいたします。 セミナー概要 AWSの利用を躊躇されている方々へ 株式会社ISAO infra R&D プロジェクトリーダー 片貝 力也 本日はAWSの利用を躊躇している方々に向けて、利用当初の注意点や問題になりやすい事項を簡単に紹介させて頂きます。具体的な実例をもとにご説明させて頂きたいと思いますが、既に利用いただいている方々にとっては物足りない内容になってしまいます。その点、予めご了承ください。また最近ニーズが高まっているAWSでのセキュリティ対策についてもご紹介いたします。 EC2以外のサービスを利用しますか? AWS(Amazon Web Searvices)を利用される予定の方々に質問です。 EC2以外のサービスを利用しますか? もちろんEBSやELB、S3なども利用しないとサービスとして成り立たないかと思いますが、現状AWSにて構築を検討する際に、まずAWSで提供しているマネージド込みのサービスをどこまで使用するかが一つの重要なポイントになります。EC2上に自前でミドルウェア環境を構築していくのか、RDSやElastiCashなどミドルウェアまで揃えているマネージドサービスを利用するのか、どこまで利用するのか一度検討ください。ただマネージドサービスを利用することで構築の手間が大幅に省けますし、運用の手間も簡略化されるため、工数が減りコスト減にも繋がりますので、利用される事を通常お勧めします。 しかし、1点気を付けなければならないのがベンダーロックイン(※)状態です。 数年毎に別のシステムへの移設を検討しなければならない場合は、マネージドサービスを利用していると移設検討が非常に困難となってしまいます。ただAWS環境から他環境への移設メリットは無い、もしくは薄いケースが殆どだと思いますので、現状ですとマネージドのサービスを躊躇せずに利用して問題ないと思います。またAWS環境にて安定的なサービス運用をする為にもマネージドのサービスを利用する事は近道となります。 (※)ベンダーロックイン 特定の環境・技術に固定され、他との互換性が損なわれるとこと ただシステム環境以外にも構築運用メンバーの技術スキルもAWSに踏襲・専属化していってしまいますので、昨今のインフラメンバーでは、オンプレミス環境のネットワーク設計や導入作業が出来ないといった事態も発生してます。 インフラエンジニアを抱えていらっしゃる企業様は、運用リソースの配置や今後のスキルパスまで考えていくことが必要です。 AWSの月額費用って本当に安いの? AWS利用で発生する月額費用は、規模がある程度大きくなると決して安くは見えません。 特にオンプレミスで構築した場合のCPUのコア数やハードウェアのパフォーマンス等を、そのまま踏襲してAWSで試算をすると、1年や複数年のスパンでハウジング費用と比較すると高くなるケースが多々あります。ただし、これは単純に発生する月額費用を比較した場合の話なので、実際は見えにくい運用でのコストを加えて比較すべき内容です。 AWSは構築運用だけでなく、設計や管理、オンサイト作業のコストを除外できることも大きなメリットとなります。 例えばデーターセンターに行く必要がないというのが分かりやすい一例です。それらを計算に入れると正しいAWS費用の試算ができます。 またインスタンスの稼働を100%ではなく、実負荷を想定した変動性でコスト試算できるとよりメリットが見やすくなります。 リザーブドインスタンスって? さらに、AWSにはリザーブドインスタンス(RI)という年間契約でお安くなるプランもございます。 このRIは1年もしくは3年契約での割引サービスだけでなく、「リザーブド」の名前が示すようにインスタンスの起動が約束されます。 契約しているとインスタンスの数が確保でき、稀にある「リソースが枯渇していて必要なインスタンスの数が上がらない」といった心配も無くなります。 インスタンスの起動に失敗した場合、数分〜数十分待ってから起動させる必要があるのですが、RIは契約分のリソースが確保される事になります。 手動でオペレーションしている場合は大きな問題にはなりませんが、規模が大きくなり自動化等を取り入れていると、スムーズなインスタンスの起動は重要な課題となります。 AWSのメンテナンスってどうなの? EC2のメンテナンスには主に2種類あります。 アップデート用メンテナンス リタイアメント用メンテナンス 1つ目はAWSが実施するセキュリティアップデートです。こちらは特定のタイミングを指定し、AWS側が実施するメンテナンスとなります。なので環境や対象によっては、そのタイミングでサービスを停止、メンテナンスに切り替える必要があります。ただライブマイグレーション等で対応できる範囲も増えているようなので、今後は年に1回あるかどうかだと考えてます。 2つ目はハードウェア故障やリタイアメントによる、インスタンスのstop/startとなります。こちらは取り扱いインスタンス台数が増えるにつて対象となる可能性も高まりますので、わたくしの感覚ですと1,000台程度起動していると毎週どこかで発生する程度の頻度となります。ただこちらは指定された日までの好きなタイミングでstop/startをすれば良いだけなので、通常サービスへのインパクトはそれほど高くなりません。※ただ通常平日の4:00からとかに実施しますので、作業者が頻度によっては少々大変になります。 またインフォメーションは英文メールでとどきますので、見逃さないように注意が必要です。 Eventとしてもマネージドコンソールで確認できますので、弊社はAPI経由でEvent監視をしてアラート発報させてます。 上限緩和申請って知っていますか? 意外に知られていないのですが、AWSには非常に多くの起動数や設定数の上限設定がなされています。 EC2インスタンスの起動数やEBSのトータルボリューム数、ELBの数、SecurityGroupの数等、それは多岐にわたります。 例えば、EC2インスタンスはタイプにもよりますが、20がデフォルトの起動上限数です。 よって、21以上のインスタンスを起動したい場合は、事前にマネージメントコンソールから上限緩和申請をする必要があります。 この上限緩和は少し時間を要しますので、構築作業の前日までには申請をしておいた方が無難です。...AWS re:Invent keynote DAY2
昨日に引き続き、2015/10/8 9:00〜10:30(現地時刻) に行われた keynote 中に発表されたプロダクトをお伝えします。 Amazon EC2 新インスタンス、X1, t2.nano まずは EC2 の新インスタンス。X1 インスタンスは最大 100vCPU!/ 2TB メモリー!。クラウド上の IaaS の利用がインメモリ処理で実行するアプリケーションが増えてきたことに対応。SAP HANA などもターゲット。 ホスト側の CPU は Intel Xeon E7 v3 を採用しています。 t2.nano は 1vCPU / 512MB メモリーというスペック。上記のような要求がある一方で、t2.micro の 1GB メモリーでも大きいよ、というニーズが多いためと思われる。 Amazon EC2 Container Registry (ECR) いよいよ AWS のコンテナサービス利用が本格的になりそうだ。 今まで、docker コンテナで利用するイメージファイルは aws 上で管理、作成などができず、ユーザーが独自で管理する必要があった。 今回のアップデートでフルマネージドとなり、AWS 上でイメージファイルの保存、管理、デプロイが可能になります。 また、AZ を意識した配置、CLI などの提供も始まります。...AWS re:Invent keynote DAY1
2015/10/7 8:30〜10:30(現地時刻) に行われた keynote 中に発表されたプロダクトをお伝えします。 Amazon QuickSight Amazon発の高速で使いやすく、コスト効果の高い BI ツール。 ビッグデータや IoT と言った言葉が飛び交う中、UI/UX 部分に関しては個々で開発が必要でした。 これを使ってデータがあればすぐにでも BI を構築できてしまう代物。 データ解析には新たに「SPICE」という名のエンジンを開発。 また、SPICE からのデータエクスポートはDomo, Qlik, Tableau, Tibco等にも対応予定とのこと。 Amazon Kinesis Firehose すでにプロダクト化されている Kinesis の派生版。今まで Kinesis にてストリームされたデータについて EC2 や S3 ひいては Redshift で利用する際、ユーザーが個々にアプリケーションを開発する必要がありました。 Kinesis Firehose を利用すればストリームデータを直接、簡単に S3 や Redshift にロードすることが可能になります。 QuickSight といい、Kinesis Firehose といい、ユーザーサイドの開発を必要とせず、やりたいことをすぐに実現できるようになります。 AWS Snowball 今回の製品発表の中で一番驚きを隠せないのがこれだ。 今までオンプレミスからクラウドへ移行したい、と思うユーザーにとって最大の障壁の一つであるデータ移行。 このデータ移行を安全に迅速に行えるようになるプロダクトが Snowball だ。 アプライアンス製品として提供され、配送の際発生するヒューマンエラーを排除する、とのことなので、物流としての Amazon のナレッジも生かされていると思われる。 1アプライアンス 50TB で提供され、複数個使用することで 100TB, 200TB と利用することが可能。 今までかかっていたデータ移行のための回線費用などの削減する。...AWSとVPN接続したら応答が無くなる時の対応
おはようございます。インフラ宮下です。 AWSのVPCとオフィスをVPNで接続するケースは良くありますが、構成によってはダウンロードしたconfigではうまく動作しない事があります。 今回は、以下の環境の時に変更しなければいけなかった設定をまとめたいと思います。 1)AWSの接続環境 [shell]リージョン:シンガポール ルータ:YAMAHA RTX 1200 経路情報:Static[/shell] 2)VPNのconfigを確認 VPN Connectionsを作成した後にconfigをダウンロードすると設定項目として、IKE・IPSec・Tunnel Interface・Static Route の4項目がありますのでそれぞれの内容について確認しましょう。 ・IKE [shell] tunnel select 1 ipsec ike encryption 1 aes-cbc ipsec ike group 1 modp1024 ipsec ike hash 1 sha ipsec ike pre-shared-key 1 text y7Nn93e7fJHWQrUaabbccdd112233[/shell] IKEについては、configそのまま流用で問題ないでしょう。keyは個々に違いますので正しいKeyにしてください。 トンネル番号は、既に「1」を使っている場合は違う数字にしてください。(以降のID表記も忘れずに変える) ・IPSec [shell] ipsec tunnel 201 ipsec sa policy 201 1 esp aes-cbc sha-hmac ipsec ike duration ipsec-sa 1 3600 ipsec ike pfs 1 on ipsec tunnel outer df-bit clear ipsec ike keepalive use 1 on dpd 10 3[/shell]...Amazon RDS for Auroraプレビュー利用開始!
Amazon RDS for Auroraでプレビューが始まりました。 Auroraとは…MySQLと互換性のあるデータベースエンジン(MySQL5.6)で、 高性能の商業用データベースの可用性およびスピードと オープンソースデータベースのコスト効率性および簡素性を併せ持っています。 Amazon Auroraは、MySQLの5倍の性能を持ち、 同様の機能や可用性を提供している商用データベースの10分の1の価格との事です。 現在プレビュー利用待ちです。 プレビュー利用したら感想等伝えようと思います。...DevOps時代のアジャイルでスケーラブルな開発環境をVagrant, GitHub, Travis, Chef, OpsWorksで構築する
どうも。久しぶりです。 デベロッパーの平形です。 このブログに訪れたすべてのエンジニアの方々。 そして、エンジニア以外の方々。 とても感謝致します。 初めに言っておきますが、この記事ではコード、コマンドラインの一切は登場しません。 はじめに 私が今回お送りする内容は本当にスケーラブルな環境の構築、運用を手助けする事ができます。 連載記事で複数回に渡ってお届けしますが、この連載を読み終えそして実践していただければ、あなたは既にスケーラブルな環境で作業を行っている事でしょう。 この連載記事では、順番に必要なツールのインストール、使い方をハンズオン形式でお送りします。 実際に手を動かして実感していただく事がとても意味がある事だと思っています。 この回では、コード、コマンドラインは一切登場しません。次回以降にどんどん出てきます。 その前に**「伝えたい事があるんだ。君の事が好きだから」by小田和正**と叫ばせてください。 この記事は以下の方には不向きです。 俺は一生一人で生きていくんだ!と1日1回はトイレで意気込んでいる人。 後先の事なんか考えたくない。俺は今を生きているんだ!と週に3回は言っている人。 これらに該当する方。お疲れ様でした。出口はこちらです。 この記事は以下に該当する方に是非読んでいただきたいです。 開発者、インフラ担当者の方。 これから新しいプロジェクトを立ち上げるんだけど、構成どうしようか悩んでる方。 サーバーの台数が多くなったらどうしよう。と悩んでいる方。 開発要員が急に増えたらどうしよう。と悩んでる方。 DevOpsとかスケーラブルな環境とかに興味があって、でも今ひとつ踏み出せない方。 上記を実践してみようとしたけど、挫折してしまった方。 開発環境で動いているコードがなぜか公開環境で動かなくて家に帰れない方。 本番反映が怖くて会社に行きたくない方。 サーバーが落ちる事が不安で夜も眠れない方。 将来の事を考えると不安で不安で仕方なく、「とにかくもう、学校や家には帰りたくない〜。」by尾崎豊と口ずさんでしまう方。 それでは、夢の扉を開きましょう。 レガシーな開発と運用 開発環境、公開環境の構築は、構築手順書を元に手動でインストールしている。 公開環境のサーバー増設は1台ずつ手動でキッティングしている。 パッチの適用、バージョンアップは手動で1台ずつ手順書を元に実行している。 バージョン管理はしないで各自、修正ファイルをFTPでファイルをアップロードしている。 これらをヒューマンエラーなく、ストレスなく運用できるのはスーパーマンです。 そして、開発、運用メンバー全員が自分と同じスーパーマンでなければいけません。 凡人の僕には無理です。 現代の開発と運用 現代のもの凄い勢いで変化するサービス要求に耐えるには、様々なものを効率化しなければいけません。 素早くリリースしてユーザの反応を見ては仕様を変更してすぐに反映しまたリリースする。といった事も必要です。 近頃、開発運用の自動化は様々なメディアの記事で取り上げられ、賑わっています。 しかし、実際にどこまで自動化ができているのでしょうか? バージョン管理 環境構築 セキュリティパッチの適用 バージョンアップ オートスケール 自動テスト 自動デプロイ 開発環境の配布 なかなか全部はできないですよね? でもやったほうが絶対に幸せになれます。...AWS S3を早くするフォルダ構成
こんにちは、豊部です。 AWS S3をコンテンツデータのストレージに使う場合、転送速度が気になります。 S3は無限ともいえるストレージ領域がありますので、裏では様々な処理が行われ、 全世界で負荷をシステム全体でならすように設計されています。 このシステム全体をならす仕組みをフォルダ構成から利用できます。 ポイントは ・フォルダ名の先頭3文字でS3内で分散させている です。 たとえば、コンテンツを3つのフォルダに分ける場合、 のようにしてしまうと、先頭3文字が「tes」となり、同じ場所に格納されてしまいます。 そこでフォルダ名の先頭にハッシュ値を頭につけて としましょう。 こうすれば、S3内で分散されて格納されるため、転送速度が向上します。 S3を配信コンテンツのストレージにする場合は、試してみてください。...AWS : EC2 C4インスタンスリリース!
今月の初め、AWS より EC2 サービスにて新しいタイプのインスタンス、 C4 インスタンスの提供開始とのアナウンスがありました。 トピックを共有したいと思います。 Intel が AWS 専用にカスタマイズして提供している Haswell ベースの CPU を採用。 EBS 最適化オプションを標準装備。その代りSSD ベースのインスタンスストレージは無し。 利用できる仮想化タイプは hvm のみ。PV (paravirtual) は利用できません。 拡張ネットワーキングも標準装備され、低遅延化などが施されている。 パフォーマンスの劇的な向上や新しい何かを期待されていたユーザー様は残念がっている方もいるようですが、 HVM のみのサポート、CPU、ストレージ、ネットワーク周りの底上げを行っており、インフラとして順当な進化を遂げているなぁ、というのが僕の感想です。...AWSのCloudwatchにアラート(Alarm)を設定し、監視する
こんにちは。新人の橋本です。 これまではオンプレミスのハイブリッドクラウド(プライベート+パブリック)や物理サーバにて運用構築業務についてましたが、 AWS自体は初めて取り扱う環境ですので、その目線から、ブログを書いていきたいと思います。 今回はAWS導入後、基本的なリソース監視ができるCloudwatchの設定、およびAlarmを設定し、閾値を超えたらEメールを送付するという ごくごく基本的な設定について記載します。 1)設定画面 EC2にてインスタンス作成後、EC2の[Instance]項目にてにてAlarm設定したいインスタンスを選択し、[monitoring]タブを選択します。 2)Alarm設定 右部分にある[Create Alarm]を選択すると、CreateAlarm画面が表示されるため、各項目を入力します。 Send a Notification to → 別項目にて、SNS topicを作成している場合、リストに追加されます(今回は追加しません) Take the action → Alarm発生時のアクション。発生した場合どうするかを選択できます(今回は設定しません) Whenever → リストより程度(Average,Max,Minimumなど)、および項目(CPU Utilization、Disk Usageなど)を選択します Is → 閾値(○○パーセント以上or以下など)を設定します For at least → 判定条件(○分間毎に△回[Whenever]項目が[Is]だった場合にAlarmカウントする)を設定します Name of Alarm → Alarm名を設定します 3)設定追加 各項目設定後、右下の[Create Alarm]を選択すると、Alarm項目が作成され、次の画面が表示されるので、リンクをクリックします。 4)項目追加確認 CloudWatch Management Console画面に遷移するため、項目が追加されたことを確認し、[Modify]タブをクリックします。 5)メール送信設定① [Modify Alarm]画面が表示されるため、[Actions]項目の[+Notification]をクリックします。...AWS SDK for Rubyを使ってEC2インスタンスのステータスを確認する
アプリケーション側で、任意のAWSのEC2インスタンスについて、現在の稼働状況をリアルタイムに確認したい時がある。例えば外部アプリケーションからEC2インスタンスを起動させたり、停止させたりする場合などに、インスタンスの稼動状況を確認してステータスが変わったら次のプロセスを実行したいとかいうケースが、それに当てはまる。 SDK for Rubyでは、AWS::EC2クラスのclient.describe_instance_statusメソッドで特定のECインスタンスのステータスを取得することができる。インスタンスのステータスにはsystem_statusとinstance_statusの2種類があって、正確な稼動状態を確認したい場合はこの2つのステータスを取得する必要がある。 そして、注意しないといけないのが、インスタンスが停止している時はステータスが存在していないということだ。つまり、停止しているインスタンスに対してclient.describe_instance_statusメソッドを実行した場合、ステータス情報が格納されているinstance_status_setオブジェクトの中身が取得できないので、それを踏まえてコーディングしないと、ステータス取得エラーとなってしまう。 例えば、停止状態のインスタンスを起動した場合のステータスを監視する時など、最初はインスタンスが停止しているので、instance_status_setオブジェクト内にステータスがないということをあらかじめ想定して処理を作る必要がある。 また、ターミネートされたインスタンスはclient.describe_instance_statusメソッドを実行する対象自体がないことので、こちらも注意する必要がある。 さて、上記もろもろを踏まえてEC2インスタンスのステータス確認するRubyプログラムを作ってみた。 chkins.rb # encoding: utf-8 require "aws-sdk" def check_instance_status ec2 = AWS::EC2.new( :access_key_id => Params[:access_key_id], :secret_access_key => Params[:secret_access_key], :region => Params[:region] ) AWS.memoize do status = [] if ec2.instances[Params[:instance_id]].exists? ec2info = ec2.client.describe_instance_status({ 'instance_ids' => [Params[:instance_id]] }) if ec2info.instance_status_set.empty? # instance has stopped status << 'stopped' message = '%s has stopped' else ec2info....Capistrano3でEC2インスタンス新規作成から初期設定までのデプロイ(まとめ)
ここまでAWSのEC2インスタンスを新規作成して、そのインスタンスに対しての初期設定までを、Capistrano3でタスク化することをやって来ました。難儀したものの、ようやくEC2インスタンスの準備が出来て、あとはミドルウェアやアプリケーションをインストールするだけ──というところまでたどり着きました。そこで今回は、これまでのデプロイの流れを一度総括してまとめてみようかと思います。 まず、Capistrano3を稼動させるデプロイサーバの準備から。公式のAmazon Linux環境などのEC2インスタンスをAWSマネージメントコンソール等からラウンチして、ログインしたら、Capistrano3をインストールします1。 # yum update -y # yum groupinstall -y "Development Tools" # openssl version OpenSSL 1.0.1h-fips 5 Jun 2014 # openssl version -d OPENSSLDIR: "/etc/pki/tls" # curl -L https://get.rvm.io | bash -s stable # source /etc/profile.d/rvm.sh # rvm list (※ rvm rubies と表示されればインストール完了) # ruby -v ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-linux] # rvm install 2....Capistranoのタスクを新EC2インスタンスが完全起動するまでsleepさせる
Capistranoで新規作成したEC2インスタンスが完全に起動し切っていない状態で、そのインスタンスに対してSSHアクセスするタスクを実行すると、どこかしらでエラーになってタスクが完了しません。そこで、デプロイ対象となるEC2インスタンスの起動状態をチェックして、完全に起動していない状態の場合sleepして起動を待つようなタスクを作りました。 AWSのEC2インスタンスには3つのステータス情報があり、この全てのステータスを確認しないと、インスタンスの完全起動状態とは言えないので、注意が必要でした(下図参照)。 インスタンスが起動しているかどうかの確認は、AWSマネージメントコンソールでいうところの「Instance State」がrunningであるかを判定すればOKなのですが、実際にインスタンスにSSH接続ができるかどうかの確認は「Status Checks」欄に「2/2 checks」とあるように2つのステータス(INSTANCESTATUSとSYSTEMSTATUSのreachability)が共にpassedであるかまでを確認する必要があるのです。通常、インスタンスが起動すると「Instance State」は数秒から十数秒程度でrunningになるのですが、「Status Checks」は数分程度initializingで初期化処理を行っています。このステータスが共にpassedにならないとSSHアクセスでコケます。 今まで私が使っていたcheckタスクだと、「Instance State」のステータス1つしか確認していなかったので、後続タスクがSSHアクセスで中断したりしていました。それを回避するためのタスクが今回のcheckタスクになります。 task :check do run_locally do created_instances_list = 'CREATED_INSTANCES' def check_instance_status(instance_ids=[]) ec2 = AWS::EC2.new AWS.memoize do ec2info = ec2.client.describe_instance_status({'instance_ids' => instance_ids}) sys_status = ec2info.instance_status_set.map { |i| i.system_status.details[0].status } ins_status = ec2info.instance_status_set.map { |i| i.instance_status.details[0].status } status = sys_status + ins_status return status....Capistranoで新規作成したEC2インスタンスの初期設定
本項では、Capistranoで新規作成したEC2インスタンスへSSHで初回ログインした際の、保守用ユーザの作成、初期ユーザに対してのパスワード設定、サーバのホスト名設定など、いわゆるサーバ環境の初期設定を行うタスクを作ってみます。 その前に、ホスト名のつけ方としての色々と試してみての所感なのですが、初回SSHログイン後にそれぞれのインスタンスに対してHOSTS設定する際にEC2側にタグ付けてしていってもできるのですが、まずインスタンス作成する時にあらかじめホスト名の元となるタグを付けておいて、各インスタンスログイン後はそのタグを参照してHOST名を設定する方がスマートだと思いました。特に複数インスタンスを同時に立てる時などにホスト名に連番を振りたいとかいう時は、カウンター変数を使って回しているec2.instances.create()時にそのカウンターの数値を転用できるので簡単でした。ということで、インスタンス作成時にタグを追加する方法ですが、 # タグ情報 set :host_name, 'deploy-client' ~(中略)~ created_instances = [] cnt = 0 while cnt < fetch(:instance_count) do i = ec2.instances.create( ~(中略)~ ) sleep 10 while i.status == :panding i.tags['Name'] = [ fetch(:host_name), format("%02d", cnt+1) ].join('-') created_instances << i.id cnt += 1 end ~(省略)~ ── と、ec2.instances.create()の後でタグを付けてやればOKです1。 今回はこのNameタグの値をその後のタスクでインスタンスのホスト名として利用します。 いきなり横道に逸れましたが、本題に戻ります。 初回SSH時のタスクとして、前回作成したinitタスクを使います。流れとしては、デプロイサーバ側で新たに作成するユーザ用のキーペアを作成しておいて、デフォルトユーザにてSSHログイン後、まず保守用の新規ユーザアカウントを作成ます。その後、そのユーザに公開鍵認証によるSSH設定を行い、デフォルトユーザにはパスワードを設定してsudo権限を剥奪、ホスト名を設定して一旦ログアウトしています。 まず、タスク設定前に各種パラメータを定義します。...Capistranoで新規作成したEC2インスタンスにSSH接続する
前回に引き続き、Capistranoで新たに作成したEC2インスタンスにSSHでログインしてみます。 まず、事前準備として、AWS側で新規インスタンス用のキーペアを作成しておきます。AWSマネージメントコンソールの「EC2」メニューから「NETWORK & SECURITY」カテゴリの「Key Pairs」メニューで、キーペアを作成できるので、必要に応じて作成してください。本項の例では、「deploy-test」というCapistranoが稼動しているデプロイ環境用インスタンスで使用しているキーペアを使います。 そして、利用するキーペアのプライベートキーファイル(本項例ではdeploy-test.pemファイル)をCapistranoを実行するデプロイ環境のデプロイを実行するユーザのホームディレクトリ(本項例では/home/deploy-user/)にアップロードしておきます1。 アップロードしたプライベートキーには適切な読み込み権限を付与しておく必要があるので、ファイルのパーミッションを変更します。 $ cd ~ $ chmod 600 deploy-test.pem $ ls -l *.pem -rw------- 1 deploy-user deploy-user 1692 Jul 2 10:18 deploy-test.pem デプロイ設定ファイルconfig/deploy.rbは下記のように修正。 # config valid only for Capistrano 3.1 lock '3.2.1' # AWS SDK for Ruby を読み込む require 'aws-sdk' # AWS SDK用の設定 AWS.config({ :access_key_id => '<AWS ACCESS KEY ID>', :secret_access_key => '<AWS SECRET ACCESS KEY>', :region => 'ap-northeast-1', }) # AMIのimage_id # Amazon Linux AMI 2014....