言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

AWS辞典

  1. トップページ
  2. AWS辞典
  3. コメント(# と /* */)

コメント(# と /* */)

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 はプログラミング言語でインフラを定義するため、使用する言語のコメント記法をそのまま使えます。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。