

# Template studio を使用したテンプレートを視覚的に編集する
<a name="template-studio"></a>

Template studio は、CloudFormation コンソールのテンプレートエディタです。テンプレートが宣言するリソースの図の横に、テンプレートがテキストとして表示されます。テンプレートを編集すると、図がそれに合わせて再描画されます。テンプレートを検証し、YAML と JSON の間で変換し、コンソールを離れることなく Amazon S3 に保存できます。

テンプレートのテキストが正式なソースです。図はそのテキストを視覚的に表現したものであり、別の編集可能な画面ではありません。テンプレートですべての変更を行います。

## 考慮事項
<a name="template-studio-considerations"></a>

Template studio で作業するときは、次の点に注意してください。
+ 図ではなくテンプレートに作成します。この図は、テンプレートが宣言するリソースと、それらが相互に参照する方法を示しています。図を編集してリソースを追加したり設定したりすることはできません。
+ 編集は自動的には保存されません。Template studio は、保存されていない変更を移動する前に確認を求めます。ページを離れたり更新したりすると、保存されていない変更は破棄されます。ページを離れる前に、Amazon S3 に保存するか、テンプレートをコピーまたはダウンロードしてください。
+ テンプレートを YAML から JSON に変換すると、コメントは破棄されます。JSON にはコメントの構文がないためです。YAML に戻しても、コメントは復元されません。
+ Template studio の CloudFormation 検証は、51,200 バイト (50 KiB) を超えるドラフトでは現在利用できません。現在の [検証] アクションは、この制限がある `TemplateBody` パラメータを介してドラフトを送信します。これは、テンプレートサイズ全体の制限ではありません。テンプレートは引き続き保存でき、CloudFormation のクォータの対象となるスタック操作で使用できます。詳細については、「[テンプレートを検証する](#template-studio-validate)」を参照してください。
+ 保存すると、テンプレートがアカウント内のバケットに書き込まれるため、保存するテンプレートは標準の Amazon S3 料金で請求されます。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。
+ リソース図をダウンロードできるのは、キャンバスが **[キャンバス]** または **[両方]** のビューで表示されている場合のみです。

## Template studio に必要なアクセス許可
<a name="template-studio-permissions"></a>

必要なアクセス許可は、テンプレートのソースと実行するアクションによって異なります。

`cloudformation:GetTemplate`  
既存のスタックのテンプレートを開くために必要です。テンプレートを編集するスタックへのアクセスを付与します。

`s3:GetObject`  
認証情報を使用して Amazon S3 からテンプレートを読み取るために必要です。ソーステンプレートオブジェクトへのアクセスを付与します。署名付き URL は、URL に含まれる承認を使用します。

`cloudformation:ValidateTemplate`  
**[検証]** を選択するために必要です。

`s3:PutObject`  
テンプレートを保存するために必要です。このアクセス許可は、すべてのリソースではなく、例えば `arn:aws:s3:::{{destination-bucket}}/*` など、送信先バケット内のオブジェクトにスコープを限定します。

`s3:CreateBucket`  
コンソールが欠落している送信先バケットを作成する場合にのみ必要です。これは、コンソールマネージドバケットまたは指定したバケット名のいずれかです。既存のバケットを再利用する場合、このアクセス許可は必要ありません。

`s3:ListBucket`  
指定した既存のバケットに保存するときに必要です。Template studio は、アップロード前に `HeadBucket` を使用して、アクセス、予想されるバケット所有者、およびバケットの AWS リージョン を確認します。  
コンソールマネージドバケットの場合、このアクセス許可はオプションです。このアクセス許可がない場合でも、保存ダイアログにはバケット名が表示されます。保存には `s3:PutObject` が必要で、バケットを作成する必要がある場合は `s3:CreateBucket` も必要です。

## Template studio を開く
<a name="template-studio-open"></a>

Template studio をどこから開くかによって、何が開かれるか、および保存後に何が行われるかが決まります。

**新しいテンプレートを開始するには**

1. [CloudFormation コンソール](https://console.aws.amazon.com/cloudformation/)を開きます。

1. 画面の上部にあるナビゲーションバーで、デプロイする AWS リージョン を選択します。

1. ナビゲーションペインで、**[Template studio]** を選択します。

**スタックの作成中にテンプレートを構築するには**

1. **[スタックの作成]** ページで、**[Template studio を使用して構築]** を選択します。

1. テンプレートを構築してから、**[保存して続行]** を選択します。

1. スタックウィザードは保存したテンプレートを使用して続行されるため、テンプレートを別途アップロードする必要はありません。

**既存のスタックのテンプレートを編集するには**

1. **[スタック]** ページで、スタックの名前を選択します。

1. スタックを直接更新するか、変更セットを作成します。

1. **[テンプレートの準備]** ページで、**[Template studio で開く]** を選択します。スタックの現在のテンプレートが開きます。

1. **[保存して続行]** を選択して、編集したテンプレートを使用して更新または変更セットに戻ります。

コンソール内の他の場所でも、テンプレートが表示される場所であればどこでも、**[Template studio で開く]** を選択して作業できます。

## テンプレートと図を使用する
<a name="template-studio-editor-and-canvas"></a>

Template studio が開き、テンプレートと図が並んで表示されます。ビューコントロールを使用して、画面の内容を選択します。

** テンプレート** –   
テンプレートのみを全幅で表示します。図なしでテンプレートを読み書きする場合に使用します。

**キャンバス**:  
図のみを全幅で表示します。これは、図に全幅が必要な大規模なテンプレートに使用します。

**両方**  
テンプレートと図を同時に表示します。両者の間の分割線をドラッグすると、いずれかの側の領域を広げることができます。

図は関連するリソースをグループ化し、あるリソースが `Ref`、`Fn::GetAtt`、`Fn::Sub`、または `DependsOn` を介して別のリソースを参照している箇所に接続線を描画します。どこからも参照されていないリソースは単独で表示されるため、誤って接続が切れたリソースを簡単に見つけることができます。

**注記**  
例えば、3 つの関数が同じ IAM ロールを引き受けることができます。図では各関数の内部にロールが表示されますが、テンプレートで宣言されているロールは 1 つだけです。リソースがいくつ存在するかを確認するには、テンプレートを確認してください。

## YAML と JSON の間で変換する
<a name="template-studio-format"></a>

保存する形式によって、Template studio が Amazon S3 に書き込むオブジェクトのファイル名とコンテンツタイプが決まります。

**編集中のテンプレートを変換するには**

1. 現在使用している形式に名前を付ける形式コントロールを選択します。

1. もう一方の形式を選択します。

1. YAML から JSON への変換では、コメントを引き継ぐことができないため、確認を求められます。**[変換]** を選択して、続行します。

**重要**  
JSON にはコメントの構文がありません。コメントを含む YAML テンプレートを JSON に変換すると、そのコメントは削除され、YAML に戻しても復元されません。変換する前に、保持する内容をコピーしてください。

テンプレートを読み取れない間は、変換できるほど完全な内容がないため、形式コントロールは使用できません。まずテンプレートを修正してください。

## 入力時の構文の問題
<a name="template-studio-diagnostics"></a>

エディタは、テンプレートの作成中にその構文をチェックし、読み取れない箇所 (閉じられていない括弧、位置のずれたインデント、重複したキーなど) に下線を引きます。下線にカーソルを合わせると、問題が表示されます。1 行に複数の問題がある場合、それらを区別できるように番号が付けられます。

これはテンプレートの *構文* のチェックであり、その内容のチェックではありません。エディタは、どのリソースタイプが存在するか、またそれらがどのプロパティを取るかを認識していません。そのため、完全に適切な形式の YAML であっても、CloudFormation のみが検出できる誤りがあるテンプレートが存在する可能性があります。その場合は、**[検証]** を選択します。

## テンプレートを検証する
<a name="template-studio-validate"></a>

検証では、テンプレートをスタック操作で使用する前に、エディタでテンプレートの構文をチェックし、CloudFormation でテンプレートをチェックします。どちらのチェックも、保存していない変更を含め、現在のドラフトを使用します。CloudFormation のチェックが成功しても、エディタから報告された構文エラーは上書きされません。

**注記**  
Template studio は、`TemplateBody` パラメータを使用してドラフトを [`ValidateTemplate`](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ValidateTemplate.html) API に送信します。このパラメータには 51,200 バイト (50 KiB) の制限があります。  
この制限を超えるドラフトの場合、Template studio は CloudFormation リクエストを送信しません。CloudFormation のチェックは使用できませんが、これはテンプレートが無効であることを意味しません。エディタは引き続き構文エラーを報告できます。  
同じ API は、`TemplateURL` を介して最大 1 MB のテンプレートをサポートします。Template studio は、URL ベースの検証のために編集したドラフトをアップロードしません。テンプレートを Amazon S3 に保存し、CloudFormation のクォータの対象となるスタック操作を通じて検証することができます。

**編集中のテンプレートを検証するには**

1. **[検証]** を選択します。

1. 両方のチェックに合格したテンプレートは、**[有効]** として報告されます。

1. いずれかのチェックでエラーが見つかった場合は、検証メッセージでそれらを確認します。エディタのエラーには、行番号と列番号が含まれます。エディタでエラーを修正し、もう一度検証します。

## テンプレートを Amazon S3 に保存する
<a name="template-studio-save"></a>

CloudFormation はスタック操作用のテンプレートを Amazon S3 から読み取るため、保存することによって、テンプレートをコンソールの他の部分で使用できるようになります。

保存するテンプレートにプレーンテキストのシークレットを含める代わりに、Secrets Manager に保存されたシークレットまたは Systems Manager Parameter Store の Secure String への動的な参照を使用します。詳細については、「[動的参照を使用して他のサービスに格納されている値を取得する](dynamic-references.md)」を参照してください。

**編集中のテンプレートを保存するには**

1. **[保存して続行]** を選択します。

1. 保存先を確認します。デフォルトでは、テンプレートは、現在の AWS リージョン でアップロードされたテンプレート用に CloudFormation が管理する Amazon S3 バケットに保存されます。そのバケットがまだ存在しない場合、CloudFormation は保存時にそれを作成し、後で保存するテンプレートにも再利用します。

   1. 代わりに独自の保存先を選択するには、**[別のバケットを使用]** を選択し、**[バケット名]** を入力します。バケットがまだ存在しない場合は、作成されます。

1. **[確認して続行]** を選択します。

**注記**  
Amazon S3 に保存されたテンプレートは、どのバケットに保存されているかに関係なく、標準の Amazon S3 料金で請求されます。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

保存には、成功した検証結果は必要ありません。検証でエラーが見つかった場合、Template studio はそれでも保存するかどうかを確認するよう求めます。保存してもこれらのエラーは修正されません。スタック操作でテンプレートを使用する前に、エラーを確認して修正してください。

## テンプレートまたは図をコピーまたはダウンロードする
<a name="template-studio-copy-download"></a>

テンプレートまたは図をコンソールの外部に取り出すには、**[テンプレートアクション]** を選択します。

**[テンプレートをコピー]**  
エディタに表示されているとおりのテンプレートをクリップボードにコピーします。

**[テンプレートをダウンロード]**  
現在編集中の形式で、テンプレートをファイルとして保存します。

**[リソース図をダウンロード]**  
図を PNG 画像として保存します。この画像は図をキャプチャしたものであるため、図が画面上にある場合にのみ使用できます。