GS2-Deploy/CDK Reference of GS2-Identifier

The template format used when creating stacks with GS2-Deploy, and implementation examples of template output in various languages using CDK

Entity

Resources operated in Deploy process

User

GS2-Identifier User

This entity represents the game developer who has access to the project.

The user has credentials for programmatic access and A password can be registered that allows the user to log into the Management Console and manage the project based on the user’s permissions.

TypeConditionRequiredDefaultValue LimitsDescription
userIdstring
~ 1024 charsUser GRN
namestring
~ 128 charsusername
descriptionstring~ 1024 charsDescription
createdAtlong
NowDatetime of creation
Unix time, milliseconds
Automatically configured on the server
updatedAtlong
NowDatetime of last update
Unix time, milliseconds
Automatically configured on the server
revisionlong00 ~ 9223372036854775805Revision

GetAttr

Generation results of resources that can be obtained with the !GetAttr tag

TypeDescription
ItemUserCreated User

Implementation Example

Type: GS2::Identifier::User
Properties:
  Name: user-0001
  Description: null
import (
    "github.com/gs2io/gs2-golang-cdk/core"
    "github.com/gs2io/gs2-golang-cdk/identifier"
    "github.com/openlyinc/pointy"
)

SampleStack := core.NewStack()
identifier.NewUser(
    &SampleStack,
    "user-0001",
    identifier.UserOptions{},
)

println(SampleStack.Yaml())  // Generate Template
class SampleStack extends \Gs2Cdk\Core\Model\Stack
{
    function __construct() {
        parent::__construct();
        new \Gs2Cdk\Identifier\Model\User(
            stack: $this,
            name: "user-0001"
        );
    }
}

print((new SampleStack())->yaml());  // Generate Template
class SampleStack extends io.gs2.cdk.core.model.Stack
{
    public SampleStack() {
        super();
        new io.gs2.cdk.identifier.model.User(
                this,
                "user-0001"
        );
    }
}

System.out.println(new SampleStack().yaml());  // Generate Template
public class SampleStack : Gs2Cdk.Core.Model.Stack
{
    public SampleStack() {
        new Gs2Cdk.Gs2Identifier.Model.User(
            stack: this,
            name: "user-0001"
        );
    }
}

Debug.Log(new SampleStack().Yaml());  // Generate Template
import core from "@/gs2cdk/core";
import identifier from "@/gs2cdk/identifier";

class SampleStack extends core.Stack
{
    public constructor() {
        super();
        new identifier.model.User(
            this,
            "user-0001"
        );
    }
}

console.log(new SampleStack().yaml());  // Generate Template
from gs2_cdk import Stack, core, identifier

class SampleStack(Stack):

    def __init__(self):
        super().__init__()
        identifier.User(
            stack=self,
            name='user-0001',
        )

print(SampleStack().yaml())  # Generate Template

SecurityPolicy

Security Policy

Define restrictions on the types of APIs that users can use and the resources they can access. Access restriction rules are defined using JSON format definition data called policy documents. For the specifications of policy documents, please refer to the explanation page on policy documents in the development documents.

TypeConditionRequiredDefaultValue LimitsDescription
securityPolicyIdstring
~ 1024 charsSecurity Policy GRN
namestring
~ 128 charsSecurity Policy Name
descriptionstring~ 1024 charsDescription
policystring
~ 524288 charsPolicy Document
createdAtlong
NowDatetime of creation
Unix time, milliseconds
Automatically configured on the server
updatedAtlong
NowDatetime of last update
Unix time, milliseconds
Automatically configured on the server

GetAttr

Generation results of resources that can be obtained with the !GetAttr tag

TypeDescription
ItemSecurityPolicyCreated security policy

Implementation Example

Type: GS2::Identifier::SecurityPolicy
Properties:
  Name: policy-0001
  Description: null
  Policy: {}
import (
    "github.com/gs2io/gs2-golang-cdk/core"
    "github.com/gs2io/gs2-golang-cdk/identifier"
    "github.com/openlyinc/pointy"
)

SampleStack := core.NewStack()
identifier.NewSecurityPolicy(
    &SampleStack,
    "policy-0001",
	identifier.NewPolicy(
		[]identifier.Statement{},
	),
    identifier.SecurityPolicyOptions{},
)

println(SampleStack.Yaml())  // Generate Template
class SampleStack extends \Gs2Cdk\Core\Model\Stack
{
    function __construct() {
        parent::__construct();
        new \Gs2Cdk\Identifier\Model\SecurityPolicy(
            stack: $this,
            name: "policy-0001",
            policy: new \Gs2Cdk\Identifier\Model\Policy([])
        );
    }
}

print((new SampleStack())->yaml());  // Generate Template
class SampleStack extends io.gs2.cdk.core.model.Stack
{
    public SampleStack() {
        super();
        new io.gs2.cdk.identifier.model.SecurityPolicy(
                this,
                "policy-0001",
                null
        );
    }
}

System.out.println(new SampleStack().yaml());  // Generate Template
public class SampleStack : Gs2Cdk.Core.Model.Stack
{
    public SampleStack() {
        new Gs2Cdk.Gs2Identifier.Model.SecurityPolicy(
            stack: this,
            name: "policy-0001",
            policy: null
        );
    }
}

Debug.Log(new SampleStack().Yaml());  // Generate Template
import core from "@/gs2cdk/core";
import identifier from "@/gs2cdk/identifier";
import Policy from "@/gs2cdk/identifier/model/Policy";
import Statement from "@/gs2cdk/identifier/model/Statement";

class SampleStack extends core.Stack
{
    public constructor() {
        super();
        new identifier.model.SecurityPolicy(
            this,
            "policy-0001",
            new Policy(
                [
                    Statement.allowAll()
                ]
            )
        );
    }
}

console.log(new SampleStack().yaml());  // Generate Template
from gs2_cdk import Stack, core, identifier

class SampleStack(Stack):

    def __init__(self):
        super().__init__()
        identifier.SecurityPolicy(
            stack=self,
            name='policy-0001',
            policy=None,
        )

print(SampleStack().yaml())  # Generate Template

Identifier

Credential

An API key is required to access GS2’s API. A credential consists of a client ID and a client secret, and access using the credential is restricted based on the privileges of the user who owns the credential.

TypeConditionRequiredDefaultValue LimitsDescription
clientIdstring
UUID~ 256 charsClient ID
userNamestring
~ 128 charsusername
clientSecretstring
UUID~ 100 charsClient Secret
createdAtlong
NowDatetime of creation
Unix time, milliseconds
Automatically configured on the server
revisionlong00 ~ 9223372036854775805Revision

GetAttr

Generation results of resources that can be obtained with the !GetAttr tag

TypeDescription
ItemIdentifierCredentials created
ClientSecretstringClient Secret

Implementation Example

Type: GS2::Identifier::Identifier
Properties:
  UserName: user-0001
import (
    "github.com/gs2io/gs2-golang-cdk/core"
    "github.com/gs2io/gs2-golang-cdk/identifier"
    "github.com/openlyinc/pointy"
)

SampleStack := core.NewStack()
identifier.NewIdentifier(
    &SampleStack,
    "user-0001",
    identifier.IdentifierOptions{},
)

println(SampleStack.Yaml())  // Generate Template
class SampleStack extends \Gs2Cdk\Core\Model\Stack
{
    function __construct() {
        parent::__construct();
        new \Gs2Cdk\Identifier\Model\Identifier(
            stack: $this,
            userName: "user-0001"
        );
    }
}

print((new SampleStack())->yaml());  // Generate Template
class SampleStack extends io.gs2.cdk.core.model.Stack
{
    public SampleStack() {
        super();
        new io.gs2.cdk.identifier.model.Identifier(
                this,
                "user-0001"
        );
    }
}

System.out.println(new SampleStack().yaml());  // Generate Template
public class SampleStack : Gs2Cdk.Core.Model.Stack
{
    public SampleStack() {
        new Gs2Cdk.Gs2Identifier.Model.Identifier(
            stack: this,
            userName: "user-0001"
        );
    }
}

Debug.Log(new SampleStack().Yaml());  // Generate Template
import core from "@/gs2cdk/core";
import identifier from "@/gs2cdk/identifier";

class SampleStack extends core.Stack
{
    public constructor() {
        super();
        new identifier.model.Identifier(
            this,
            "user-0001"
        );
    }
}

console.log(new SampleStack().yaml());  // Generate Template
from gs2_cdk import Stack, core, identifier

class SampleStack(Stack):

    def __init__(self):
        super().__init__()
        identifier.Identifier(
            stack=self,
            user_name='user-0001',
        )

print(SampleStack().yaml())  # Generate Template

Password

Password

Password for logging into the Management Console based on user permissions. A password allows different accounts to log in to a single project and still limit the information they have access to.

TypeConditionRequiredDefaultValue LimitsDescription
passwordIdstring
~ 1024 charsPassword GRN
userIdstring
~ 1024 charsUser GRN
userNamestring
~ 128 charsusername
enableTwoFactorAuthenticationString Enum
enum {
  “RFC6238”,
  “Disable”
}
“Disable”~ 128 charsTwo-factor authentication
Enumerator String DefinitionDescription
“RFC6238”Enable
“Disable”Disable
twoFactorAuthenticationSettingTwoFactorAuthenticationSetting{enableTwoFactorAuthentication} == “RFC6238”Two-factor authentication setting
* Enabled if enableTwoFactorAuthentication is “RFC6238”
createdAtlong
NowDatetime of creation
Unix time, milliseconds
Automatically configured on the server
revisionlong00 ~ 9223372036854775805Revision

GetAttr

Generation results of resources that can be obtained with the !GetAttr tag

TypeDescription
ItemPasswordPassword created

Implementation Example

Type: GS2::Identifier::Password
Properties:
  UserName: user-0001
  Password: password-0001
import (
    "github.com/gs2io/gs2-golang-cdk/core"
    "github.com/gs2io/gs2-golang-cdk/identifier"
    "github.com/openlyinc/pointy"
)

SampleStack := core.NewStack()
identifier.NewPassword(
    &SampleStack,
    "user-0001",
    "password-0001",
    identifier.PasswordOptions{},
)

println(SampleStack.Yaml())  // Generate Template
class SampleStack extends \Gs2Cdk\Core\Model\Stack
{
    function __construct() {
        parent::__construct();
        new \Gs2Cdk\Identifier\Model\Password(
            stack: $this,
            userName: "user-0001",
            password: "password-0001"
        );
    }
}

print((new SampleStack())->yaml());  // Generate Template
class SampleStack extends io.gs2.cdk.core.model.Stack
{
    public SampleStack() {
        super();
        new io.gs2.cdk.identifier.model.Password(
                this,
                "user-0001",
                "password-0001"
        );
    }
}

System.out.println(new SampleStack().yaml());  // Generate Template
public class SampleStack : Gs2Cdk.Core.Model.Stack
{
    public SampleStack() {
        new Gs2Cdk.Gs2Identifier.Model.Password(
            stack: this,
            userName: "user-0001",
            password: "password-0001"
        );
    }
}

Debug.Log(new SampleStack().Yaml());  // Generate Template
import core from "@/gs2cdk/core";
import identifier from "@/gs2cdk/identifier";

class SampleStack extends core.Stack
{
    public constructor() {
        super();
        new identifier.model.Password(
            this,
            "user-0001",
            "password-0001"
        );
    }
}

console.log(new SampleStack().yaml());  // Generate Template
from gs2_cdk import Stack, core, identifier

class SampleStack(Stack):

    def __init__(self):
        super().__init__()
        identifier.Password(
            stack=self,
            user_name='user-0001',
            password='password-0001',
        )

print(SampleStack().yaml())  # Generate Template

TwoFactorAuthenticationSetting

Two-factor authentication setting

TypeConditionRequiredDefaultValue LimitsDescription
statusString Enum
enum {
  “Verifying”,
  “Enable”
}
“Verifying”~ 128 charsStatus
Enumerator String DefinitionDescription
“Verifying”Verifying
“Enable”Enable

AttachSecurityPolicy

Attached Security Policy

TypeConditionRequiredDefaultValue LimitsDescription
userIdstring
~ 1024 charsUser GRN
securityPolicyIdsList<string>[]0 ~ 100 itemsList of GRNs in Security Policy
attachedAtlong
NowDatetime of creation
Unix time, milliseconds
Automatically configured on the server
revisionlong00 ~ 9223372036854775805Revision

GetAttr

Generation results of resources that can be obtained with the !GetAttr tag

TypeDescription
ItemsSecurityPolicy[]List of security policies newly assigned to users

Implementation Example

Type: GS2::Identifier::AttachSecurityPolicy
Properties:
  UserName: user-0001
  SecurityPolicyId: securityPolicyId-0001
import (
    "github.com/gs2io/gs2-golang-cdk/core"
    "github.com/gs2io/gs2-golang-cdk/identifier"
    "github.com/openlyinc/pointy"
)

SampleStack := core.NewStack()
identifier.NewAttachSecurityPolicy(
    &SampleStack,
    "user-0001",
    "securityPolicyId-0001",
    identifier.AttachSecurityPolicyOptions{},
)

println(SampleStack.Yaml())  // Generate Template
class SampleStack extends \Gs2Cdk\Core\Model\Stack
{
    function __construct() {
        parent::__construct();
        new \Gs2Cdk\Identifier\Model\AttachSecurityPolicy(
            stack: $this,
            userName: "user-0001",
            securityPolicyId: "securityPolicyId-0001"
        );
    }
}

print((new SampleStack())->yaml());  // Generate Template
class SampleStack extends io.gs2.cdk.core.model.Stack
{
    public SampleStack() {
        super();
        new io.gs2.cdk.identifier.model.AttachSecurityPolicy(
                this,
                "user-0001",
                "securityPolicyId-0001"
        );
    }
}

System.out.println(new SampleStack().yaml());  // Generate Template
public class SampleStack : Gs2Cdk.Core.Model.Stack
{
    public SampleStack() {
        new Gs2Cdk.Gs2Identifier.Model.AttachSecurityPolicy(
            stack: this,
            userName: "user-0001",
            securityPolicyId: "securityPolicyId-0001"
        );
    }
}

Debug.Log(new SampleStack().Yaml());  // Generate Template
import core from "@/gs2cdk/core";
import identifier from "@/gs2cdk/identifier";

class SampleStack extends core.Stack
{
    public constructor() {
        super();
        new identifier.model.AttachSecurityPolicy(
            this,
            "user-0001",
            "securityPolicyId-0001"
        );
    }
}

console.log(new SampleStack().yaml());  // Generate Template
from gs2_cdk import Stack, core, identifier

class SampleStack(Stack):

    def __init__(self):
        super().__init__()
        identifier.AttachSecurityPolicy(
            stack=self,
            user_name='user-0001',
            security_policy_id='securityPolicyId-0001',
        )

print(SampleStack().yaml())  # Generate Template