CloudFormation でのパブリック拡張機能の使用
パブリック拡張機能は、CloudFormation レジストリを通じてテンプレートで使用できる CloudFormation 拡張機能 (リソースタイプなど) です。パブリック拡張機能は、Amazon だけでなく、サードパーティー公開元によって CloudFormation レジストリで公開されることがあります。
プライベート拡張機能と同様に、サードパーティーの公開元からのパブリック拡張機能は、リソースの作成、読み取り、更新、リスト作成、および削除のスタックオペレーション中に実行されるイベントハンドラを実装している場合があります。このため、CloudFormation スタックでこれらの拡張機能を使用すると、アカウントに料金が発生する可能性があります。これは、作成されたリソースに対して発生した料金に追加されます。詳細については、「AWS CloudFormation の料金
パブリック拡張機能は、リソースタイプやモジュールなどの CloudFormation 拡張機能で、すべての CloudFormation ユーザーが使用するためにレジストリでパブリックに公開されます。これには、Amazon が公開するすべての拡張機能が含まれます。サードパーティーがパブリック拡張機能を公開することもできます。
パブリック拡張機能には、次の 2 種類があります。
Amazon パブリック拡張機能
Amazon が公開する拡張機能は常に公開されており、デフォルトでアクティブ化されているため、アカウントで使用する前にアクションを実行する必要はありません。さらに、Amazon が拡張機能のバージョニングを管理しているため、常に最新のバージョンを使用しています。
サードパーティーのパブリック拡張機能
これらは、Amazon 以外の公開元が一般的に利用できる拡張機能です。パブリック拡張機能を使用するには、まずアカウントとリージョンで有効化する必要があります。
独自のサードパーティー拡張機能を公開して、一般的な CloudFormation ユーザーが使用できるようにすることができます。詳細については、CloudFormation Command Line Interface ユーザーガイドの Publishing extensions を参照してください。
アカウントで使用するためのパブリック拡張機能のアクティブ化
テンプレートでパブリックサードパーティー拡張機能を使用するには、まず、それを使用するアカウントとリージョンの拡張機能をアクティブ化する必要があります。拡張機能を有効にすると、その拡張機能がアクティブ化されたアカウントおよびリージョンでのスタックオペレーションで使用できるようになります。パブリックサードパーティー拡張機能をアクティブ化すると、CloudFormation は、アクティブ化された拡張機能のアカウントの拡張機能レジストリにプライベート拡張機能としてエントリを作成します。これにより、アカウント内でアクティブ化された拡張機能を次の方法でカスタマイズできます。
-
パブリックサードパーティーの拡張機能の名前の代わりに使用するエイリアスを指定します。これにより、サードパーティーの拡張機能の間の名前の衝突を回避できます。
-
新しいマイナーバージョンまたはパッチバージョンが使用可能になったときに、拡張機能を自動的に更新するかどうかを指定します。
CloudFormation が拡張機能のアクティブ化に使用する実行ロールを指定し、拡張機能のログ記録を設定します。
パブリックサードパーティー拡張機能をアクティブ化すると、拡張機能に含まれる設定プロパティも設定できます。設定プロパティは、特定のアカウントとリージョン用に拡張機能の設定方法を定義します。詳細については、Configuring extensions at the account level を参照してください。
新しいバージョンの拡張機能が自動的に使用されるようにするための CloudFormation の設定
拡張機能をアクティブ化するときに、拡張機能の公開元によって新しいマイナーバージョンがリリースされるたびに CloudFormation がそのバージョンを使用するように自動的に更新するかどうかを指定することもできます。例えば、拡張機能の自動更新を指定し、公開元が拡張機能をアクティブにした後に新しいマイナーバージョンをリリースするとします。次にスタックの作成や更新などのスタックオペレーションを実行するときに、その拡張機能を含むテンプレートを使用して、CloudFormation は新しいマイナーバージョンを使用します。
自動または手動で新しい拡張機能のバージョンに更新しても、既にスタックにプロビジョンされている拡張機能インスタンスには影響しません。
これは、マイナーバージョンの更新にのみ適用されます。CloudFormation は、拡張機能のメジャーバージョンの更新を重大な変更を含む可能性があるものとして扱うため、拡張機能の新しいメジャーバージョンに手動で更新する必要があります。
Amazon が公開するパブリック拡張機能は、利用可能なすべてのアカウントとリージョンでデフォルトでアクティブ化され、常に各リージョンで利用可能な最新バージョンを使用します。
アクティブ化されたパブリック拡張機能が最新バージョンに更新されるかどうか、およびいつ更新されるかを制御できるため、同じ拡張機能の異なるバージョンが異なるアカウントやリージョンにデプロイされる可能性があることに注意してください。これにより、その拡張機能を含む同じテンプレートをこれらのアカウントおよびリージョン全体で使用すると、予期しない結果につながる可能性があります。
拡張機能を参照するエイリアスの指定
特定のアカウントおよびリージョンで、特定の名前で複数の拡張機能をアクティブ化することはできません。異なる公開元が同じ拡張機能名でパブリック拡張機能を提供することがあるため、CloudFormation では、アクティブ化するサードパーティーのパブリック拡張機能のエイリアスを指定できます。
拡張機能のエイリアスを指定すると、CloudFormation は、アカウントおよびリージョン内で、エイリアスを拡張機能タイプ名として扱います。テンプレート、API コール、および CloudFormation コンソールで拡張機能を参照するには、エイリアスを使用する必要があります。
拡張エイリアスは、特定のアカウントおよびリージョン内で一意である必要があります。異なるタイプ名のエイリアスを使用して、同じアカウントとリージョンで同じパブリックリソースを複数回アクティブ化できます。
拡張機能エイリアスは、特定のアカウントとリージョンでのみ一意である必要がありますが、アカウントとリージョン間で異なるサードパーティーのパブリック拡張機能に同じエイリアスを割り当てないことを強くお勧めします。これにより、複数のアカウントまたはリージョン全体で拡張機能エイリアスを含むテンプレートを使用すると、予期しない結果が発生する可能性があります。
拡張機能のアクティブ化時の実行ロールの指定
リソースをアクティブ化するときに、アカウントとリージョンでその拡張機能を呼び出すときに引き受ける CloudFormation のための IAM 実行ロールを指定できます。
CloudFormation が実行ロールを引き受けるためには、ロールに CloudFormation で定義された信頼ポリシーが必要です。次に例を示します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "resources.cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
詳細については、AWS Identity and Access Management ユーザーガイドのロールの信頼ポリシーの変更を参照してください。
CloudFormation コンソールを使用してアカウントで使用するパブリック拡張機能をアクティブ化するには
CloudFormation コンソール
にある [CloudFormation] ナビゲーションペインの [CloudFormation registry] (CloudFormation レジストリ) で、[Public extensions] (パブリック拡張機能) を選択します。 レジストリには、アカウントで使用可能なパブリック拡張機能が表示されます。
[Filter] (フィルター) を使用して拡張機能タイプを選択し、[Third party] (サードパーティー) を選択します。(Amazon が公開する拡張機能は、デフォルトでアクティブ化されています)。
拡張機能を選択し、[Activate] (アクティブ化) を選択します。
注記 拡張機能の複数のバージョンが使用可能な場合は、[Version] (バージョン) メニューを使用して、アクティブ化する拡張機能のバージョンを選択できます。デフォルトは最新バージョンです。
[Activate extension] (拡張機能をアクティブ化) ページのオプションを使用して、このアカウントで拡張機能をアクティブ化する方法をカスタマイズします。
拡張機能タイプのエイリアスを使用して拡張機能をアクティブ化するには、次の手順を実行します。
[Override default] (デフォルトを上書き) を選択します。
この拡張機能で使用する拡張機能タイプのエイリアスを入力します。エイリアスが拡張機能タイプの推奨形式に従っていることを確認します。
詳細については、Specifying aliases to refer to extensions を参照してください。
プライベートリソースを有効にしている場合、拡張機能の呼び出し時に引き受ける CloudFormation の IAM ロールを指定できます。詳細については、Specifying an execution role when activating extensions を参照してください。
[Logging config] (ログ記録設定) で、必要に応じて拡張機能のログ記録設定情報を指定します。
logRoleArn キー名と logGroupName キー名では、大文字と小文字が区別されることに注意してください。次に例を示します。
{ "logRoleArn": "arn:aws:iam::account:role/rolename", "logGroupName": "log-group-name" }
[Versioning] (バージョニング) のオプションを使用して、新しいマイナーバージョンの公開時に、CloudFormation がこのアカウントおよびリージョンの拡張機能を自動的に更新するかどうかを指定します。詳細については、Setting CloudFormation to automatically use new versions of extensions を参照してください。
必要に応じて、設定データを指定します (オプション)。
拡張機能でアカウントおよびリージョンレベルでの追加設定が必要な場合、CloudFormation は [Activate extension] (拡張機能をアクティブ化) ページの [Configuration] (設定) セクションを含めます。この時点で、または拡張機能のアクティブ化後に設定データを指定できます。
拡張機能の有効化中に設定データを指定するには、次の手順を実行します。
[Configure now] (今すぐ設定) を選択し、[Activate extension and continue] (拡張機能をアクティブ化して続行) を選択します。
CloudFormation は、[Configure extension] (拡張機能を設定) ページを表示します。拡張機能の現在の設定スキーマを表示するには、[View configuration schema] (設定スキーマを表示) がアクティブになっていることを確認します。
[Configuration JSON] (設定 JSON) テキストボックスで、この拡張機能のために指定する設定スキーマを表す JSON 文字列を入力します。
[Configure extension] (拡張機能を設定) を選択します。
後で設定データを指定するには、次の手順を実行します。
[Configure later] (後で設定) を選択し、[Activate extension] (拡張機能をアクティブ化) を選択します。
既にアクティブ化されている拡張機能の設定データを指定するには、Configuring extensions at the account level を参照してください。
拡張機能の設定が不要な場合は、[Configuration] (設定) セクションは表示されません。[Activate extension] (拡張機能をアクティブ化) を選択します。
拡張機能が正常にアクティブ化されると、CloudFormation は、その拡張機能の詳細ページを表示します。
CloudFormation コンソールを使用してアカウントでアクティブ化されたパブリック拡張機能を更新するには
アカウントとリージョンで拡張機能をアクティブ化した後、その拡張機能をアクティブ化する際に次のプロパティを更新できます。これには以下が含まれます。
設定スキーマ
自動バージョン更新をアクティブ化するかどうか
プライベート登録済み拡張機能の場に使用する実行ロール
ログ記録設定情報
CloudFormation レジストリを使用して、拡張機能を検索します。
[Actions] (アクション) メニューから、[Edit] (編集) を選択し、適切な編集オプションを選択します。
設定スキーマを更新するには、To specify configuration properties for an extension in the CloudFormation console を参照してください。
自動更新をアクティブ化または非アクティブ化するには、次の手順を実行します。
[Edit automatic updates] (自動更新を編集) を選択します。
[On] (オン) または [Off] (オフ) を選択し、[Save] (保存) を選択します。
実行ロールを更新するには
[Edit execution role] (実行ロールを編集) を選択します。
この拡張機能を呼び出すときに CloudFormation が使用する IAM ロールの ARN を指定し、[Save] (保存) を選択します。
ログ記録設定を更新するには、次の手順を実行します。
[Edit logging config] (ログ記録設定を編集) を選択します。
ログ記録設定 JSON を編集し、[Save] (保存) を選択します。
CloudFormation コンソールを使用してアカウントのパブリック拡張機能を非アクティブ化するには
CloudFormation レジストリを使用して、拡張機能を検索します。
[Actions] (アクション) メニューから、[Deactivate] (非アクティブ化) を選択します。
[Deactivate] (非アクティブ化) を選択します。
AWS CLI を使用してアカウントで使用するパブリック拡張機能をアクティブ化するには
activate-type
を使用して拡張機能をアクティブ化し、拡張機能の新しいマイナーバージョンが公開されるたびに拡張機能を自動更新するかどうかを指定します。以下の例では、このアカウント用にアクティブ化するパブリック拡張機能のパブリック ARN を指定します。さらに、新しいマイナーバージョンが公開されるたびに CloudFormation が拡張機能を自動更新するように指定します。CloudFormation は、このアカウントとリージョンに固有のアクティブ化された拡張機能の Amazon リソース番号 (ARN) を返します。
PROMPT> aws cloudformation activate-type --public-type-arn
public_extension_ARN
--auto-update-activated { "Arn": "624af370-311a-11e8-b6b7-500cexample" }
AWS CLI を使用してパブリック拡張機能のバージョンを手動で更新するには
activate-type
を使用して、拡張機能を再度アクティブ化します。--version-update
パラメータを使用して、拡張機能を最新のメジャーバージョンや最新のマイナーバージョンに更新するか、または拡張機能を自動的に更新するかどうかの設定を更新するかどうかを指定します。詳細については、ActivateType を参照してください。