Upgrade to Pro — share decks privately, control downloads, hide ads and more …

雲勉@オンライン【勉強会】初めてのAWS CDK〜AWSリソースをコード管理してみよう〜【開発...

雲勉@オンライン【勉強会】初めてのAWS CDK〜AWSリソースをコード管理してみよう〜【開発エンジニア向け】

Y.Sumikura

April 08, 2022
Tweet

More Decks by Y.Sumikura

Other Decks in Technology

Transcript

  1. アイレットご紹介 – 会社概要 3 n 社名 アイレット株式会社 n 所在地 〒105-6307

    東京都港区⻁ノ⾨1-23-1 ⻁ノ⾨ヒルズ森タワー7F 設⽴2003年10⽉15⽇ n 資本⾦ 7,000万円 n 代表者名 岩永充正 n 従業員数 886名(2022年4⽉時点) n 事業内容 ITコンサルティング、システム開発、 システム保守・運⽤、 サーバハウジング・ホスティング n 主要株主 KDDI株式会社
  2. アイレットご紹介 – AWS APNパートナー 4 cloudpackは、Amazon Elastic Compute Cloud (Amazon

    EC2)やAmazon Simple Storage Service (Amazon S3)をはじめとする AWSの各種プロダクトを利⽤する際の導⼊・設計から運⽤保守を含んだフルマネージドのサービスを提供し、バックアップや24時間 365⽇の監視/障害対応、技術的な問い合わせに対するサポートなどを⾏っております。 2013年6⽉4⽇には、AWSパートナーネットワーク(APN)において、⽇本初のAPNプレミアティアコンサルティングパートナーの⼀社と して認定されたのをはじめ、その後9年連続で認定されています。 『APNプレミアティアコンサルティングパートナー』はAPNプログラムの中で最上位のパートナーであり、厳しいクライテリアを満たした パートナーのみが選出され、世界で128社のみが認定されています。9年連続で認定された⽇本企業としては、cloudpack(アイレット) と株式会社野村総合研究所の2社のみとなります。
  3. アイレットご紹介 – APN Consulting Partner of the Year 2019 –

    Japan 5 AWSのパートナーネットワークに登録している企業が参加した「AWS Partner Summit Tokyo」の中で、数あるアワードの中で最も実績 をあげたパートナーであることを⽰す『APN Consulting Partner of the Year 2019 – Japan』を受賞しました。cloudpackは、同賞を5度 ⽬の受賞となります。 『APN Consulting Partner of the Year 2019 – Japan』は、AWSが年間を通じて営業・技術・マーケティング分野においてパートナーと しての総合⼒を判断し、AWSのビジネスに最も貢献したパートナーに贈られるものです。cloudpackは、2013年から継続的にプレミアコン サルティングパートナーとして認定されているほか、業界に影響を与える多数のお客様事例のリリースや、数千台規模のマイグレーション 案件、基幹システムの移⾏を⼿掛けるなど、さらなるAWSビジネスの拡⼤に貢献しました。 また、サーバーレスやマシンラーニングなどの新サービスも積極的に採⽤して成功させる⼀⽅で、エンタープライズ案件も推進してきた結 果、著しい売り上げ伸び率を達成 したことが評価されました。
  4. 0.講師⾃⼰紹介 7 n 秋葉 ⼤輔(あきば だいすけ) • クラウドインテグレーション事業部 開発第⼆セクション •

    組み込み開発〜Webサービス開発までいろいろ開発経験あり • 2020年2⽉⼊社 • 今年度はProの資格も取っていきたいです
  5. アジェンダ 8 0. ⾃⼰紹介 1. AWS CDKとは (19:05~19:10) 2. AWS

    CDKの始め⽅ (19:10~19:15) 3. デプロイの流れ (19:15~19:25) 4. AWS CDKを使ってみる (19:25~19:45) 5. Tips紹介 (19:45~19:50) 6. まとめ(19:50~19:50) 7. 質疑応答(19:50~20:00)
  6. 1.AWS CDKとは 12 n CloudFormationを使う ◦ メリット テンプレートを使って同じリソースを再現できる × デメリット

    学習コストがかかる 作成対象のリソースについて、詳細な記述が必要になる
  7. 1.AWS CDKとは 14 n AWS CDKって何者︖ CDK = Cloud Development

    Kit AWSのリソースをプログラミング⾔語で記述できるツール • ソースコードからCloudFormationテンプレートを⽣成する • AWSのベストプラクティスが定義されたライブラリによって少ないコードで記述できる • オープンソースで開発されておりユーザが拡張可能 〜BlackBeltより抜粋〜
  8. 1.AWS CDKとは 15 n AWS CDKのメリット • プログラミング⾔語が使える • テストコードが記述できる

    • 複数スタック間の依存関係が記述できる • バックエンドはCloudFormationになっている 〜BlackBeltより抜粋〜
  9. 1.AWS CDKとは 17 n AWS CDKのバージョン • 2021/12にAWS CDK のバージョン2が⼀般提供開始された

    • ネット上にはバージョン1系の記事が⽐較的多い • 今回お話しするのはバージョン2系
  10. 2.AWS CDKの始め⽅ 21 n AWS CLIの設定 AWS CDKは内部でAWS CLIを使っているため、実⾏時にAWS CLIに渡す認証情報とリー

    ジョンを指定する必要がある 指定する⽅法としては、主に以下の3種類がある 1. cdkコマンド実⾏時にprofileオプションを指定する ~/.aws/configに記載したプロファイルを使⽤する 2. 環境変数を設定する AWS_ACCESS_KEY_ID、AWS_SECRET_ACCES_KEY、AWS_DEFAULT_REGIONを設定する 3. デフォルトプロファイルを設定する
  11. 2.AWS CDKの始め⽅ 22 n 初期コードの⽣成 • cdk init を実⾏することで初期コードが作成される •

    プログラミング⾔語は language オプションで指定する • cdk initを実⾏するディレクトリは空である必要がある
  12. 2.AWS CDKの始め⽅ 23 n ⾃動⽣成されるファイルについて • bin/cdk-demo.ts CDKアプリケーションのエントリーポイント • lib/cdk-demo-stack.ts

    CDKアプリケーションのメインスタックを定義するファイル • cdk.json CDKアプリの実⾏⽅法をツールキットに指⽰させるための ファイル • tsconfig.json プロジェクトのTypeScript設定
  13. 3.デプロイの流れ 25 n 初回のデプロイ 1. 必要なリソース定義をコーディング 2. cdk synth 3.

    cdk bootstrap 4. cdk deploy n 2回⽬以降のデプロイ 1. 必要なリソース定義をコーディング 2. cdk synth 3. cdk diff 4. cdk deploy
  14. 3.デプロイの流れ 29 n bootsrapで作成されるリソース例 リソース種別 リソース名 SSM Parameter /cdk-bootstrap/[ランダム⽂字列]/version IAM

    Role cdk-[ランダム⽂字列]-cfn-exec-role-[AWSアカウントID]-[リージョン] cdk-[ランダム⽂字列]-deploy-role-[AWSアカウントID]-[リージョン] cdk-[ランダム⽂字列]-file-publishing-role-[AWSアカウントID]-[リージョン] cdk-[ランダム⽂字列]-image-publishing-role-[AWSアカウントID]-[リージョン] cdk-[ランダム⽂字列]-lookup-role-[AWSアカウントID]-[リージョン] ECR Repository cdk-[ランダム⽂字列]-container-assets-[AWSアカウントID]-[リージョン] S3 Bucket cdk-[ランダム⽂字列]-assets-[AWSアカウントID]-[リージョン]
  15. 4.AWS CDKを使ってみる 39 n 必要なリソースをコーディング • Lambdaとして利⽤するファイルを⽤意 • ライブラリのインストール •

    メインスタックの定義を更新 ・ライブラリをimport ・Lambda関数を定義 ・APIGatewayを定義
  16. 4.AWS CDKを使ってみる 42 n cdk synth • cdk.out/CdkDemoStack.template.jsonが作成される • 作成されたファイルを確認するとLambda、

    API Gateway以外にも関連するIAM Roleなどが 定義されていることがわかる • synthコマンドはtemplateの作成だけのため、 コマンド実⾏時にプロファイル指定は不要
  17. 4.AWS CDKを使ってみる 45 n cdk deploy • Do you wish

    to deploy these changes (y/n)?と聞かれるのでyと答える • デプロイに成功すると、作成したAPI Gatewayのエンドポイントも表⽰される エンドポイントが出⼒された
  18. 4.AWS CDKを使ってみる 59 n 必要なリソースをコーディング • Lambda関数を更新 • メインスタックの定義を更新 ・ライブラリを追加

    ・DynamoDBを追加 + 初期データ投⼊ ・Lambda関数に環境変数追加 + DynamoDBアクセス権限付与
  19. 5.Tips紹介 69 n 各リソースの削除⽅法 • cdk bootstrapで⾃動⽣成されたリソース群 ->CloudFormationスタックから削除する S3バケットについては中⾝を空にした上で、⼿動でバケット削除する必要がある •

    cdk deployで⽣成されたリソース群 ->cdk destroyコマンドで削除可能 DynamoDB、S3バケットなど⼀部のリソースについては、設定次第で⼿動削除が 必要な場合もある
  20. 6.まとめ 72 n 今⽇話したことまとめ • AWS CDKを使うとプログラミング⾔語を使ったリソース管理ができる • AWS CDKは裏でCloudFormationが動作しているが、AWS

    CDKを使うと必要最低限の記 述でデプロイができる • 最初に使う場合は、cdk init、cdk bootstrapが必要 基本的なデプロイの流れは、コードの修正 -> cdk diff -> cdk deploy • 公式のAPIリファレンス、APIサンプルを使えばいろいろ書いてある
  21. 76