AWSクラウド開発キット


少し前にAWSは開発者のプレビューをリリースCloud Development Kit ( CDK ).AWSインフラストラクチャの管理ツールです.JavaScriptで!JavaScriptは本当に世界を食べる推測:D


CDKはCloudFormation ( CF )への命令的な変更です.
CFはあなたのサービスを定義するためにJSONまたはYAMLを使用している間、CDKは現在、JavaScript、TypeScriptとJavaでこれを行うことができます.
NPM上で利用可能なバージョンは、typescriptで実装されています.

コンセプト
CDKは、インフラストラクチャを定義するために、Constructionという概念を使用します.コンストラクタには子コンストラクタがあります.
コンストラクタは低レベルのCFリソースか、AWS構築ライブラリのいずれかです.
The CloudFormation Resources AWS Constructionライブラリがまだ提供していない高度な構成のためのフォールバックとして使用されます.
The AWS Construct Libraries NPMパッケージはタイプスクリプトで書かれています.基本的にはあらかじめ設定されたCFリソースです.

なぜ
このアイデアは、システムの実装に既に使われているツールとの統合を強化しているようです.JavaScriptを既に知っている場合は、CFのカスタムYAML/JSON方言を学ぶ必要はありません.
また、CDKで使用されるリソースプロビジョニングの方法は、CF . AWSより少し高いレベルです.
それは、CFがどのように働くかを学ぶことから私たちを救うことはありません.

ハウ
この単純なダイナモの例を見てみましょう.
const { Stack, App } = require("@aws-cdk/cdk");
const dynamodb = require("@aws-cdk/aws-dynamodb");

class MyStack extends Stack {
  constructor(parent, name, props) {
    super(parent, name, props);

    const table = new dynamodb.Table(this, "Table", {
      tableName: "MyAppTable",
      readCapacity: 5,
      writeCapacity: 5
    });

    table.addPartitionKey("Alias", dynamodb.KeyAttributeType.String);
    table.addSortKey("Timestamp", dynamodb.KeyAttributeType.String);
  }
}

const app = new App(process.argv);

new MyStack(app, "MyStack");

process.stdout.write(app.run());
見ることができるように、CDKライブラリは他のすべてのノードパッケージのように含めることができます.
基本的な構造を定義するコアパッケージがあります.
  • The App Constructionは、アプリケーションのルートですStack sは直接の子供として、そして、他のあらゆる構成は子孫です.
  • The Stack コンストラクタは直接の子ですApp そして、子供としてすべての資源を持ちます.
  • Resourcesもパッケージであるので、私たちは単にそれらを含めることができます.
    エーStack はコンストラクタにリソースを定義しなければなりません.
    リソース定義は、リソースクラスからオブジェクトを作成することによって行われます.
    The dynamodb パッケージはTable クラスを参照するMyStack , エーname そして、DynamoDBユーザに慣れているはずです.
    The Table オブジェクトのようです.Stack and App , オプションの設定を追加するメソッドもあります.
    アフターStack が定義されている場合、App コンストラクションStack を作成します.…の目的App また、parentStack オブジェクト.
    最後にApp Constructionは、定義されたインフラストラクチャを作成するために実行できます.

    結論
    AWSクラウド開発キットはJavaScriptとTypesScriptを使用してインフラストラクチャを作成する新しい方法をもたらします.
    私は、それがAWSツールの景色に良い追加だと思います.
    それは私があまりにも多くのことを尋ねるべきではないので、開発中ですが、私にとっては、C .全体がthis , クラスを拡張し、コンストラクタをオーバーライドするだけで不気味で非慣用的な感じです.入れ子になった関数は、状態のないコンポーネントのように、おそらくよりきれいなアイデアでした.
    とにかく、それを試してみて、コメントで何を考えて私に教えてください!