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

AWS CDK で迷わず作る DevOps のスタートライン

Kenji Kono
October 20, 2022

AWS CDK で迷わず作る DevOps のスタートライン

アーキテクチャが決まったあと、DevOps の実現に戸惑うことはありませんか?複数のツールを使いこなして、アプリケーションコードとインフラストラクチャ、CI/CD パイプラインをまとめるには幅広い知識が必要です。AWS CDK の『アプリケーション全体をコードで定義する』という一歩進んだ Infrastructure as Code の考え方から、DevOps の最初のステップを学びます。
AWS Innovate Modern Applications Edition 2022 の資料です

Kenji Kono

October 20, 2022
Tweet

More Decks by Kenji Kono

Other Decks in Programming

Transcript

  1. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 画⾯に映る資料の撮影などによる本セッション資料の転⽤を禁⽌しております AWS CDK で迷わず作る DevOps のスタートライン ⾼野 賢司 T 3 - 4 ソリューションアーキテクト アマゾン ウェブ サービス ジャパン合同会社
  2. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾼野 賢司 ソリューションアーキテクト@名古屋 アマゾンウェブサービスジャパン合同会社 好きなAWSサービス AWS CDK AWS Fargate 好きなコマンド $ vim $ peco $ make こうの けんじ 東海地⽅のこれから AWS を使い始める エンタープライズ企業をサポートしています 得意領域 Infrastructure as Code (IaC), Git, CI/CD Baseline Environment on AWS (BLEA) 開発者 https://github.com/aws-samples/baseline-environment-on-aws
  3. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. おめでとうございます︕ ジェイクは新サービスの運⽤を 任されました ジェイク
  4. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ジェイク 課題は... 迅速にスケールアウト ... ⼤きな需要が⾒込まれる期待のサービス 厳しいスケジュール ... すでにリリース⽇程が決まっている 限られたリソース ... 4⼈のチームで開発から運⽤まで⾏う ... インフラストラクチャに余裕をもたせる予算はない
  5. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 解決策: マネージドサービスとサーバーレス AWS Lambda Amazon API Gateway Amazon EventBridge Amazon Simple Queue Service (Amazon SQS) Amazon Simple Storage Service (Amazon S3) Amazon DynamoDB Amazon Simple Notification Service (Amazon SNS) Amazon Aurora
  6. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 解決策: マネージドサービスとサーバーレス Amazon API Gateway Amazon EventBridge Amazon DynamoDB Amazon SQS AWS Lambda AWS Lambda AWS Lambda Amazon S3 AWS Lambda Amazon SNS メリット 1. 時間の短縮 2. 作業量の削減 3. 柔軟なスケーラビリティ
  7. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 解決策: AWS Developer Tools M O N ITO R D E P LO Y BU ILD & TE S T S O U RC E / ARTIF AC T AU TH O R AWS Cloud9 AWS IDE Toolkits AWS SDKs AWS X-Ray AWS CodeCommit AWS CodeDeploy AWS CodeBuild Amazon CloudWatch AWS CodePipeline AWS CodeArtifact Amazon ECR & ECR Public Amazon DevOps Guru Amazon CodeGuru M O D E L AWS CloudFormation AWS Cloud Development Kit (AWS CDK) AWS Serverless Application Model (SAM) AWS Config AWS Managed Service for Grafana AWS Managed Service for Prometheus
  8. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ジェイク アーキテクチャは決まった。 たくさんツールがあるけど、何から始めよう︖
  9. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. DevOps は素早いソフトウェア の提供を可能にする しかし多くの組織では DevOps の実装に苦労している 組織が必要とするもの: ソフトウェアを素早く 確実に提供すること
  10. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾼度な DevOps を実践するチームは ... 3倍 変更の失敗率が低い 6,570倍 変更の リードタイムが短い 973倍 デプロイ頻度が⾼い https://aws.amazon.com/devops Source: DORA 2021 Accelerate State of DevOps report 6,570倍 サービス復旧に 要する時間が短い
  11. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. DevOps はモダンアプリ構築の基礎 Resiliency and security Source/artifact management Infrastructure as code Observability CI/CD Two Pizza Teams AWS Developer Tools ⽂化 Culture 実践 Practice ツール Tools まずは インフラ構築を 始めよう ジェイク
  12. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Infrastructure as Code (IaC) とは︖ 機械が処理できる定義ファイル(またはコード)によって インフラストラクチャの管理やプロビジョニングを⾏うプロセス I N F R A S T R U C T U R E A S C O D E 13 コードであるべき状態を宣⾔ インフラストラクチャの状態を確認し ⽬的の状態と異なっていたら ⾃動で API を呼び出して状態を⼀致させる インフラストラクチャが ⽬的の状態に収束する コードを渡して実⾏ AWS CloudFormation の例 AWS CloudFormation IaC サービス YAML または JSON ファイル CloudFormation テンプレート BlockPublicAcls: true ... S3 Bucket リソース • S3 バケットがなかったら作成 • 状態が違っていたら更新 • 状態が同じなら何もしない etc. ⾃動で API を呼び出し ⾮公開の S3 バケットが1つ 存在すること
  13. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. IaC のメリット: ⾃動化とリソース管理の⼀貫性 I N F R A S T R U C T U R E A S C O D E 必要に応じて変更を 以前のバージョンに ロールバック ベストプラクティス の共有と適⽤ 信頼できる唯⼀の情報源 としてバージョン管理 リポジトリを使⽤
  14. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 新しい環境の作成コストを削減 I N F R A S T R U C T U R E A S C O D E Amazon API Gateway Amazon EventBridge Amazon DynamoDB Amazon SQS AWS Lambda AWS Lambda AWS Lambda Amazon S3 AWS Lambda Amazon SNS AWS Cloud エマ AWS CDK で 作っておいたよ
  15. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 新しい環境の作成コストを削減 I N F R A S T R U C T U R E A S C O D E Test Staging Production
  16. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 新しい環境の作成コストを削減 I N F R A S T R U C T U R E A S C O D E Test Staging Production Jake's sandbox account Emma's sandbox account David's sandbox account
  17. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS CDK で DevOps を始めよう Resiliency and security Source/artifact management Infrastructure as code Observability CI/CD Two Pizza Teams AWS Developer Tools ⽂化 Culture 実践 Practice ツール Tools AWS CDK で 実装できそう︕ cdk deploy ジェイク
  18. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Cloud Development Kit (AWS CDK) I N F R A S T R U C T U R E A S C O D E AWS CDK Meeting developers where they are Cloud Resources 使い慣れたプログラミング⾔語で クラウドリソースを定義できる オープンソースのフレームワーク 開発者体験を改善 • アプリと同じ⾔語で記述でき ドメイン固有⾔語の習得が不要 • プログラミング⾔語の表現⼒と IDE の機能を活⽤ • 静的解析とユニットテスト アプリ全体をコードで定義 • クラウドリソースだけでなく AWS Lambda 関数のコードや コンテナイメージなど アプリ全体をまとめて管理 • CI/CD パイプラインを⾃動構築 • 複数の AWS アカウントに またがる環境を管理 ⾼レベルの抽象化 • 複雑な設定を抽象化し コード量と学習コストを削減 • いつでも抽象化から抜け出して 個別の設定にアクセス可能 • ベストプラクティスに基づく デフォルト値と設定を提供 • チームの構成パターンや ガードレールを共有・再利⽤
  19. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS CDK でアプリ全体をコードで定義 A W S C D K の 哲 学 Shared services バージョン管理リポジトリ インフラストラクチャ アプリケーション コード Test Staging Production CDK App Emma's sandbox cdk deploy git push CI/CD パイプライン CI/CD
  20. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS CDK の概念 I N F R A S T R U C T U R E A S C O D E https://docs.aws.amazon.com/cdk/v2/guide/home.html • アプリケーション全体 • 複数のAWSアカウント、リージョンに またがることが可能 App • CloudFormation スタックに対応 • デプロイ可能な最⼩単位 Stack • CDKの最も基本的なビルディングブロック • 1つまたは複数のAWSリソースを表現 • ユーザーにより定義・配布が可能 Construct
  21. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Constructs Library AWS CDK が標準で提供する Construct のライブラリ Patterns (L3) • 複数のリソースを含む⼀般的な構成パターンを事前に定義したもの • aws-ecs-patterns.LoadBalancedFargateService など High-level constructs (L2) • デフォルト値や便利なメソッドを定義したAWSリソースを表すクラス • 例)クラス s3 は メソッド s3.Bucket.addLifeCycleRule() を持つ Low-level constructs (L1) • CloudFormationリソースおよびプロパティと1:1で対応(⾃動⽣成される) • CfnXXX という名前 (例︓s3.CfnBucket は AWS::S3::Bucket を意味) • すべてのプロパティを明⽰的に設定する必要がある I N F R A S T R U C T U R E A S C O D E 抽象化 レベル
  22. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. エスケープハッチ (代替⼿段) A) 使いたい機能が CloudFormation で利⽤できるが、L2コンストラクトがない場合 § CfnBucket や CfnRole など、Cfn で始まる L1 コンストラクトを使う § 対応する L1 コンストラクトがなければ、cdk.CfnResource を使う (CFnテンプレートとほぼ同等の記述) B) L2 コンストラクトの機能が⾜りない場合 § construct.node.defaultChild で L1 コンストラクトを取得し、プロパティを変更する C) 使いたい機能 がCloudFormation で利⽤できない場合 § カスタムリソースを作成する § AWS の API を呼び出すシンプルなカスタムリソースは AwsCustomResource コンストラクトを 使⽤することで、Lambda 関数のコードを記述することなく 簡単に作成可能 I N F R A S T R U C T U R E A S C O D E * https://docs.aws.amazon.com/cdk/v2/guide/cfn_layer.html
  23. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Assets でアプリケーションをデプロイ I N F R A S T R U C T U R E A S C O D E Amazon S3 - aws_s3_deployment モジュール new BucketDeployment(this, 'WebAppDeploy', { destinationBucket: s3Bucket!, distribution: cloudFrontWebDistribution, // invalidation sources: [ // Deploy a React frontend app Source.asset('webapp/dashboard/build'), ], }); TypeScript • ローカル zip ファイル • ローカルディレクトリ • テキスト / JSON データ (デプロイ時に挿⼊可能) AWS Lambda - aws_lambda モジュール new NodejsFunction(this, 'Handler', { entry: 'lambda/metrics-handler.ts', handler: 'get', }); TypeScript • ローカルのソースコードをバンドル • aws_lambda_nodejs モジュールの場合は esbuild で TypeScript をトランスパイル&バンドル Amazon ECS - aws_ecs モジュール const taskDefinition = new FargateTaskDefinition(this, 'Def', { cpu: 256, memoryLimitMiB: 512, }); taskDefinition.addContainer('Recorder', { image: ContainerImage.fromAsset('container/recorder'), }); TypeScript • ローカルの Dockerfile から コンテナイメージを作成し Amazon ECR リポジトリに push してデプロイ Amazon ECR
  24. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Lambda 関数を CDK で開発: aws_lambda_nodejs esbuild を使⽤して TypeScript または JavaScript コードを ⾃動でトランスパイルおよび バンドルしてデプロイする ⾼レベルコンストラクト • 依存ライブラリから必要なコードを 抽出するためバンドルサイズが ⼩さくなる (Tree shaking) • デフォルトでは CDK プロジェクトと 同じ依存パッケージを使⽤ • esbuild がローカルインストール※ されていなければ Docker でビルド ※ npm install --save-dev esbuild@0 https://docs.aws.amazon.com/cdk/api/v2/docs/aw s-cdk-lib.aws_lambda_nodejs-readme.html I N F R A S T R U C T U R E A S C O D E . ├── bin │ └── sns-handler.ts ├── lib │ └── sns-handler-stack.ts ├── lambda │ └── handler.ts └── package.json new NodejsFunction(this, 'Handler', { entry: 'lambda/metrics-handler.ts', handler: 'get', }); TypeScript import { Context, SNSEvent, SNSHandler } from 'aws-lambda'; export const publish: SNSHandler = async (event: SNSEvent, context: Context) => { console.log('Received event: ', JSON.stringify(event, null, 4)); }; TypeScript # CDK プロジェクトのルートディレクトリでインストール $ npm install --save aws-lambda @types/aws-lambda Console
  25. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. CDK Pipelines C I / C D 26 Source GitHub GitHub Build Synth AWS CodeBuild UpdatePipeline SelfMutate AWS CodeBuild Assets DockerAsset1 AWS CodeBuild DevStage BackendStack.Deploy AWS CloudFormation ソースコードを GitHub または AWS CodeCommit から取得 cdk synth でアプリを合成 パイプライン⾃体を 必要に応じて変更 Assets をデプロイ AWS CloudFormation で スタックをデプロイ • cdk synth を⼀度だけ実⾏して⼀貫性を担保 • CodeBuild での cdk deploy コマンドの代わりに CodePipeline の CloudFormation Deploy Action を使⽤ • CodeBuild を最⼩権限でセキュアに実⾏ • サードパーティライブラリや コンテナイメージビルド時の脆弱性の影響を縮⼩ • Self Mutation によりパイプラインを⾃動更新 • Assets と CloudFormation スタックを並列デプロイ • 複数の AWS アカウントとリージョンにデプロイ可能 * GitHub Actions などの他のエンジンを使⽤することも可能 (実験的) https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.pipelines-readme.html#using-a-different-deployment-engine AWS CodePipeline を使った CDK アプリの CI/CD パイプラインを 簡単にセットアップできるコンストラクトライブラリ
  26. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. CDK Pipelines でコマンドを追加できるポイント C I / C D 27 Source GitHub GitHub Build Synth AWS CodeBuild UpdatePipeline SelfMutate AWS CodeBuild Assets DockerAsset1 AWS CodeBuild DevStage BackendStack.Deploy AWS CloudFormation https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.pipelines-readme.html#using-an-existing-aws-codepipeline (例) cdk synth の前に npm run build をフロントエンドアプリのディレクトリで実⾏ (例) cdk synth の後に npm run test を実⾏ https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.pipelines-readme.html#synth-and-sources (例) Lambda 関数のバンドル時に pip install を実⾏ https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.BundlingOptions.html (例) Stage のデプロイ前に CodePipeline の⼿動承認ステップを追加 (例) Stage のデプロイ後に ShellStep でインテグレーションテストを実⾏ https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.pipelines.AddStageOpts.html 既存の CodePipeline を使⽤する Synth ステップ (ShellStep クラスの commands プロパティ) Assets のバンドル時 (Code.fromAsset 関数の bundling プロパティなど) Stage の前または後 (CodePipeline.addStage 関数の pre/post プロパティ)
  27. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 既存の CDK アプリを CDK Pipelines に移⾏する C I / C D 開発者 Amazon API Gateway AWS Lambda API Stack $ cdk deploy 開発者 AWS CodePipeline AWS CodeBuild Pipeline Stack $ cdk deploy Amazon API Gateway API Stack AWS Lambda CDK Pipelines では cdk deploy によってパイプラインのみをデプロイする GitHub $ git push 変更を通知 デプロイ cdk deploy によって⽬的のスタックをデプロイする Stage 各環境にデプロイするためにスタックを Stage にまとめる
  28. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS CDK でのスナップショットテスト • CloudFormation テンプレートの出⼒を⽐較して、意図しない変更がないことを確認 • 実環境へのアクセス不要。実装コストも低いので、採⽤しやすい⼿法 C I / C D 実⾏結果 テストコード スナップショット(Git にコミットする)
  29. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS CDK による AWS X-Ray の有効化 O B S E R V A B I L I T Y new RestApi(this, 'RestAPI', { deployOptions: { tracingEnabled: true, }, }); TypeScript new NodejsFunction(this, 'Handler', { entry: 'lambda/metrics-handler.ts', handler: 'get', tracing: Tracing.ACTIVE, }); TypeScript new StateMachine(this, 'MyStateMachine', { definition: Chain.start(new Pass(this, 'Pass')), tracingEnabled: true, }); TypeScript Amazon API Gateway AWS Lambda AWS Step Functions ※ Lambda 関数内からの AWS SDK 呼び出しなどのキャプチャは AWS X-Ray SDK を使⽤した設定が必要 個々のコンポーネントだけでなく ユーザー体験をベースにアプリ全体をモニタリング
  30. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 開発のアジリティを下げないセキュリティ • 発⾒的ガードレールを中⼼として、未然に防ぐより逸脱を検知することを重視 • CI/CD と AWS CDK による⾃動化とテンプレートの共有 R E S I L I E N C Y A N D S E C U R I T Y Production Emma's sandbox cdk deploy git push Pipeline バージョン管理 コードレビュー • ⼈による最後の検査 • セキュリティだけでなく ロールバック可能か アラームは適切かなども 確認 発⾒的ガードレール • アラートと⾃動修復 • AWS Security Hub • AWS Config • Amazon Inspector 予防的ガードレール • パイプラインにのみ 変更を許可 • AWS IAM • AWS WAF アカウント分離 • リスク評価に応じた 実験環境 (sandbox) AWS CDK 静的解析 (SAST) • GitHub Code Scanning • cdk-nag • Trivy • SonarQube 動的解析 (DAST) • OWASP Zap • Burp Suite • Nikto • Fiddler
  31. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Baseline Environment on AWS (BLEA) AWS のセキュリティベストプラクティスを実装した オープンソースのサンプルテンプレート 特徴 基本的なセキュリティを設定するテンプレートと ゲストシステムのサンプルテンプレートを提供 AWSのセキュリティベストプラクティスに準拠 AWS Cloud Development Kit (CDK) コード 参考となるスニペット、コメント、リファレンスを豊富に記載 チームによる⻑期的な利⽤を想定 CDK 標準ライブラリのみを使ったシンプルな実装 利⽤者が理解しやすいよう過度な作り込みを避ける R E S I L I E N C Y A N D S E C U R I T Y https://github.com/aws-samples/baseline-environment-on-aws ガバナンス ベース (基本的なセキュリティ) ゲストシステム サンプル AWS Account BLEA が提供するテンプレート CDK CDK
  32. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 静的解析の実装例 (cdk-nag) R E S I L I E N C Y A N D S E C U R I T Y CloudFormation: cfn-nag, cfn-guard など Terraform: Checkov, tfsec など 参考: AWS Cloud Development Kit と cdk-nag で アプリケーションのセキュリティとコンプライアンスを管理する 簡単かつ継続的に脆弱性を監視
  33. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Emma's sandbox コードの変更をすばやくクラウドに反映 cdk deploy --hotswap / cdk watch • Lambda 関数、ECS コンテナ、Step Functions ステートマシンなどを CloudFormation を経由せず API で直接デプロイすることで素早く反映 https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk/README.md#hotswap-deployments-for-faster-development • CloudFormation スタックとドリフトが発⽣するため、開発⽤途でのみ使⽤ • cdk watch 実⾏中はスタックに含まれる CloudWatch Logs の更新を⾃動的に受信 (tail) • ローカルマシンにエミュレーター等を導⼊しなくても、クラウドで直接開発できる D E V E L O P E R E X P E R I E N C E $ cdk watch --all 'watch' is observing directory 'lambda' for changes ... Detected change to 'lambda/handler.ts' (type: change). Triggering 'cdk deploy' ... ✨ Deployment time: 11.48s ... [/aws/lambda/SNSHandler-SNSHandler00XXXX] 17:06:32 2022- 08-17T08:06:32.634Z INFO Hello world! Console . ├── bin │ └── sns-handler.ts ├── lib │ └── sns-handler-stack.ts └── lambda └── handler.ts 変更を検知 ⾃動でデプロイ CloudWatch Logs の更新を受信 Lambda Function CloudWatch Logs
  34. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 壁を取り払う Infrastructure Operator Developer
  35. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. まとめ: AWS CDK から DevOps を始めよう ア プ リ ケ ー シ ョ ン 全 体 を コ ー ド で 定 義 Shared services バージョン管理リポジトリ インフラストラクチャ アプリケーション コード Test Staging Production CDK App Emma's sandbox cdk deploy git push CI/CD パイプライン CI/CD Infrastructure as Code テンプレートによる ガバナンス CDK Pipelines Assets Observability クラウドで直接開発
  36. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS CDK の哲学を知る Werner Vogels on the AWS Cloud Development Kit (AWS CDK) Amazon の CTO が CDK の 開発ストーリーを語る https://www.youtube.com/watch?v =AYYTrDaEwLs AWS Construct Library Design Guidelines CDK の Tenets (理念) を掲載 https://github.com/aws/aws- cdk/blob/main/docs/DESIGN_GUID ELINES.md#preface AWS CDK でクラウドアプリ ケーションを開発するための ベストプラクティス CDK の哲学を解説 https://aws.amazon.com/jp/blogs/n ews/best-practices-for-developing- cloud-applications-with-aws-cdk/
  37. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS CDK の実装⽅法を学ぶ Baseline Environment on AWS BLEA GitHub リポジトリ https://github.com/aws-samples/baseline-environment- on-aws/blob/main/README_ja.md AWS環境にセキュアなベースラインを提供するテンプレート 「Baseline Environment on AWS」のご紹介(解説ブログ) https://aws.amazon.com/jp/blogs/news/announcing- baseline-environment-on-aws/ AWS CDK で CI/CD つきの Web アプリを作ろう︕ 開発⾵景をLive Codingでお届けします - AWS Summit Japan 2022 Developer Zone https://www.youtube.com/watch?v=rcFqJWLwncU
  38. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS CDK へのコントリビューション • AWS CDK はオープンソースで、ユーザーからのコントリビュートを ⾮常に価値のあるものとして歓迎しています • AWS CDK のおよそ半分のコミットは外部のコントリビューターからのもの • コントリビュートの⽅法 § GitHub を参照 https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md § AWS re:Invent 2019: Contributing to the AWS Construct Library (OPN205-R1) YouTube https://www.youtube.com/watch?v=LsYlf7ggyrY 資料 https://d1.awsstatic.com/events/reinvent/2019/REPEAT_1_Contributing_to_the_AWS_Construct_Library_OPN205-R1.pdf § ⽇本のコントリビューターからの情報も公開されています
  39. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ご清聴ありがとうございました © 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved. Kenji Kono Twitter: @konokenj