つばくろぐ @takamii228

知は力なり

AWS Certified Solution Architect Associate合格体験記

AWS Solution Architect Associateに今更ながら受験して無事合格したのでざっくりまとめておきます。

AWS

AWSを使ったシステム開発のプロジェクトの経験は2年半ほどです。

設計・構築は別チームがやっていてもっぱら用意してもらった環境を使う側なのですが中身がどう動いているかは知っている程度という感じ。

CI/CD環境とかを本格的に構築運用する上でネットワークとかマネージド・サービスとかを都度調べてそれなりに知見も溜まったので受けてみることにしました。

受験準備

まず受験体験記を読む

Qiitaやブログで上がっている受験体験記を一通り目を通してどんな勉強が必要なのか、試験がどんな雰囲気なのかを確認しました。

qiita.com

chariosan.com

qiita.com

ちょうど2018年の頭に試験内容が改定されたのでどのへんが変わったのかも受験体験記から情報を得ました。

udemyの講座を一通りやる

やっぱり自分で手を動かしてみるのが一番理解が深まると思い、ちょうどudemyによさげな講座があったので年末年始の時間を使って一気にやりました。

https://www.udemy.com/aws-14days/

www.ketancho.net

udemyのコンテンツはたまにセールで1400円とかになっているので、そこを狙って購入することをおすすめします。

本で勉強する

以下の本を2-3周しました。

徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書

徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書

Amazon Web Services エンタープライズ基盤設計の基本

Amazon Web Services エンタープライズ基盤設計の基本

過去問・模擬試験を解く

公式のHPにある試験のサンプル問題が10問あるのでそれで問題文の形式を把握することができます。

aws.amazon.com

また2160円を払うと25問の模擬試験を受けられます。ある程度勉強が進んだ段階で受けてみました。

模擬試験の結果は20/25の80%正解で合格圏内でした。

模擬試験で「あれ」と考え込んだ問題を参考書や公式のドキュメントに戻って復習する形で勉強をしました。

受験申込

受験の会場は都内の各所テストセンター会場から選択することができます。

ただテストセンター会場によっては頬杖をつくだけで試験官に怒られたり、PC環境がひどくて試験中にフリーズするという話もあるようだったので、安定と実績の銀座CBTS歌舞伎座テストセンターを選択しました。

cbt-s.com

受験当日

受験当日の持ち物として署名付きの身分証明書を2つ持参、とのことだったので運転免許証とパスポートを持っていきました。免許証とクレジットカードでもよかったようです。

試験室に持ち込めるのはロッカーの鍵と身分証明書だけだったのでそれら以外はロッカーにしまいます。あとメモ用に紙とボールペンが用意されてました。

試験開始は予定では10:30からとなってましたが、準備ができた人から随時受験開始という感じでした。

試験時間は130分間でしたが試験終了の画面までたどり着いた人から退出可能でした。

受けた感想ですが、まぁ問題文と選択肢の表現がちょっとわかりにくいのがいくつかありましたが概ね対策してた範囲の問題だったかと思います。

結果は試験終了画面の最後に表示され、無事合格することができました。後日詳細なスコアがメールで届きました。

今後

これでAWS Summitで認定ラウンジに入ることができます!(年々質が下がっているとの噂ですが・・・)

次はDevOpsでもとろうかな。あと資格の有効期限が2年、更新猶予が3年なのでさっさとProを受ける準備をしようと思います。。。

2018年分の医療費控除を申請した話

2018年は歯の治療でそれなりに課金をしてしまったので、少しでも取り戻すべく医療費控除を申請したのでそのメモを残しておきます。

医療費控除とは

1年を通算して高額な医療費(保険外を含む)を払った場合、申請を行うと計算式に基づいた金額が還付される仕組みです。

年収や扶養家族の有無で還付される金額は変化しますが、独身の場合はだいたい医療費が年間10万円を越えると還付される額がプラスになるかと思います。

www.nta.go.jp

なお平成29年から始まったセルフメディケーション税制とは併用ができません。

どちらの申請かで迷う場合は還付額が多い方で申請すると良いでしょう。

準備物

確定申告と同じような感じで申請書類を用意します。

  • 源泉徴収票
  • マイナンバーカードのコピー、またはマイナンバー通知書のコピーおよび身分証明書(運転免許証、保険証、パスポート等)
  • 1年間の医療費の明細書
  • 印鑑
  • e-taxで作った申請書(後述)

e-taxによるpdf作成

確定申告と同じでe-taxで申告用の書類が作成できます。

www.e-tax.nta.go.jp

下のほうにある「確定申告等作成コーナー」で医療費控除用の書類も作成ができます。

www.keisan.nta.go.jp

あとはガイドにそって記入情報を順番にいれていき最後に「印刷」とやるとpdfが出力できます。らくちん。

入力したデータはexportでき、exportしたデータを読み込むことによって入力した状態から開始することもできます。

申請で迷ったところ

旧字体をどうするか?

人によっては旧字体等で運転免許証や住民票に記載された感じと漢字変換で普段使っている漢字が異なる場合があるかと思います。

私もそうなのですが、とくに気にせずに普段入力している漢字で入力をしました。窓口でも特に止められることはなかったです。

oshiete.goo.ne.jp

旧字体とは関係ないですが、全角チルダを途中で入れてたらpdf出力のときにバグってしまい全部入力し直しました笑

利用可能な文字はここに一覧があります。

www.e-tax.nta.go.jp

医療費の明細をどうかくか?

医療費の明細の書き方については国税庁に例があります。

www.nta.go.jp

基本これに従って書けばよいのですが、医療保険側で出力される明細は月ごとの合計金額になっていたり交通費の分がなかったりするため、自分で個別に通院ごとに明細をまとめておくとよいでしょう。

私は毎回の通院、調剤薬局、通院の交通費をそれぞれ1行ずつで記入をしました。そのほうが説明を求められたときの根拠も示しやすいですしね。

源泉徴収票が電子交付の場合そのコピーでいいか?

数年前から所属企業によっては源泉徴収票が電子交付になっているとこもあるかと思います。

医療費控除申請でも源泉徴収票の提出が求められています。

FAQに電子交付についての記載があり、ここではちゃんと公式のやつにしてねって書いてあります。。。

www.nta.go.jp

会社の先輩に昨年どうしたか聞いてみたら「電子交付のものを紙印刷して持ってって何も言われなかったよー」、とのことだったで私もそうしてみることにしました笑

サンプリングしてチェックしてるのかな・・・。

申請

最後にe-taxで作った書類を印刷をします。一箇所だけ印鑑を押す箇所があるので捺印をして、台紙にもろもろのコピーを糊付けして税務署に申請します。

マイナンバーカードとマイナンバーカードの読み取り機があれば電子申請も可能なようですが、私は持っていないので紙で税務署へ凸しました。

税務署へ申請するときは一緒に印刷された申請書類の控えも合わせてで持っていきましょう。税務署の窓口で申請の控えに受付の日付印を押す必要があるからです。

なお、医療費控除の申請は確定申告の申請開始を待たずに年明けから申請が可能です。

allabout.co.jp

確定申告開始直後は窓口の混雑が予想されるため、確定申告の必要がない場合は早めにやっておくとよいと思います。

おわりに

以上で申請が完了しました。だいたい申請してから1~2ヶ月で還付金が振り込まれるようです。

www.nta.go.jp

窓口では受理されましたが本当に還付されるか心配なので首を長くして待とうと思います。

てかせっかくマイナンバーがあるんだがらこの手の個人での申請がいらない時代が早くきてほしい・・・。

追記

2/14に申請をして、無事3/7にゆうちょ銀行へ還付金が振り込まれていることを確認しました。わーい!

AWS ElasticBeanstalkにDocker Imageをさくっとデプロイしてみた

AWSのElasticBeanstalkのDockerホスティングを使ってDocker Imageをサクッとデプロイできたのでメモとして残しておきます。

デプロイするもの

int128先輩が作ったJiraのWebhookのJSONを加工してしてSlack / Mattermostに通知連携してくれるGoアプリを動かしてみます。

github.com

int128.hatenablog.com

ElasticBeanstalkにデプロイする

ドキュメントに従ってデプロイしてみます。

docs.aws.amazon.com

まずドキュメントに従ってDockerrun.aws.json作成しzipで固めたものを用意します。

// Dockerrun.aws.json
{
  "AWSEBDockerrunVersion": "1",
  "Image": {
    "Name": "int128/jira-to-slack"
  },
  "Ports": [
    {
      "ContainerPort": "3000"
    }
  ]
}

DockerfileとDockerrun.aws.jsonの2つをまとめたzipの場合は以下のように書けばOKです。

// Dockerfile
FROM int128/jira-to-slack

EXPOSE 3000
CMD ["/jira-to-slack"]
// Dockerrun.aws.json
{
    "AWSEBDockerrunVersion": "1",
    "Ports": [
      {
        "ContainerPort": "3000"
      }
    ]
}

マネジメントコンソールでElasticBeanstalkで以下の設定で環境を新規に作成します。

  • アプリケーション名
    • 適当な名前をつける
  • プラットフォーム
    • 汎用Docker
  • アプリケーションコード
    • コードのアップロードを選択して、上記で作ったzipファイルをアップロードする

最低限必要なものは上記だけですが、「さらにオプションを設定」を選択すると以下の項目が追加で設定できます。

  • ソフトウェア
    • ログローテの設定やCloudWatchLogsとの連携ができます
    • ElasticBeanstalkはリクエストをnginxが受けていて、そこのアクセスログやDockerのログをS3においたりCloudWatchLogsと連携したりできます
  • インスタンスタイプ
  • 容量
    • AutoScaling Groupの設定ができます。デフォルトは単一インスタンスです。
  • ロードバランサー
    • AutoScaling Groupを設定すると設定できます。単一インスタンスの場合は選択できません。
  • ローリング更新とデプロイ
    • デプロイメントの反映のさせ方の設定ができます。
  • セキュリティ
    • ElasticBeanstalkに付与するIAMロールが設定できます。
  • モニタリング
    • CloudWatchでモニタリングする項目やヘルチェの設定できます
  • 管理された更新
    • メンテナンスウィンドウによる更新を定期的に行う設定のようです
  • 通知
    • 通知をメールで飛ばせるようです
  • ネットワーク
    • vpcやパブリックIPが設定できます
  • データベース
    • RDSの設定ができます
  • タグ
    • タグが付けられます

上記の設定を変更したあとに アプリの作成 を選択すると、環境構築がスタートします。

3分程まつと環境構築が完了しアプリが利用できるようになります。

2019-01-30 22:56:57 UTC+0900 INFO    Environment health has transitioned from Pending to Ok. Initialization completed 49 seconds ago and took 2 minutes.
2019-01-30 22:56:15 UTC+0900    INFO    Successfully launched environment: Test-env
2019-01-30 22:56:15 UTC+0900    INFO    Application available at Test-env.xxxxxxx.us-east-1.elasticbeanstalk.com.
2019-01-30 22:55:58 UTC+0900    INFO    Docker container xxxxxxxxx is running aws_beanstalk/current-app.
2019-01-30 22:55:57 UTC+0900    INFO    Added instance [i-xxxxxxxxx] to your environment.
2019-01-30 22:55:50 UTC+0900    INFO    Successfully built aws_beanstalk/staging-app
2019-01-30 22:55:48 UTC+0900    INFO    Successfully pulled int128/jira-to-slack:latest
2019-01-30 22:55:24 UTC+0900    INFO    Waiting for EC2 instances to launch. This may take a few minutes.
2019-01-30 22:54:19 UTC+0900    INFO    Created EIP: xxxxxxxxxxxx
2019-01-30 22:54:03 UTC+0900    INFO    Created security group named: awseb-e-wi8p8yhmvx-stack-AWSEBSecurityGroup-E0I6S0124S51
2019-01-30 22:53:57 UTC+0900    INFO    Environment health has transitioned to Pending. Initialization in progress (running for 9 seconds). There are no instances.
2019-01-30 22:53:38 UTC+0900    INFO    Using elasticbeanstalk-us-east-1-xxxxxxxx as Amazon S3 storage bucket for environment data.
2019-01-30 22:53:38 UTC+0900    INFO    createEnvironment is starting.

ログを見るとS3バケットやSG、EIPが作られていることがわかります。

わずか数行でDocker Imageをデプロイすることができました。PaaSらくちん!

お片付け

環境を削除するときは アプリケーションの削除 を選択すれば作成したスタック一式が削除されます。

ただし作成されたS3バケットは残ってしまいます。このバケットはデフォルトでは手動で消せない設定になっているので、バケットポリシーを手でいじってから消すようにしましょう。

参考

コマンドラインツールのebコマンドを使えばローカルやCIを経由して継続的にデプロイすることも可能なようです。今回は頻繁に更新するようなものでもないので実施しませんでした。また別の機会に検証してみようと思います。

github.com