メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

リソース

必須の Resources セクションでは、スタックに含める Amazon EC2 インスタンスや Amazon S3 バケットなどの AWS リソースを宣言します。

構文

Resources セクションは、キー名 Resources で構成されます。次の擬似テンプレートで、Resources セクションの概要を示します。

JSON

Copy
"Resources" : { "Logical ID" : { "Type" : "Resource type", "Properties" : { Set of properties } } }

YAML

Copy
Resources: Logical ID: Type: Resource type Properties: Set of properties

リソースフィールド

論理 ID

論理 ID は英数字 (A-Za-z0-9) とし、テンプレート内で一意である必要があります。論理名は、テンプレートの他の部分のリソースを参照するために使用します。たとえば、Amazon Elastic Block Store ボリュームを Amazon EC2 インスタンスにマッピングする場合、論理 ID を参照してブロックストアをインスタンスに関連付けます。

特定のリソースは、論理 ID の他に物理 ID も持っています。これは、そのリソースに実際に割り当てられている名前です (EC2 インスタンス ID、S3 バケット名など)。AWS CloudFormation テンプレート外のリソースを識別するには物理 ID を使用しますが、リソースが作成された後でだけ使用できます。たとえば、EC2 インスタンスリソースに MyEC2Instance という論理 ID を指定できますが、AWS CloudFormation によってインスタンスが作成されると、インスタンスには AWS CloudFormation によって自動的に生成された物理 ID (i-28f9ba55 など) が割り当てられます。この物理 ID を使用して、Amazon EC2 コンソールでインスタンスを特定したり、そのプロパティ (DNS 名など) を表示したりすることができます。カスタム名をサポートしているリソースの場合は、リソースをすばやく識別するために、独自の名前 (物理 ID) を割り当てることができます。たとえば、ログを保存する S3 バケットに MyPerformanceLogs という名前を指定できます。詳細については、「Name タイプ」を参照してください。

リソースタイプ

リソースタイプは、宣言しているリソースのタイプを識別します。たとえば、AWS::EC2::Instance は EC2 インスタンスを宣言します。すべてのリソースタイプの一覧については、「AWS リソースプロパティタイプのリファレンス」を参照してください。

リソースプロパティ

リソースプロパティは、リソースに対して指定できる追加オプションです。たとえば、EC2 インスタンスごとに、そのインスタンスの Amazon Machine Image (AMI) ID を指定する必要があります。次の例に示すように、AMI ID はインスタンスのプロパティとして宣言します。

例 JSON

Copy
"Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-2f726546" } } }

例 YAML

Copy
Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-2f726546"

プロパティを宣言する必要のないリソースの場合は、そのリソースのプロパティセクションを省略できます。

プロパティの値には、リテラル文字列、文字列のリスト、ブール値、パラメーター参照、疑似参照、または関数によって返される値を使用できます。次の例は、異なるプロパティ値の型を宣言する方法を示しています。

例 JSON

Copy
"Properties" : { "String" : "one-string-value", "Number" : 123, "LiteralList" : [ "first-value", "second-value" ], "Boolean" : true, "ReferenceForOneValue" : { "Ref" : "MyLogicalResourceName" } , "FunctionResultWithFunctionParams" : { "Fn::Join" : [ "%", [ "Key=", { "Ref" : "MyParameter" } ] ] } }

例 YAML

Copy
Properties: String: OneStringValue String: A longer string value Number: 123 LiteralList: - "[first]-string-value with a special characters" - "[second]-string-value with a special characters" Boolean: true ReferenceForOneValue: Ref: MyLogicalResourceName ReferenceForOneValueShortCut: !Ref MyLogicalResourceName FunctionResultWithFunctionParams: !Sub | Key=%${MyParameter}

条件と関連付けることにより、条件付きでリソースを作成できます。テンプレートのセクションの Conditions に条件を定義する必要があります。

次は、リソース宣言の例を示します。2 つのリソースが定義されています。MyInstance リソースはその UserData プロパティの一部として MyQueue を含んでいます。

JSON

Copy
"Resources" : { "MyInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [ "Queue=", { "Ref" : "MyQueue" } ] ] } }, "AvailabilityZone" : "us-east-1a", "ImageId" : "ami-20b65349" } }, "MyQueue" : { "Type" : "AWS::SQS::Queue", "Properties" : { } } }

YAML

Copy
Resources: MyInstance: Type: "AWS::EC2::Instance" Properties: UserData: "Fn::Base64": !Sub | Queue=${MyQueue} AvailabilityZone: "us-east-1a" ImageId: "ami-20b65349" MyQueue: Type: "AWS::SQS::Queue" Properties: {}

このページの内容: