読者です 読者をやめる 読者になる 読者になる

(AWS)AWS SDKを使用してS3にファイルをアップロードする際に、Content-Typeを指定する

自分用の備忘録です。
ObjectMetadaクラスを使用することで、
S3へアップロードするファイルにメタデータを指定できる。
画像ファイルに"image/png"などのContent-Typeを指定したい場合に
メタデータ指定を利用する。
正しいContent-Typeを指定しないとブラウザが
おかしな判定しちゃう時があるらしい。

プログラミング言語 Java
AWS SDK Version 1.11.89

PutObjectRequest request = new PutObjectRequest(bucketName, path, file);
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType("image/png"); //pngファイルの例
s3client.putObject(request);

(AWS)EC2のWebApplicationからS3の署名付きURLを取得する方法

自分用の備忘録です。
EC2からS3バケットの画像ファイルなどを取得したい時に便利。
バケットポリシーを変更することなくアクセスできる♪

プログラミング言語 Java
AWS SDK Version 1.11.89

Date expiration = new Date();
long msec = expiration.getTime();
msec += 1000 * 60 * 60; // 1 hour.
// 有効期限の設定(デフォルトは15分らしい)
expiration.setTime(msec);

GeneratePresignedUrlRequest generatePresignedUrlRequest =
                new GeneratePresignedUrlRequest(bucketName, path);

// GET Request(POSTもできる)
generatePresignedUrlRequest.setMethod(HttpMethod.GET);
URL url = client.generatePresignedUrl(generatePresignedUrlRequest);

return url.toString();

「AWS認定ソリューションアーキテクト-アソシエイトレベル試験」に合格したよ!

AWS認定ソリューションアーキテクト-アソシエイトレベル試験に合格しました!
aws.amazon.com

試験を受けた動機

2017年の調査会社による報告によれば、
クラウドインフラ市場の3割以上のシェアを占めているらしい
Amazon Web Services

そんなAWSに魅力を感じられずにはいられません。
なので私はより深くAWSを理解するためにも、
認定試験に合格することを目標にAWSの知識を深めました。

受験までを振り返る。どんな勉強をしてきたか。

勉強した内容を書いていきます。

実務による開発経験を積みました。

2017年1月から3ヶ月間、AWSを用いたウェブアプリケーション開発をひたすら
行っておりました。実務経験により様々なAWSサービスを利用できましたが、
この経験は次に受ける「デベロッパー-アソシエイト」で
主に役に立つと思います。

Blackbeltのオンラインセミナーの資料を全て読みました。

今思えば、試験範囲の内容に絞って見ておけばよかったのですが、
160近くあるドキュメント全てに目を通したことにより
試験範囲外のAWSサービスまで理解できたのでまぁよしとします!

ホワイトペーパーを読みました。

BluePrintに記載があるホワイトペーパーを探すのは面倒でした。
リンクをまとめてくれると助かる。なので下記にまとめます。↓
リンク切れになる可能性があります。ご了承下さい。


____

■アマゾン ウェブ サービスの概要

https://media.amazonwebservices.com/jp/wp/AWS_Overview.pdf

■障害復旧を目的としたAWSの使用

https://media.amazonwebservices.com/jp/AWS_Disaster_Recovery_01242012.pdf
____

上記ドキュメントは付録を覗いて全て読了しましたが、
正直かなりキツかった。特にセキュリティプロセスの概要が80ページ程あり、
内容も濃いので気合を入れて読むことをオススメします・・。

サンプル問題を解く

基本的に後述するWEB問題集や模擬試験を含め、
間違った箇所の再学習が重要です。

WEB問題集のフリープランで腕試し

AWS WEB問題集で学習しよう – 赤本ではなく黒本の問題集から学習する方向け
独自の問題集らしいのですが、内容的には模擬試験にかなり似ています。
ただ、あまりこのサイトを頼らないほうがいいと思います。
なぜならば、ソリューションアーキテクト-アソシエイトレベルの内容は
充実していますが、他のレベルの内容は足りていないからです。
問題の雰囲気を掴む程度に利用したほうがいいと思います。

模擬試験を受けました。模擬試験の結果は合格!

模擬試験は有料ですが、試験に合格したいのなら
受けるべきです。模擬試験は自宅で受けることができるので
問題のコピーも可能です。回答は表示されないので、
どこを間違ったのか自力で調べて、回答を導き出す必要があります。
自分は模擬試験は合格しました!

そして本試験!結果は合格!

本試験は試験会場で行われます。
模擬試験と比べて難易度が高く、
受験料も高いので慌てそうになりますが、冷静に問題を解いていきます。
無事に合格できました。

個人的に、認定試験を受けるなら抑えておきたいAWSナレッジを共有します。

Active Directoryを活用したAWS Management ConsoleへのSSO(AD Connector編)

Active Directory関連は抑えておいたほうがいいと思います。
特にAD Connectorが何なのかとか。
dev.classmethod.jp

プレイスメントグループ

プレイスメントグループは個人的に影が薄くて忘れていた存在!(ぉぃ
認定試験ではとても重要な内容です。完全に理解しておくことをオススメします。
docs.aws.amazon.com
dev.classmethod.jp

CloudFormationでStackを削除した時にリソースを消さない設定

こんなのCloudFormation使ってないと絶対分からん!的な内容。
これまた、認定試験では重要な内容です。
dev.classmethod.jp

S3への保存に成功したことを確認する方法とは

MD5チェックサムを確認する方法を抑えておいたほうがいいと思います。
qiita.com

EC2セキュリティグループの反映タイミング

EC2クラシックとVPC内で反映のタイミングが異なるのは理解しておきたい。
即時反映はVPC内のみ。
docs.aws.amazon.com

OLTPとは何か

このような用語を覚えておかないと、認定試験でつまづきます。
特にOLTPという普段聞き慣れない用語の理解は必須です。
www.imkk.jp
http://www2.gssm.otsuka.tsukuba.ac.jp/staff/kuno/lectures/11/2011-10-InfosysTech2.pdf


次は「認定デベロッパー-アソシエイト」を目指します!
とりあえずAWS Summit 2017 Tokyoに参加する!
www.awssummit.tokyo

Kindle Paperwhite マンガモデルを購入しました。1ヶ月使ってみての感想。

Kindle Paperwhiteを購入して1ヶ月程使ってみたので、
感想を書いていきます!
f:id:yasay:20170507014003j:plain

Kindleに400ページ近くある分厚い技術書を詰め込んで
持ち歩きたかったので、マンガモデルの32GBです。

開封

f:id:yasay:20170507022604j:plain
電子ペーパー端末を初めて購入したので、
開封したばかりの状態で既に何かしら表示されているのを見て、
少し感動しました。

f:id:yasay:20170507022941j:plain
ベゼルはプラスチックなので正直チープですが、
高級感がないから使い倒しやすい気がします。

どんな本を入れているか

マンガモデルですが、マンガは入れてないですw

オライリー技術評論社のWebサイトで購入した電子書籍
自炊した技術書、 勉強会で共有されたスライド資料などを入れています。

WEB+DB Pressは重くてかなり見づらい

gihyoから購入したWEB+DB Pressはファイルサイズが40MB近くあり、
特定のページで激重になり見づらかったです。
対策として目次を使った移動をすればOK。
gihyo.jp
上位の機種だともう少し快適になるのでしょうか?

使ってみて分かった、Kindleのメリット

電子ペーパーはかなり読みやすい。

f:id:yasay:20170507070125j:plain
本体サイズが小さいわりに文字はかなり見やすく、
太陽光を受けた状態での閲覧もすこぶるいいです。
さすが読書のために作られた端末と言えます。

手軽な本体サイズと重量

f:id:yasay:20170507071832j:plain
↑一般的な技術書のサイズと比較した画像
サイズが「169 x 117 x 9.1mm」とかなり小さいサイズで、
重量も「205g」しかありません。
なので、どこにでも持ち歩けます。
このサイズと重量で何百冊と本を持ち歩けることは、
分厚い技術書を読む私には大きなメリットです。

横表示(ランドスケープ)モードがかなり便利。

f:id:yasay:20170507072533j:plain
Slideshareの資料を横モードで閲覧
とても便利な画面の横表示機能。
スライド資料の閲覧時にぴたっと収まってくれます。
文字が小さすぎる書籍なんかも快適に読書できるようになります。

ライトがついているPaperwhiteをおすすめ

暗いところでも読書できるというのは、意外と便利です。
Kindleを購入する際は、Paperwhite以上のモデルをおすすめします。
私はキャンペーン無しモデルを選択しました。

価格も手頃なので、使い倒すつもりでネイキッドでの利用をおすすめ

私はスマホにケースをつける派なのですが、
Kindleにはあえてケースをつけないで持って行きます。
このサイズと重量に大きなアドバンテージがあるので、
アドバンテージを損なう可能性があるケースの着用はしません。
落としたり、色が変わったりして味のあるKindleになってほしいかなw

最大のメリットは「本を読む」ことに集中できること

スマートフォンだと遊んでしまうという話はよく聞きます。
仕方のないことだと思います。スマホはゲームだってできるし、
Youtubeだって見れる。やはりKindleを利用することの最大のメリットは
「本を読む」ことに集中できることだと思っています。
バッテリーも2週間以上持つことが多いので、
電池残量を心配する必要もありません。


以上、1ヶ月使ってみての感想でした!
どうでもいいけどKindleのブラウザはいつまで
体験版なんだろうかw

(AWS)無料ドメインをRoute53で運用してEC2インスタンスに紐付ける

むかしむかしドットコムブームがありましたよね!
懐かしい・・。
さすがにドットコムは無料で取得できませんが、
"gq"などのドメインは無料で取得できます。

今回は、無料ドメインをEC2インスタンスに紐付けてみたいと思います!

本エントリーの画像にあるElastic IPアドレスなどは削除済みです。

Freenomから無料ドメインを取得

無料ドメインを取得します。今回はFreenomから取得。
Freenom - 誰でも利用できる名前

Route 53に取得したドメインを登録する。

f:id:yasay:20170418150845p:plain
TypeはPublic Hosted Zoneを選択

f:id:yasay:20170418151414p:plain
登録すると、NameServerの項が設定される。

EC2にElastic IPを割り当てる

新しいElastic IPを割り当てる

f:id:yasay:20170418151908p:plain

EC2インスタンスに関連付ける

f:id:yasay:20170418152148p:plain

Route 53でAレコードを作成する

f:id:yasay:20170418152831p:plain
ValueにElastic IPを指定する

f:id:yasay:20170418153012p:plain
Aレコードが作成された

Freenomのネームサーバ設定を変更する

Route 53のNSレコードの内容を設定する。
※設定の完了には時間がかかる模様
f:id:yasay:20170418170729p:plain

アクセスしてみる。

f:id:yasay:20170418170457p:plain
アプリケーションサーバにアクセスできました!

ちなみに、Route 53の
料金がかかりますが、微々たるものです。

無料ドメインを使って簡単にサーバを立てられる
いい時代になりましたね!

以上です♪

VirtualBoxのUbuntuにホストオンリーアダプタを使用して簡単にssh接続する

自分用メモに近いエントリーになります。
Ubuntuを使いたい私は頻繁にVirtualBoxUbuntuを利用しています。
この時、ホストOSと接続できないと何かと不便なので、
ssh接続の設定をさくっとしていきます!

本エントリーは下記の環境で確認しています。

VirtualBox 5.1.12 r112440 (Qt5.6.2)
ゲストOS Ubuntu 16.04 LTS
ホストOS Windows 10 Pro

1.VirtualBoxの環境設定を確認する

ネットワークの設定を確認する

f:id:yasay:20170417100247p:plain
アダプターの設定がされていること

f:id:yasay:20170417100353p:plain
DHCPサーバの設定が有効化されていること

2.Ubuntuの仮想環境の設定を変更

ネットワークの「アダプター2」に、ホストオンリーアダプターを設定する

f:id:yasay:20170417100723p:plain

3.Ubuntuを起動して、ネットワーク設定を確認

f:id:yasay:20170417141844p:plain
enp0s8が設定されていることを確認する

4.Ubuntuにopen sshサーバをセットアップ

下記コマンドを実行して、open sshサーバをインストールする

sudo apt-get install openssh-server

5.sshコマンドを発行して接続確認する

f:id:yasay:20170417102114p:plain
Pingが通ることを確認

次に、sshコマンドをホストOSから叩いてみる。

ssh 192.168.56.101

f:id:yasay:20170417142038p:plain
ssh接続に成功することを確認♪
※文字化けしてるのは多分Git Bashのせい。

以上です!

この3ヶ月間で学んだこと

2017年1月から新しいプロジェクトに参画して以来、怒涛の毎日が過ぎ去りました。
そしていつの間にか3月も最終日です。

この3ヶ月間でやってきたことを書き綴ってみようと思います。

新しいプロジェクトで使った技術要素について

PlayFramework

www.lightbend.com

このフレームワーク、日本で流行ってますか?
少なくとも私が今まで参画したプロジェクトにおいて、
Playを使ったことはありませんでした。

使ってみて分かったのが、"結構生産性が高いんじゃないか"ということ。
Railsライクなフレームワークと紹介されるだけあって、
スピード感を持って開発できるような気がします。
ORマッパー的な代物のEbeanや、Play標準のValidationライブラリなど
標準ライブラリが充実している印象を受けました。
また、組み込みのNettyサーバでアプリケーションが起動する辺り、
Spring Bootに近いものなんじゃないかと印象を受けました。

生産性を意識したアーキテクチャの選定というのは
既に大切な要素になっていると思います。

Play + ScalaRailsによる開発も個人で試してみて、
生産性を比較してみたいですね。早く仕事が終わるにこしたこたぁないw

あとはApache Wicketも試してみたいなぁ。

Amazon Web Service

aws.amazon.com

正直去年まで参画していた案件には大きな不満がありました。
それは、Iaasを活用した案件の経験が積めなかったことです。
それが今回、AWSの様々な機能を活用することができたので大満足です。
あまり細かく書くと秘守義務的な意味で怒られそうなので控えます。

これで私の経歴にもIaasを活用したシステムを開発した実績を残せます。

もちろん、AWSが柔軟にスケール可能であり、
手軽に強力な機能を活用し、更に連携させることができることも
身に染みて分かりました。

個人でもAWSは使っています。
従量課金制なので、まるでその手に
最強の開発環境を手に入れたような気持ちになりますね。
エンジニアだし使いたい時にだけ、お金を払えばいいと
思うんですよ。

IntelliJ IDEA

この3ヶ月間みっちりIntelliJ IDEAを使って開発したことは
とても良い経験になりました。なぜなら新しいIDEを使えるようになったから。
ただ、IntelliJ IDEAとPlayFramework(厳密に言うとSBT)の連携が
充実しているわけではないので、よりIntelliJ IDEAを活用するなら
Springを使ってみないとその真価は分からない気がします。

Ultimateの大きなメリットとして、
「Chronon Debugger」が使えることがあると思うんです。
これは、アプリケーションが実行した情報を丸々保存しておいて、
後でデバック情報として参照できるんです。
うまく活用すれば、デバックが変わると思います。
ですが、SBTによる実行はChronon Debuggerを使えなかったんですよ。
残念無念。

そして、新バージョン「2017.1」がリリースされています。
www.jetbrains.com

私はこのバージョンを購入しようと思います。

勉強会

残念ながら予定していたJAWS DAYS 2017は参加できませんでした。

その他

iPhone6 Plusがお亡くなりになった。

2年半も使ってきた私のiPhone6 Plusがお亡くなりになりました。
洗濯機でゴゥンゴゥンと回ってた。取り出したら曲がってた。
SIMフリー機だったので軽いショックを受けながらも、
メモリ1GBしかなくて使いづらかったので、まぁしょうがないと受け止める。

1週間程脱水して充電してみても電源が入らず、
完全に逝ってしまったことが分かる。
ナムナム・・。

今は以前購入したZenfone3にSIMを2枚挿して使ってます。
xblood.hatenablog.com
写真の画質以外は不満がありません。
まさかDSDSのAndroidスマホiPhoneがお亡くなりなったことがきっかけで
使うことになろうとは・・・数奇な運命ですね。

4月は仕事に余裕ができると思うので、英語の学習時間も増やしたいと思います!
3月もお疲れ様でした!