Amazon Web Services ブログ

CloudFormation 最新情報 – CLI + サードパーティのリソースサポート + レジストリ

CloudFormation は 2011 年に開始され (AWS CloudFormation – Create Your AWS Stack From a Recipe)、多くの AWS のお客様にとって不可欠なツールになりました。お客様は、テンプレート を一度定義すると、それを使用して AWS リソースを確実にプロビジョニングできるという事実を気に入っています。また、変更セットも頻繁に使用し、変更セットの実行時に行われるアクション (追加、変更、削除) に対する洞察を得るために利用しています。

過去に書いたように、CloudFormation では、一貫性があり、安定していて、均一なモデルを実装するために特別な注意を払っています。これは CloudFormation の重要でありながら見過ごされがちな要素ですが、お客様から高く評価されていると言われています。

それでは、お客様から最も頻繁にある要求のいくつかを見てみましょう。

パフォーマンス – 過去 1 年間、CloudFormation スタックで実行されるオペレーションの数は四半期ごとに 30% 増加しました! 開発チームは、アーキテクチャの改善と低レベルの最適化の組み合わせによって、勢いよく使用量が増えても CloudFormation をより速く、より効率的にするために絶え間なく取り組んできました。過去 2~3 か月間、この作業により、CloudFormation に関連する多くのソフトおよびハードの限界が引き上げられ、作成および更新オペレーションの平均および最大レイテンシーが大幅に低減されました。

カバレッジ – 新しいサービスや新機能を非常に迅速にリリースしていますが、時には CloudFormation がサポートされていない場合もあります。私たちの目標は、可能な限り迅速に新しいサービスと新しい機能をサポートすることであり、私たちは進歩を遂げていると確信しています。また、新しい CloudFormation Coverage Roadmap を開発プロセスへの主要な情報源として使用しており、すでに 43 の問題に対処しています。

拡張性 – CloudFormation を広範囲に使用しているお客様は、AWS 以外のリソースの作成の自動化を希望しているとおっしゃっています。これには、自社の開発チームや、SaaS アプリケーションのサードパーティサプライヤ、監視ツールなどによって作成されたリソースが含まれます。お客様はすでにカスタムリソースをうまく活用していますが、常により多くのコントロールとパワー、それらを管理する簡単な方法を望んでいます。

CloudFormation レジストリおよび CloudFormation CLI
本日、オープンソースプロジェクトとして CloudFormation CLI を開始することで、より多くのカバレッジとより良い拡張性という要求に対応いたします。

このキットを使用して、安全かつ体系的な方法でリソースの作成を自動化するリソースプロバイダーを定義および作成することができます。スキーマを作成し、5 つのコアオペレーションのハンドラーを定義し、ローカルでテストしてから、AWS アカウントに関連付けられている新しいプロバイダーレジストリにプロバイダーを公開します。

また、一部の選ばれたサードパーティベンダーと協力して、SaaS アプリケーションや監視ツールなどのリソースプロバイダーの作成を支援しています。関心のあるベンダーからプロバイダーを取得し、プロバイダーレジストリに追加できます。

最後に、AWS リソースプロバイダーのセットをオープンソース形式で利用できるようにします。これらを使用して、堅牢なプロバイダーの作成方法を学んだり、必要に応じて (独自の名前空間で) 拡張したりできます。

では、中を見ていきましょう!

CloudFormation CLI
このツールセットは、詳細なドキュメントやサンプルコードなど、独自のリソースプロバイダーを構築するために必要なすべてを提供します。cfn (CloudFormation Command Line Interface) コマンドは、プロジェクトの初期化、スケルトンコードの生成、プロバイダーのテスト、および CloudFormation への登録に役立ちます。

主な手順は、以下のとおりです。

モデル – リソースの正規の説明として機能するスキーマを作成および検証します。

開発 – リソースで 5 つのコアオペレーション (作成、読み取り、更新、削除、およびリスト) を定義するハンドラー (Java および Go、その他の言語を使用) を記述し、ローカルでテストします。

登録 – プロバイダーを CloudFormation に登録して、CloudFormation テンプレートで使用できるようにします。

リソースのモデリング
リソースのスキーマは、リソースプロバイダー定義スキーマに準拠する必要があります。リソース、そのプロパティ、およびその属性を定義します。プロパティは、読み取り専用、書き込み専用、および作成専用として定義できます。これにより、CloudFormation は、スタックでオペレーションを実行しているときに既存のリソースを変更できるようにするために必要な情報を提供します。以下に簡単な定義を示します。

{
  "additionalProperties": false,
  "createOnlyProperties": [
    "/properties/Name"
  ],
  "primaryIdentifier": [
    "/properties/Name"
  ],
  "properties": {
    "Name": {
      "description": "設定セットの名前。",
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9_-]{0,64}$",
      "type": "string"
    }
  },
  "typeName": "AWS::SES::ConfigurationSet",
  "description": "サンプルリソース"
}

開発
ハンドラーは、エラー処理、ダウンストリーム API への呼び出しのスロットリング、認証情報管理などを処理するフレームワークを利用します。CloudFormation CLI には完全なサンプルコードが含まれています。Amazon SES リソースプロバイダー (または他のリソースプロバイダー) を調べて詳細を確認することもできます。

詳細については、CloudFormation CLI ドキュメントのウォークスルー: リソースプロバイダーの開発を参照してください。

登録
リソースプロバイダーを開発してローカルでテストした後、それを CloudFormation に伝える必要があります。CloudFormation CLI を使用して、パッケージ (スキーマおよびコンパイル済みハンドラー) を目的の AWS リージョンに送信します。受け入れプロセスは非同期です。プロセスが完了すると、CloudFormation テンプレートで新しいリソースタイプを使用できます。

Cloudformation レジストリ
CloudFormation レジストリは、リソースプロバイダーにアカウントごと、リージョンごとのストレージを提供します。CloudFormation コンソールからアクセスできます。

[Public] を選択すると、ネイティブ AWS リソース (AWS::*::*) が表示されます。[Private] を選択すると、作成したリソース、およびサードパーティから取得したリソースが表示されます。

また、RegisterTypeDeregisterTypeListTypesListTypeRegistrationsListTypeVersionsDescribeType 関数を使用して、プログラムでレジストリにアクセスすることもできます。

サードパーティのサポート
前述したように、一部のサードパーティベンダーは、本日の開始に先立ってリソースプロバイダーの作成に取り組んできました。最初のリストは以下のとおりです。

  • Atlassian
  • Datadog
  • Densify
  • Dynatrace
  • Fortinet
  • New Relic
  • Spotinst

ベンダーからプロバイダーを登録すると、CloudFormation テンプレートで対応するリソースタイプを参照できるようになります。たとえば、Datadog::Monitors::Monitor を使用して、Datadog モニターを作成できます。

サードパーティベンダーであり、製品のリソースプロバイダーの作成に関心がある場合は、cfn-registry-onboarding@amazon.com までメールでご連絡ください。

今すぐ利用可能です
CloudFormation CLI を使用して、すべてのパブリック AWS リージョンで使用するリソースプロバイダーを構築できます。

Jeff