AWS Proton コンポーネント - AWS Proton

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

AWS Proton コンポーネント

コンポーネントは AWS Proton リソースの一種です。コンポーネントはサービステンプレートに柔軟性を加えます。コンポーネントによって、プラットフォームチームは、コアインフラストラクチャパターンを拡張し、開発者がアプリケーションインフラストラクチャのさまざまな側面を管理するための保護手段を定義するメカニズムを利用できます。

の AWS Proton 管理者は、開発チームやアプリケーションで使用される標準インフラストラクチャを定義します。ただし、特定のユースケースに応じて、開発チームには、Amazon Simple Queue Service (Amazon SQS) キューや Amazon DynamoDB テーブルなど、追加リソースが必要になる場合があります。これらのアプリケーション固有のリソースは、特にアプリケーション開発の初期段階で頻繁に変更される可能性があります。管理者がオーサリングしたテンプレートで、このような頻繁な変化に対応するのは、管理や拡張の面で困難な場合があります。その場合、現実的な付加価値という成果は得られず、管理者には、さらに多くのテンプレートの管理が求められます。もう 1 つの方法として、アプリケーションデベロッパーがアプリケーション用にテンプレートを作成することは、 AWS Fargate タスクなどの主要なアーキテクチャコンポーネントを標準化する管理者の能力を奪うため、理想的ではありません。そこで登場するのがコンポーネントです。

コンポーネントを利用すると、開発者は管理者が環境やサービステンプレートに定義したリソースをはるかに越えて、自分達が開発するアプリケーションを補うリソースを追加できます。次に、開発者はコンポーネントをサービスインスタンスにアタッチします。 は、環境とサービスインスタンスのリソースを AWS Proton プロビジョニングするのと同様に、コンポーネントによって定義されたインフラストラクチャリソースをプロビジョニングします。

コンポーネントはサービスインスタンスの入力を読み取り、サービスインスタンスに出力を提供し、完全に統合されたエクスペリエンスが実現されます。例えば、サービスインスタンスが使用するための Amazon Simple Storage Service (Amazon S3) バケットがコンポーネントによって追加されると、バケット命名の際に、コンポーネントテンプレートは環境名とサービスインスタンス名を考慮することができます。がサービステンプレートを AWS Proton レンダリングしてサービスインスタンスをプロビジョニングすると、サービスインスタンスはバケットを参照して使用できます。

AWS Proton 現在 がサポートしているコンポーネントは、直接定義されたコンポーネントです。コンポーネントのインフラストラクチャを定義する Infrastructure as Code (IaC) ファイルを AWS Proton API またはコンソールに直接渡します。これは、テンプレートバンドルで IaC を定義し、そのバンドルをテンプレートリソースとして登録し、テンプレートリソースを使用して環境またはサービスを作成する環境やサービスの場合とは異なります。

注記

直接定義されたコンポーネントを使用すると、開発者は追加のインフラストラクチャを定義し、それをプロビジョニングできます。 は、同じ AWS Identity and Access Management (IAM) ロールを使用して、同じ環境で実行されている直接定義されたすべてのコンポーネントを AWS Proton プロビジョニングします。

管理者は、開発者がコンポーネントでできる作業を次の 2 通りの方法で制御できます。

  • サポートされているコンポーネントソース – 管理者は、サービステンプレートバージョンのプロパティに基づいて、 AWS Proton サービスインスタンスへのコンポーネントのアタッチを許可できます。デフォルトでは、開発者はサービスインスタンスにコンポーネントをアタッチできません。

    このプロパティの詳細については、『AWS Proton API リファレンス』の CreateServiceTemplateVersion API アクションの supportedComponentSources パラメータを参照してください。

    注記

    テンプレート同期を使用すると、 はリポジトリ内のサービステンプレートバンドルに変更をコミットするときに、暗黙的にサービステンプレートバージョン AWS Proton を作成します。その場合、サポートされているコンポーネントソースをサービステンプレートバージョンの作成時に指定する代わりに、各サービステンプレートメジャーバージョンに関連付けられたファイルにこのプロパティを指定してください。詳細については、「サービステンプレートを同期する」を参照してください。

  • コンポーネントロール – 管理者は、コンポーネントロールを環境に割り当てることができます。 は、環境内で直接定義されたコンポーネントによって定義されたインフラストラクチャをプロビジョニングするときに、このロール AWS Proton を引き受けます。したがって、環境内で直接定義のコンポーネントを開発者が使用して追加できるインフラストラクチャの範囲は、このコンポーネントロールによって絞り込まれます。コンポーネントロールがないと、開発者は直接定義のコンポーネントを環境内に作成できません。

    コンポーネントロールの割り当ての詳細については、『AWS Proton API リファレンス』の CreateEnvironment API アクションの componentRoleArn パラメータを参照してください。

    注記

    コンポーネントロールは セルフマネージド型のプロビジョニング 環境では使用されません。

コンポーネントは他の AWS Proton リソースとどのように比較されますか?

多くの点で、コンポーネントは他の AWS Proton リソースと似ています。インフラストラクチャは、YAML AWS CloudFormation または Terraform HCL 形式で作成された IaC テンプレートファイルで定義されます。 は、 AWSマネージドプロビジョニングまたはセルフマネージドプロビジョニングを使用してコンポーネントインフラストラクチャをプロビジョニング AWS Proton できます。

ただし、コンポーネントはいくつかの点で他の AWS Proton リソースとは異なります。

  • デタッチ状態 — コンポーネントは、サービスインスタンスにアタッチしてそのインフラストラクチャを拡張するように設計されていますが、どのサービスインスタンスにもアタッチされていないデタッチ状態も可能です。コンポーネントのステータスの詳細については、「コンポーネントの状態」を参照してください。

  • スキーマなし — コンポーネントには、テンプレートバンドルにあるような関連スキーマはありません。コンポーネント入力はサービスによって定義されます。コンポーネントは、サービスインスタンスにアタッチされると入力を消費できます。

  • カスタマー管理のコンポーネントはありません。 AWS Proton 常にコンポーネントインフラストラクチャをプロビジョニングします。コンポーネントにはあなた自身のリソースを持ち込むバージョンはありません。お客様による管理環境の詳細については、「環境を作成する」を参照してください。

  • テンプレートリソースなし — 直接定義のコンポーネントには、環境やサービステンプレートと同様、関連テンプレートリソースはありません。IaC テンプレートファイルは、あなたがコンポーネントに直接提供します。同様に、コンポーネントのインフラストラクチャをプロビジョニングするためのテンプレート言語とレンダリングエンジンを定義するマニフェストはあなたが直接提供します。テンプレートファイルとマニフェストは、テンプレートバンドルのオーサリングと同様の方法であなたがオーサリングします。ただし、コンポーネントが直接定義されている場合、IaC ファイルを特定の場所にバンドルとして保存する必要はありません。また、IaC ファイル AWS Proton から にテンプレートリソースを作成する必要はありません。

  • CodeBuild ベースのプロビジョニングなしCodeBuild ベースのプロビジョニングと呼ばれるあなた自身のカスタムプロビジョニングスクリプトで、あなたが直接定義のコンポーネントをプロビジョニングすることはできません。詳細については、「CodeBuild プロビジョニングの働き」を参照してください。

AWS Proton コンソールのコンポーネント

AWS Proton コンソールを使用して、 AWS Proton コンポーネントを作成、更新、表示、使用します。

次のコンソールページはコンポーネントに関連があります。ここには、トップレベルのコンソールページまでの直接リンクがあります。

  • コンポーネント – AWS アカウントのコンポーネントのリストを表示します。新しいコンポーネントの作成や、既存のコンポーネントの更新、または削除ができます。コンポーネントの詳細ページを表示するには、コンポーネント名を選択します。

    [環境の詳細] ページと [サービスインスタンスの詳細] ページにも同様のリストがあります。これらのリストには、現在表示されているリソースに関連するコンポーネントのみが表示されます。これらのリストからコンポーネントを作成すると、 はコンポーネントの作成ページで関連する環境を AWS Proton 事前に選択します。

  • コンポーネントの詳細 — コンポーネントの詳細ページを表示するには、[コンポーネント] リストでコンポーネント名を選択します。

    詳細ページで、コンポーネントの詳細とステータスを表示し、コンポーネントを更新するか、削除します。出力 (プロビジョニングされたリソース ARNs など)、プロビジョニングされた AWS CloudFormation スタック、割り当てられたタグのリストを表示および管理します。

  • コンポーネントを作成 — コンポーネントを作成します。コンポーネント名と説明を入力し、関連するリソースを選択し、コンポーネントソース IaC ファイルを指定して、タグを割り当てます。

  • コンポーネントの更新 — コンポーネントを更新するには、[コンポーネント] リストでそのコンポーネントを選択し、[アクション] メニューで [コンポーネントの更新] を選択します。または、[コンポーネント詳細] ページで [更新] を選択します。

    あなたはリージョンを更新できません。あなたはリージョンは更新できません。また、更新が成功した後にコンポーネントを再デプロイするかどうかはあなたが選択できます。

  • 環境設定 — 環境の作成時や更新時には、コンポーネントロールを指定できます。このロールは、環境内で直接定義のコンポーネントを実行する機能を制御します。またそれらの機能をプロビジョニングするための権限がこのロールで与えられます。

  • 新しいサービステンプレートバージョンの作成 — サービステンプレートバージョンの作成時に、そのテンプレートバージョンの「サポート対象のコンポーネントソース」を指定できます。これにより、サービスのサービスインスタンスにコンポーネントをアタッチする機能が、このテンプレートバージョンに基づいて制御されます。

AWS Proton API および のコンポーネント AWS CLI

AWS Proton API または AWS CLI を使用して、 AWS Proton コンポーネントを作成、更新、表示、使用します。

次の API アクションは、 AWS Proton コンポーネントリソースを直接管理します。

  • CreateComponent — AWS Proton コンポーネントを作成します。

  • DeleteComponent — AWS Proton コンポーネントを削除します。

  • GetComponent — コンポーネントの詳細データを取得します。

  • ListComponentOutputs — コンポーネントの一覧 Infrastructure as Code (IaC) 出力を取得します。

  • ListComponentProvisionedResources — コンポーネントにプロビジョニングされたリソースを詳細とともに一覧表示します。

  • ListComponents — コンポーネントをサマリーデータと共に一覧表示します。結果リストは、環境やサービスごとに、または 1 つのサービスインスタンスでフィルタリングできます。

他の AWS Proton リソースの次の API アクションには、コンポーネントに関連するいくつかの機能があります。

  • CreateEnvironmentUpdateEnvironment – この環境で直接定義されたコンポーネントをプロビジョニングするときに が AWS Proton 使用する IAM サービスロールの Amazon リソースネーム (ARN) componentRoleArnを指定します。直接定義のコンポーネントでプロビジョニングできるインフラストラクチャの範囲がこれで決定します。

  • CreateServiceTemplateVersion — サポートされるコンポーネントソースは、supportedComponentSources で指定します。サポートされるソースがあるコンポーネントは、このサービステンプレートバージョンに基づいてサービスインスタンスにアタッチできます。

コンポーネントに関するよくある質問

コンポーネントのライフサイクルはどのようになっていますか?

コンポーネントはアタッチされた状態でもデタッチされた状態でもかまいません。コンポーネントは、ほとんどの時間、サービスインスタンスにアタッチしてインフラストラクチャを強化する設計になっています。切り離されたコンポーネントは移行状態なので、制御された安全な方法で、コンポーネントの削除や、別のサービスインスタンスへのアタッチができます。詳細については、「コンポーネントの状態」を参照してください。

アタッチしたコンポーネントを削除できないのはなぜですか?

解決策:アタッチされているコンポーネントを削除するには、コンポーネントを更新してサービスインスタンスから切り離し、サービスインスタンスの安定性を確認してから、コンポーネントを削除します。

なぜこれが必要なのですか? アタッチされたコンポーネントは、あなたのアプリケーションがランタイム機能を実行するのに必要な追加のインフラストラクチャを提供します。サービスインスタンスがコンポーネント出力を使用して、このインフラストラクチャのリソースを検出して使用している可能性があります。コンポーネントを削除して、そのインフラストラクチャリソースを削除すると、アタッチされているサービスインスタンスに影響が及ぶおそれがあります。

追加の安全対策として、 AWS Proton では、コンポーネントを削除する前に、コンポーネントを更新してサービスインスタンスからデタッチする必要があります。その後、あなたのサービスインスタンスを検証すれば、引き続き適切にデプロイされて機能することを確認できます。問題が見つかった場合は、すぐにコンポーネントをサービスインスタンスに再アタッチすれば、問題の修正に取り組むことができます。あなたのサービスインスタンスがコンポーネントに依存していないことが確認できたら、コンポーネントを安全に削除できます。

コンポーネントにアタッチされているサービスインスタンスを直接変更できないのはなぜですか?

解決策:アタッチメントを変更するには、コンポーネントを更新してサービスインスタンスからデタッチし、コンポーネントとサービスインスタンスの安定性を確認してから、コンポーネントを新しいサービスインスタンスにアタッチします。

なぜこれが必要なのですか? コンポーネントはサービスインスタンスにアタッチされる設計になっています。インフラストラクチャリソースの命名と設定にサービスインスタンス入力が、あなたのコンポーネントによって使用される場合があります。アタッチされているサービスインスタンスを変更すると、コンポーネントが破壊されるおそれがあります (前の FAQ「アタッチしたコンポーネントを削除できないのはなぜですか?」で説明したように、サービスインスタンスの破壊と併せて)。アタッチされた状態では、たとえば、コンポーネントの IaC テンプレートで定義されているリソースの名前が変更され、場合によっては置き換えられるおそれがあります。

追加の安全対策として、 AWS Proton では、別のサービスインスタンスにアタッチする前に、コンポーネントを更新し、そのサービスインスタンスからデタッチする必要があります。そのため、コンポーネントを新しいサービスインスタンスにアタッチする前に、コンポーネントとサービスインスタンスの両方の安定性を検証できます。