@thorikiriのてょりっき

@thorikiriがWebとかAndroidとかの技術ネタや本を読んだブログです

Amazon Web Services パターン別構築・運用ガイドを読みました。

チマチマスキマ時間に読んでたので読み始めてから随分と時間がたってしまいましたが、Amazon Web Services パターン別構築・運用ガイドを読みました。

目次

  • Chapter1 AWSの基本
  • Chapter2 AWSを利用する
  • Chapter3 パターン別構築例
  • Chapter4 AWSのセキュリティ
  • Chapter5 管理と運用

感想

タイトルにはパターン別とありますが、あんまりパターン別に書かれていると言った印象は受けませんでした。と言うのも、○○をしたい時には・・・と言うような書き方ではなく、○○を使って△△するパターンと言ったような感じだからだと思います。

個人的には、進化の速くて多種多様なサービスがあるAWSにおいて、全てを追っていくことがなかなか難しいので、こういった本を読むと、ああ、こんなことも出来るんだなぁと言う発見があって良いと思います。使ってるサービス以外には疎くなってしまうので、知識を追従させるのはいいのかなと思います。もちろん、網羅的に書かれているのでそれは知ってるよと言う事も多いですけどね。

次に、また新しいことをやりたい時や、予算が許せば使ってみたいことなどが発見できて、少満足でした。

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,小西秀和,佐藤瞬
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2015/03/25
  • メディア: Kindle版
  • この商品を含むブログを見る
 

関連記事

capistranoのbundler/capistranoでsshがタイムアウトする

bundler/capistranoでbundle installをかけています。
AWSのEC2で動かすとタイムアウトになって困った。
sshd_configのClientAliveIntervalを設定すればいいらし。
設定方法はこちらを参考にしました。
ssh の接続維持 - snbhsmt_log
そして、sshdを再起動すればいいですね。
sshdの再起動方法はこちらを参考にしました。
http://open-groove.net/linux/sshd-restart/
sshdの起動に失敗したままSSH接続切っちゃうと次から繋げられなくなっちゃうからね。

Amazon Web Services クラウドデザインパターン実装ガイド

を読みました。

Amazon Web Services クラウドデザインパターン実装ガイド

Amazon Web Services クラウドデザインパターン実装ガイド

Amazon Web Services クラウドデザインパターン 設計ガイド を読んだよ - @thorikiriのてょりっきも以前読んでます。

Amazon Web Services クラウドデザインパターン 設計ガイド

Amazon Web Services クラウドデザインパターン 設計ガイド

取り扱うクラウドデザインパターンとシナリオについては設計ガイドと同じものだと思います。
大きな違いは設計ガイドはどういうことをすればいいのかを記述しているのに対して、実装ガイドでは、現在のAWSの画面のスクリーンンショットなどを使って操作を説明しつつ、コマンドや必要なツール群の使い方までも説明しています。
なので、実際にそのパターンを適用したいときに見ながら実装できるかとおもいます。
AWS自体始めての人も、サインアップから、基本のEC2インスタンスの立ち上げの仕方も説明されていますので、これ一冊あればという所ではないかなと思います。

目次

JavaでAmazon S3からファイルをダウンロードする

前回、アップロードしてみたので、今回はダウンロードしてみましょう。
AmazonS3のインスタンスを取得するまでは同じ流れになっています。
ダウンロードでは、getObject()で得られたS3Objectから、getObjectContent()にてInputStreamを取得します。
後は、このInputStreamを読み込んでしまえば良いわけですね。
簡単ですね。

public class A3Service {
    // getter setter略
    private String accessKey;
    private String secretKey;
    private String bucketName;

    public byte[] download(String fileName) {
        InputStream is = null;
        ByteArrayOutputStream os = null;
        try {
            AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
            AmazonS3 s3 = new AmazonS3Client(credentials);
            S3Object object = s3.getObject(bucketName, fileName);
            is = object.getObjectContent();
            os = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            while (true) {
                int len = is.read(buffer);
                if (len < 0) {
                    break;
                }
                os.write(buffer, 0, len);
            }
            return os.toByteArray();
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            IOUtil.closeQuietly(is);
            IOUtil.closeQuietly(os);
        }
    }
}

Amazon Web Services クラウドデザインパターン 設計ガイド

Amazon Web Services クラウドデザインパターン 設計ガイド

JavaでAmazon S3にファイルをアップロードする

基本的には、SDKに含まれているサンプルを見れば何をするのかわかるんですが、やってみたこととしてメモしておきます。
すでにバケットが用意されていると言う前提です。
今回はCredentialsをBasicAWSCredentialsにて作成しましたが、公式のサンプルではPropertiesCredentialsを使ってプロパティファイルを用いるようになっていました。
AmazonS3Clientのインスタンスを作って、putObjectをするだけだなんて素敵過ぎますね。

public class A3Service {
    // getter setter略
    private String accessKey;
    private String secretKey;
    private String bucketName;

    public void upload(File file) {
        try {
            AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
            AmazonS3 s3 = new AmazonS3Client(credentials);
            s3.putObject(bucketName, file.getName(), file);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

Amazon Web Services ガイドブック クラウドでWebサービスを作ろう!

Amazon Web Services ガイドブック クラウドでWebサービスを作ろう!