トランプ兵の記憶と記録

普通のアプリケーションエンジニアの備忘録

AWS基礎を学ぼう 特別編 最新サービスをみんなで触ってみる はじめてのCI/CDパイプライン まとめと感想文

目的

7月になってから仕事でAWSを使い始めたので、CI/CDの勉強会に参加した

ハンズオン資料

JAWS-UG 初心者支部#37 codeシリーズハンズオン

ハンズオンのまとめ

構築するリソースを理解する

JAWS-UG 初心者支部#37 codeシリーズハンズオン 構成図の通り

VPC

  • 構成図の通り、Cloud9とEC2がVPC内にあるので最初に作成した
  • Cloud9とEC2を使わなければ不要だと思う

IAMロール

下記リソースのフルアクセスを付与した。

  • EC2
  • CodeCommit
  • CodeBuild
  • CodePipeline
  • CodeDeploy
  • S3

キーペアとEC2

  • ハンズオンではEC2にsshしなかったのでキーペアは利用しなかった
  • 今回のハンズオンでは、CodeStarでテンプレートを指定したらデプロイ先が自動的にEC2で決まった
  • Codeシリーズだけを使いたい分には不要だと思う

Codeシリーズ

クラウドIDE

  • Cloud9
    • AWSコンソール上でIDEが使える

S3

  • CodeBuildで作成した成果物を保存

CloudFormation

明示的に利用しないので構成図にはないが、CodeStarでリソースを作成するとCloudFormationが利用されていた

前半: 準備+CodeStarでリソースを作ろう

CodeStarの利用

AWS CodeStar のセットアップ - AWS CodeStar

前提

『ステップ 3: ユーザーの IAM アクセス許可を設定する』に書いてある。

ハンズオンではAdministratorAccess管理ポリシーを持つIAMユーザで操作した

サービスロールの作成

初回はサービスロールの作成を求められる。これで開発者の代わりにCodeStarが様々なリソースを作ってくれる

f:id:zoosm3:20210710164643p:plain
AWS Code Star: 初回のみサービスロールを作成

Amazonアカウントとの連携

しばらくしたら表示されなくなった。AWSアカウント作成直後などに表示されることがある模様

その他

  1. リポジトリの指定
  2. プロジェクトテンプレートを選択
    • 今回はHTMLを選択
    • デプロイ先のサービスはEC2
  3. EC2の作成

ここまで操作するとCloudFormationが必要なリソースをまとめて作成していた

f:id:zoosm3:20210710170214p:plain
CloudFormationが色々動いている

f:id:zoosm3:20210710170324p:plain
CloudFormationで作成されたリソースの一部

Cloud9環境の作成

ステップ 1: 環境の作成 - AWS Cloud9

ソースコードの修正とpush

Cloud9でソースコードを作成してpushすると、EC2に自動で修正がデプロイされた

ビルドが動く仕組み

buildspec に書いてある

CodeBuild のビルド仕様に関するリファレンス - AWS CodeBuild

後半:手動でリソースを作成しよう

CodeStarで作成されたリソースとIAMロールを手で作成して、EC2のデプロイを試してみた

後片付け

EC2の止め忘れがないよう注意

雑談

最後の雑談で週末何をするか、の話から、AWS資格の取りやすさと勉強のコツの話に

  • Solution Architect Associateは難しい
  • 最初はSysOps アドミニストレーター – アソシエイトから入ると簡単
  • Solution Architect Professionalに合格するためには、ドキュメントを全部読むこと

ここは経験者のコツや職場の考え方次第で色々見方があるなあと思った。ハンズオン中の運営さんの雑談も勉強になった

トラブルシューティング

ハンズオン中に起きた困りごとの対策

AWSからYour Request For Accessing AWS Resources Has Been Validatedという件名のメールが来る

ハンズオン中にAWSからメール受信。

何がValidatedなのかわからないので運営さんに質問したところ、AWSアカウント作成直後に起きることがあるということで、特に対応不要だった。

Dear AWS Customer,

Thank you for using Amazon Web Services!

You recently requested an AWS Service that required additional validation. Your request has now been validated for AWS Asia Pacific (Tokyo) region(s). If you are still experiencing difficulty, please contact us at aws-verification@amazon.com <[[mailto:aws-verification@amazon.com]]>.

Thank you for your patience.

—The Amazon Web Services Team

デプロイに失敗する

  • IAMロールの作成やアタッチを忘れている
    • IAM を参考にして作成なりアタッチなりする
  • CodeDeployで追加の上書き を忘れている
    • デプロイ設定の修正が出来ないので、削除して再度作り直す

参加上の振り返り

印象的なコメント

  • CodeCommitに課題がないのが不便なので、CodeCommitにJIRA連携機能があるのではないか?

勉強会への取り組み方

  • 仕事でないので仕事部屋にあるモニタを使わなかったが、PCのモニタがあったほうが良かった。ハンズオン資料を見ながらAWSコンソールを触ることが出来るので効率がいい
  • AWSの画面キャプチャを撮るときは個人情報を載せないように注意
    • IAMユーザに自分の名前などを付けなければ回避できると思う

AWSの知識

  • 事前にEC2, VPC, IAM, CloudFormationの知識があったので比較的困らなかった
  • AWSのリソース作成は、手動よりCloudFormationやCodeStarを使ってまとめてリソースを整理したほうが便利
    • 作成忘れやミスがない
    • 一括でリソースを削除できる
  • EC2のデプロイが完全に自動でできるのは嬉しい。その昔はEC2でも手動で切り替えをしていた
  • CodeCommitは課題やプルリクエストのマージ権限などが充実すると仕事で嬉しい
    • そういう時はGithubを使えばいいのかもしれないが、Githubが使えない場合もある
    • できればGitlabとBitBucket連携も欲しいが、多分他の方法があるので必要になったら調べる
  • AWSアカウントを本番と本番以外で分割する場合、Codeシリーズのリソースはどちらのアカウントに配置すると良いのだろう
    • リポジトリが複数あると開発上混乱するので、リポジトリAWSに持たずGithubだと便利かもしれない
    • CodePipelineは本番以外用・本番用の2つ持つしかないかなあ?出来れば分けたくない…

ありがとうございました。