コメント(# と /* */)
AWS の各種設定ファイルでコメントを書く方法です。CloudFormation テンプレートの YAML 形式では Python や Shell と同じ『#』が使えます。一方、JSON 形式の CloudFormation テンプレートはコメントを一切サポートしていません。Terraform(HCL 形式)では『#』『//』『/* */』の3種類が使えます。AWS CLI の設定ファイル(~/.aws/config)でも『#』が使えます。
構文
# CloudFormation YAML: コメント — # 以降、行末まですべてコメントになります。
AWSTemplateFormatVersion: '2010-09-09'
# テンプレートの説明
Description: 'Sample CloudFormation template'
Resources:
# S3 バケットの定義
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-sample-bucket # バケット名
実装例は次の通りです。
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "JSON にはコメントがありません。説明は Description フィールドに書きます。"
}
実装例は次の通りです。
# Terraform (HCL): 一行コメント
// Terraform (HCL): 一行コメント(// も使えます)
/*
Terraform (HCL): 複数行コメント
/* から */ までの範囲がコメントになります。
*/
resource "aws_s3_bucket" "example" {
# バケット名
bucket = "my-sample-bucket"
}
コメントの種類と対応フォーマット
| フォーマット | コメント記法 | 概要 |
|---|---|---|
| CloudFormation YAML | # テキスト | YAML の標準コメント記法です。行頭・行末どちらにも書けます。CloudFormation でテンプレートにコメントを付けたい場合は YAML 形式を使います。 |
| CloudFormation JSON | なし | JSON 仕様にはコメントがありません。コメントの代替として、説明は『Description』フィールドや『Metadata』セクションに書くことがあります。 |
| Terraform (HCL) | # テキスト | 一行コメントです。HCL のデフォルトスタイルです。 |
| Terraform (HCL) | // テキスト | 一行コメントです。『#』と同じ効果ですが、HCL のスタイルガイドでは『#』が推奨されています。 |
| Terraform (HCL) | /* テキスト */ | 複数行コメントです。複数行にわたる説明を書くときに使います。 |
| AWS CLI 設定ファイル(~/.aws/config) | # テキスト | INI 形式のコメントです。プロファイルの説明や一時的なコメントアウトに使います。 |
| AWS SAM テンプレート | # テキスト | SAM は YAML ベースのため、YAML の『#』が使えます。 |
| AWS CDK (TypeScript/Python 等) | 各言語の記法 | CDK はプログラミング言語でインフラを定義します。TypeScript なら『//』、Python なら『#』を使います。 |
JSON にコメントがない場合の対処
CloudFormation JSON テンプレートはコメントを書けません。代替手段として次のような方法が使われます。
| 方法 | 説明 |
|---|---|
| YAML に切り替える | CloudFormation は YAML もサポートしています。コメントが必要なテンプレートには YAML を使います。 |
| Description フィールドに書く | テンプレート全体の説明はトップレベルの『"Description"』フィールドに書きます。 |
| Metadata セクションに書く | 『"Metadata"』セクションは自由な形式で追加情報を書けます。CloudFormation はこのセクションを無視します。 |
| リソースの論理 ID に意味を持たせる | リソースの論理名(例: 『"ProdWebServerSecurityGroup"』)を説明的にすることでコメントの代わりにします。 |
| AWS CDK や Terraform に移行する | JSON を直接書く代わりに、コメントが書けるツール(CDK・Terraform・SAM)を使うことも選択肢です。 |
コメントを書くべき場所・書かなくてよい場所
| 判断 | 場面 | 理由 |
|---|---|---|
| 書くべき | 「なぜこのリソース構成を選んだか」 | セキュリティグループのルールや IAM ポリシーの設定理由を残しておくと、将来変更する際の参照になります。 |
| 書くべき | 環境ごとの差異 | dev/stg/prod で値を変える箇所をコメントで明示しておくと、環境の切り替え漏れを防げます。 |
| 書くべき | 一時的なコメントアウト | コスト削減のためにリソースを一時的に無効化する場合、理由と期限をコメントに残しておきます。 |
| 書かなくてよい | リソース名や型から明らかな内容 | 『# S3 バケットを定義します』のような自明なコメントはノイズになります。 |
| 書かなくてよい | 変更履歴 | バージョン管理(git)があるため、コメントに変更日を残す必要はありません。 |
サンプルコード
CloudFormation YAML テンプレートでのコメントの使い方を確認します。
template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: 'S3 バケットと SQS キューを作成するサンプルテンプレートです。'
# パラメーターセクション: デプロイ時に外部から値を渡せます。
Parameters:
# Environment パラメーターで dev/stg/prod を切り替えます。
Environment:
Type: String
AllowedValues:
- dev
- stg
- prod
Default: dev
Resources:
# ---- S3 バケット ----
# バージョニングを有効にして誤削除からデータを保護します。
DataBucket:
Type: AWS::S3::Bucket
Properties:
# BucketName は手動指定するとスタック削除時に競合する可能性があります。
# 省略すると CloudFormation が一意の名前を自動生成します。
VersioningConfiguration:
Status: Enabled # バージョニング: 有効
# ---- SQS キュー ----
# 処理失敗メッセージを受け取るデッドレターキューです。
DeadLetterQueue:
Type: AWS::SQS::Queue
Properties:
MessageRetentionPeriod: 1209600 # 14日間(秒単位)
ProcessingQueue:
Type: AWS::SQS::Queue
Properties:
# 最大3回失敗したメッセージをデッドレターキューに移動します。
RedrivePolicy:
deadLetterTargetArn: !GetAtt DeadLetterQueue.Arn
maxReceiveCount: 3
Outputs:
BucketName:
Description: '作成した S3 バケットの名前'
Value: !Ref DataBucket
Terraform(HCL)でのコメントの使い方を確認します。
main.tf
# main.tf — S3 バケットを作成する Terraform 設定です。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
# AWS プロバイダーの設定
provider "aws" {
region = var.aws_region
}
/*
S3 バケットの定義
パブリックアクセスはすべてブロックします。
静的ウェブサイトホスティングには別途設定が必要です。
*/
resource "aws_s3_bucket" "data" {
bucket = "${var.project_name}-data-${var.environment}"
# タグでリソースの管理コスト・環境・プロジェクトを識別します。
tags = {
Name = "data-bucket"
Environment = var.environment
Project = var.project_name
}
}
# パブリックアクセスをすべてブロックします(セキュリティ要件)。
resource "aws_s3_bucket_public_access_block" "data" {
bucket = aws_s3_bucket.data.id
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
~/.aws/config(AWS CLI 設定)
# AWS CLI 設定ファイルです。 # プロファイルごとにリージョン・出力形式・認証情報を設定します。 [default] region = ap-northeast-1 # 東京リージョン output = json # 本番環境用プロファイル [profile prod] region = ap-northeast-1 output = json # role_arn = arn:aws:iam::123456789:role/ProdRole # 一時的に無効化中(2026-04 予定)
よくあるミス
JSON テンプレートにコメントを書く
JSON 形式の CloudFormation テンプレートにコメントを書くと、JSON のパースエラーになります。JSON 仕様にはコメントがないため、コメントが必要な場合は YAML 形式に切り替えることを検討します。
{
"AWSTemplateFormatVersion": "2010-09-09",
// NG: JSON にはコメントを書けません — パースエラーになります
"Resources": {}
}
YAML の行末コメントで値が切れる
YAML では行末にコメントを書けますが、文字列値の中に『#』が含まれる場合はクォートで囲む必要があります。クォートがないと『#』以降がコメントとして解釈されます。
# NG: BucketName の値に # が含まれているがクォートがない Properties: BucketName: my-bucket-#1 # ← "my-bucket-" だけが値になり #1 以降はコメント # OK: 文字列に # を含む場合はクォートで囲む Properties: BucketName: "my-bucket-#1" # バケット名
概要
AWS の各種設定ファイルでのコメントは、フォーマットによって大きく異なります。CloudFormation YAML では YAML 標準の『#』コメントが使えます。JSON 形式の CloudFormation テンプレートはコメントを一切サポートしていません。コメントが必要な場合は YAML 形式を使うか、Metadata セクションや論理 ID 名で補足するのが一般的です。
Terraform(HCL)では『#』(推奨)、『//』、『/* */』の3種類のコメント記法が使えます。AWS CLI の設定ファイル(~/.aws/config)は INI 形式で『#』のコメントが有効です。AWS CDK はプログラミング言語でインフラを定義するため、使用する言語のコメント記法をそのまま使えます。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。