GS2-Deploy template file specification

Information about GS2-Deploy template file specification

This is the format specification of the template file used when creating a stack in GS2-Deploy. It can be written in JSON or YAML format.

Types of sections

A template consists of the following sections.

SectionRequiredDescription
GS2TemplateFormatVersionSpecifies the format of the template. Currently only 2019-05-01 can be defined.
DescriptionYou can fill in the description and other information about the template.
GlobalsThis section defines the Alias attribute (string replacement specification).
ResourcesDefine resources for each GS2 service to be included in the stack.
OutputsDefines the output values to be displayed in the management console.
GS2TemplateFormatVersion: "2019-05-01" Description: GS2-Account initialize template Version 2021-12-03 Globals: Alias: AccountNamespaceName: game-0001 KeyNamespaceAccountAuthentication: account-encryption-key-namespace KeyAccountAuthentication: account-encryption-key GatewayNamespaceName: gateway-0001 Resources: GatewayNamespace: Type: GS2::Gateway::Namespace Properties: Name: ${GatewayNamespaceName} KeyNamespaceAccountAuthentication: Type: GS2::Key::Namespace Properties: Name: ${KeyNamespaceAccountAuthentication} KeyAccountAuthentication: Type: GS2::Key::Key Properties: NamespaceName: ${KeyNamespaceAccountAuthentication} Name: ${KeyAccountAuthentication} DependsOn: - KeyNamespaceAccountAuthentication AccountNamespace: Type: GS2::Account::Namespace Properties: Name: ${AccountNamespaceName} Outputs: AccountNamespaceName: !GetAttr AccountNamespace.Item.Name KeyAccountAuthenticationKeyId: !GetAttr KeyAccountAuthentication.Item.KeyId GatewayNamespaceName: !GetAttr GatewayNamespace.Item.Name

Globals

Alias

Replaces strings in the Resources and Outputs sections with the specified string. Replace the string on the left side with ${…} The string on the right side is replaced by the string on the left side, enclosed in ${}, as in the following example.

Example of replacement specification: ${AccountNamespaceName}

Globals: Alias: AccountNamespaceName: game-0001

Resources

Defines the resource to be generated, with Type and Properties attributes, and DependsOn attribute if necessary.

Resources: KeyNamespaceAccountAuthentication: # Name of the resource definition. Type: GS2::Key::Namespace # Specify resource Properties: Name: ${KeyNamespaceAccountAuthentication} KeyAccountAuthentication: # Name of resource definition Type: GS2::Key::Key # Specify resource Properties: NamespaceName: ${KeyNamespaceAccountAuthentication} Name: ${KeyAccountAuthentication} DependsOn: # Specify the name of the dependent resource definition - KeyNamespaceAccountAuthentication # Depends on KeyNamespaceAccountAuthentication creation AccountNamespace: # Name of the resource definition Type: GS2::Account::Namespace # Specify resource Properties: Name: ${AccountNamespaceName}

Type

Specifies resources to be generated for the service. Specify the entity name from the GS2-Deploy reference page for each service.

Example: Type: GS2::Account::Namespace.

Properties

Specify the value to be given to the property value when the resource is created.

DependsOn

Specifies the name of a dependent resource so that the resource will be created following other resources.

Outputs

Defines the output values that will hold the value and allow the value to be viewed later, e.g., through the management console.

Outputs: AccountNamespaceName: !GetAttr AccountNamespace.Item.Name KeyAccountAuthenticationKeyId: !GetAttr KeyAccountAuthentication.Item.KeyId GatewayNamespaceName: !GetAttr GatewayNamespace.Item.Name

Functions

Functions are available in GS2-Deploy templates.

!GetAttr

The !GetAttr tag can be used to retrieve the property values of the generated results for each resource.

In this example, GS2::Account::Namespace is specified in AccountNamespace, so Namespace is generated in GS2-Account. The result is retrieved in AccountNamespace, and the NameSpace model is stored in AccountNamespace.Item. GetAttr AccountNamespace.Item.

GetAttr tag is assigned the following as reserved words, and the values can be retrieved.

Key ValueTypeDescription
Gs2::RegionstringRegion type
Gs2::OwnerIdstringOwner ID
AccountNamespace: Type: GS2::Account::Namespace Properties: Name: ${AccountNamespaceName} Outputs: AccountNamespaceName: !GetAttr AccountNamespace.Item.Name

!Join

The !Join tag concatenates the strings in the following array. A delimiter (delimiter) can be specified.

Format: !Join [ specify delimiter, [list of strings to concatenate]]

QueueNamespace: Type: GS2::JobQueue::Namespace Properties: Name: ${QueueNamespaceName} PushNotification: GatewayNamespaceId: !Join - ':' - - 'grn' - 'gs2' - !GetAttr Gs2::Region - !GetAttr Gs2::OwnerId - 'gateway' - ${GatewayNamespaceName}