

これは新しい CloudFormation テンプレートリファレンスガイドです。ブックマークとリンクを更新してください。CloudFormation の開始方法については、『[AWS CloudFormation ユーザーガイド](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)』を参照してください。

# CloudFormation リソースのカスタム命名
<a name="aws-properties-name"></a>

CloudFormation テンプレートでサポートされているリソースタイプにカスタム名を割り当てると、それらをより有益かつ簡単に識別できるものにできます。デフォルトでは、リソースを特定する一意の物理 ID が CloudFormation によって生成されます。例えば、CloudFormation は、Amazon S3 バケットに `MyStack-MyBucket-abcdefghijk1` などの物理 ID を使用して名前を付ける場合があります。カスタム名を使用すると、`production-app-logs` や `business-metrics` など、一見して判別しやすい名前を指定することができます。

カスタム名はすべてのリソースでサポートされているわけではありません。各 AWS サービスは、カスタム名をサポートするリソースタイプを個別に決定します。

リソース名は実行中のすべてのスタックおいて一意である必要があります。テンプレートを再利用して複数のスタックを作成する場合、テンプレートに基づくカスタム名は変更するか削除する必要があります。名前を指定しない場合、CloudFormation は一意の物理 ID を生成してリソースの名前とします。名前は文字で開始し、ASCII 文字、数字、ハイフンのみを使用できます。最後の文字をハイフンにすることはできず、ハイフンを 2 つ続けて使用することもできません。

スタックリソースの管理を CloudFormation 以外で行うことも避けてください。例えば、スタックに属しているリソースの名前を CloudFormation を使用せずに変更した場合、そのスタックを更新または削除しようとしたときにエラーが発生します。

**重要**  
カスタムで名前を付けたリソースの置き換えが発生する更新は実行できません。リソースを置き換える必要がある場合は、新しい名前を指定します。

## 例
<a name="aws-properties-name-example"></a>

カスタム名を使用する場合は、CloudFormation テンプレートで、目的のリソースの名前プロパティを指定します。カスタム名をサポートする各リソースには、独自の名前を指定するためのプロパティが存在します。たとえば、DynamoDB テーブルに名前を付けるには、`TableName` プロパティを使用します。その例を次に示します。

### JSON
<a name="aws-properties-name-example.json"></a>

```
"myDynamoDBTable" : {
   "Type" : "AWS::DynamoDB::Table",
   "Properties" : {
      "KeySchema" : {
         "HashKeyElement": {
            "AttributeName" : "AttributeName1",
            "AttributeType" : "S"
         },
         "RangeKeyElement" : {
            "AttributeName" : "AttributeName2",
            "AttributeType" : "N"
         }
      },
      "ProvisionedThroughput" : {
         "ReadCapacityUnits" : "5",
         "WriteCapacityUnits" : "10"
      },
      "TableName" : "SampleTable"
   }
}
```

### YAML
<a name="aws-properties-name-example.yaml"></a>

```
myDynamoDBTable: 
  Type: AWS::DynamoDB::Table
  Properties: 
    KeySchema: 
      HashKeyElement: 
        AttributeName: "AttributeName1"
        AttributeType: "S"
      RangeKeyElement: 
        AttributeName: "AttributeName2"
        AttributeType: "N"
    ProvisionedThroughput: 
      ReadCapacityUnits: "5"
      WriteCapacityUnits: "10"
    TableName: "SampleTable"
```