一部のリソースには、カスタム名を指定できます。デフォルトでは、リソースを特定する一意の物理 ID が AWS CloudFormation によって生成されます。例えば、CloudFormation は、Amazon S3 バケットに MyStack-MyBucket-abcdefghijk1
などの物理 ID を使用して名前を付ける場合があります。カスタム名を使用すると、production-app-logs
や business-metrics
など、一見して判別しやすい名前を指定することができます。
リソース名は実行中のすべてのスタックおいて一意である必要があります。テンプレートを再利用して複数のスタックを作成する場合、テンプレートに基づくカスタム名は変更するか削除する必要があります。名前を指定しない場合、CloudFormation は一意の物理 ID を生成してリソースの名前とします。名前は文字で開始し、ASCII 文字、数字、ハイフンのみを使用できます。最後の文字をハイフンにすることはできず、ハイフンを 2 つ続けて使用することもできません。
スタックリソースの管理を CloudFormation 以外で行うことも避けてください。例えば、スタックに属しているリソースの名前を CloudFormation を使用せずに変更した場合、そのスタックを更新または削除しようとしたときにエラーが発生します。
重要
カスタムで名前を付けたリソースの置き換えが発生する更新は実行できません。リソースを置き換える必要がある場合は、新しい名前を指定します。
例
カスタム名を使用する場合は、CloudFormation テンプレートで、目的のリソースの名前プロパティを指定します。カスタム名をサポートする各リソースには、独自の名前を指定するためのプロパティが存在します。たとえば、DynamoDB テーブルに名前を付けるには、TableName
プロパティを使用します。その例を次に示します。
JSON
"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
myDynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
KeySchema:
HashKeyElement:
AttributeName: "AttributeName1"
AttributeType: "S"
RangeKeyElement:
AttributeName: "AttributeName2"
AttributeType: "N"
ProvisionedThroughput:
ReadCapacityUnits: "5"
WriteCapacityUnits: "10"
TableName: "SampleTable"
サポート リソース
次のリソースタイプはカスタム名をサポートしています: