AWS CloudFormation レジストリの使用 - AWS CloudFormation

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

AWS CloudFormation レジストリの使用

CloudFormation レジストリには、CloudFormation アカウントで使用できるプライベートとパブリック (AWS) の両方の拡張機能が一覧表示されます。拡張機能は、CloudFormation レジストリに登録されたアーティファクトであり、CloudFormation の機能をネイティブに拡張します。拡張機能は、Amazon、APN パートナー、マーケットプレイスの出品者、デベロッパーコミュニティによって作成できます。拡張機能には、リソースタイプやモジュールなどの CloudFormation 項目が含まれます。

プライベート拡張とパブリック拡張

プライベート拡張機能は、AWS アカウントで使用するために明示的に登録した拡張機能です。これらは、自分で作成した拡張機能だけでなく、共有されている拡張機能です。リソース管理のオープンソースツールである CloudFormation CLI を使用して、プライベート拡張機能を作成できます。詳細については、CloudFormation コマンドラインインターフェイスのユーザーガイドを参照してください。

注記

CloudFormation スタックで特定の種類の拡張機能であるプライベートリソースタイプを使用すると、アカウントに課金が発生します。これは、プライベートリソースタイプが、リソースの作成、読み取り、更新、一覧表示、および削除のオペレーション中に実行されるカスタムロジックを実装するからです。これは、作成されたリソースに対して発生した料金に追加されます。詳細については、「AWS CloudFormation の料金」を参照してください。

パブリック拡張機能は、特定の AWS のサービスのリソースを管理するために AWS によって提供される拡張機能です。

CloudFormation での拡張機能の登録

プライベート拡張機能 (自分で開発する拡張機能、または自分と共有するタイプ) を使用するには、まずそれらを使用するアカウントとリージョンで、CloudFormation に登録する必要があります。リソース拡張機能を登録すると、そのアカウントとリージョンの CloudFormation レジストリに表示され、スタックテンプレートで使用できます。

拡張機能は、AWS CLI の register-type コマンドを使用するか、CloudFormation CLI の submit コマンドを使用して登録できます。CloudFormation CLI を使用して拡張機能を登録する方法については、『 CloudFormation CLI ユーザーガイド』 の「拡張機能の登録 」を参照してください。

リソースタイプを登録するための IAM アクセス許可

リソースタイプの登録の一環として、スキーマハンドラパッケージを含む S3 バケットを指定します。このパッケージには、登録するリソースタイプのスキーマ、イベントハンドラー、関連ファイルが含まれます。リソースタイプを登録するユーザーは、その S3 バケット内のスキーマハンドラーパッケージにアクセスできる必要があります。つまり、ユーザーは、スキーマハンドラパッケージに対する GetObject アクセス許可を持っている必要があります。

これは、AWS CLI の register-type コマンドを使用している場合でも、CloudFormation CLI の submit コマンドを使用している場合でも当てはまります。

詳細については、AWS Identity and Access Management ユーザーガイドの「Amazon S3 のアクション、リソース、および条件キー」を参照してください。

AWS CLI を使用してリソースタイプを登録するには

  1. アカウントに登録するリソースプロバイダーのリソースタイプパッケージを含む S3 バケットを見つけます。

  2. register-type コマンドを使用して、リソースプロバイダーをアカウントに登録します。

    RegisterType は非同期アクションであり、登録リクエストの進行状況を追跡するために使用できる登録トークンを返します。

    注記

    リソースタイプがいずれかのハンドラーで AWS API を呼び出す場合は、これらの AWS API を呼び出すために必要なアクセス許可を含む IAM 実行ロールを作成し、アカウントにその実行ロールをプロビジョニングする必要があります。その後、--execution-role-arn パラメータを使用してこの実行ロールを指定できます。CloudFormation は、その実行ロールを引き受け、リソースタイプに適切な認証情報を提供します。

    たとえば、次のコマンドは、現在の AWS アカウントに My::Resource::Example リソースタイプを登録します。

    aws cloudformation register-type --type-name My::Resource::Example --schema-handler-package [s3 object path] --type RESOURCE { "RegistrationToken": "f5525280-104e-4d35-bef5-8f1fexample" }
  3. オプション: 登録トークンを describe-type-registration コマンドとともに使用して、登録リクエストの進行状況を追跡します。

    CloudFormation が登録リクエストを完了すると、リクエストの進捗ステータスが COMPLETE に設定されます。

    次の例では、上記の RegisterType コマンドによって返された登録トークンを使用して、登録ステータス情報を返します。

    aws cloudformation describe-type-registration --registration-token f5525280-104e-4d35-bef5-8f1fexample { "ProgressStatus": "COMPLETE", "TypeArn": "arn:aws:cloudformation:us-east-1:012345678910:type/resource/My-Resource-Example", "Description": "Deployment is currently in DEPLOY_STAGE of status COMPLETED; ", "TypeVersionArn": "arn:aws:cloudformation:us-east-1:012345678910:type/resource/My-Resource-Example/00000001" }

使用する拡張機能のバージョンを指定する

時間が経つと、同じ拡張機能の複数のバージョンを登録している可能性があります。CloudFormation オペレーションに使用する拡張機能のバージョンを指定できます。

AWS CLI を使用して使用する拡張機能のバージョンを指定するには

  • set-type-default-version コマンドを使用して、アカウントの CloudFormation オペレーションに使用する拡張機能のバージョンを指定します。

    たとえば、次のコマンドは、現在のアカウントの My::Resource::Example リソースタイプのデフォルトバージョンを 00000003 に設定します。

    aws cloudformation set-type-default-version --type RESOURCE --type-name My::Resource::Example --version-id 00000003

CloudFormation に登録されている拡張機能の表示

アカウントに拡張機能を登録すると、CloudFormation コンソールでその拡張機能の詳細を表示できます。拡張機能は、CloudFormation レジストリの [Private] セクションに表示されます。

CloudFormation コンソールに登録済みの拡張機能を表示するには

  1. AWS CloudFormation コンソールにある [CloudFormation] ナビゲーションペインの [CloudFormation レジストリ] で、拡張機能を選択します。たとえば、[Resource types] または [Modules] を選択します。

  2. [Public] または [Private] を選択します。

AWS Config でリソースタイプを記録する

AWS Config がプライベートリソースタイプを自動的に追跡し、それらのリソースに対する変更を設定項目として記録するように指定できます。これにより、これらのプライベートリソースタイプの設定履歴を表示したり、設定のベストプラクティスを検証するための Config ルールを記述したりできます。

AWS Config でプライベートリソースタイプを自動的に追跡するには:

  • CloudFormation を使用してリソースを管理します。これには、CloudFormation によるすべてのリソースの作成、更新、削除操作の実行が含まれます。

    注記

    IAM ロールを使用してスタックの操作を実行する場合、その IAM ロールには次の AWS Config アクションを呼び出すアクセス許可が必要です。

  • すべてのリソースタイプを記録するように AWS Config を設定します。詳細については、AWS Config 開発者ガイドの「サードパーティのリソースの記録設定」を参照してください。

    注記

    Config は、必須書き込み専用の両方として定義されたプロパティを含むプライベートリソースの記録をサポートしていません。

    設計上、書き込み専用として定義されたリソースプロパティは、Config 設定項目の作成に使用されるスキーマでは返されません。このため、書き込み専用と必須の両方として定義されたプロパティを含めると、必須プロパティが存在しないため、設定項目の作成が失敗します。設定項目の作成に使用されるスキーマを表示するには、 DescribeType アクションの schema プロパティを確認します。

設定項目の詳細については、AWS Config 開発者ガイドの「設定項目」を参照してください。

設定項目に機密のプロパティが記録されないようにする

リソースタイプには、パスワード、シークレット、その他の機密データなど、設定項目の一部として記録したくない、機密情報とみなされるプロパティが含まれている場合があります。プロパティが設定項目に記録されないようにするには、そのプロパティをリソースタイプスキーマの writeOnlyproperties 一覧に含めます。ユーザーは writeOnlyproperties としてリストされているリソースプロパティを指定できますが、read または list リクエストでは返されなくなります。

詳細については、CloudFormation コマンドラインインターフェイスユーザーガイドの「リソースプロバイダスキーマ」を参照してください。