@aws-cdk/aws-gamelift-alpha 2.45.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/build.js ADDED
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var _a, _b;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Build = exports.OperatingSystem = exports.BuildBase = void 0;
5
+ const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
6
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7
+ const iam = require("aws-cdk-lib/aws-iam");
8
+ const cdk = require("aws-cdk-lib");
9
+ const content_1 = require("./content");
10
+ const aws_gamelift_1 = require("aws-cdk-lib/aws-gamelift");
11
+ /**
12
+ * Base class for new and imported GameLift server build.
13
+ */
14
+ class BuildBase extends cdk.Resource {
15
+ }
16
+ exports.BuildBase = BuildBase;
17
+ _a = JSII_RTTI_SYMBOL_1;
18
+ BuildBase[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.BuildBase", version: "2.45.0-alpha.0" };
19
+ /**
20
+ * The operating system that the game server binaries are built to run on.
21
+ */
22
+ var OperatingSystem;
23
+ (function (OperatingSystem) {
24
+ OperatingSystem["AMAZON_LINUX"] = "AMAZON_LINUX";
25
+ OperatingSystem["AMAZON_LINUX_2"] = "AMAZON_LINUX_2";
26
+ OperatingSystem["WINDOWS_2012"] = "WINDOWS_2012";
27
+ })(OperatingSystem = exports.OperatingSystem || (exports.OperatingSystem = {}));
28
+ /**
29
+ * A GameLift build, that is installed and runs on instances in an Amazon GameLift fleet. It consists of
30
+ * a zip file with all of the components of the game server build.
31
+ *
32
+ * @see https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-cli-uploading.html
33
+ *
34
+ * @resource AWS::GameLift::Build
35
+ */
36
+ class Build extends BuildBase {
37
+ constructor(scope, id, props) {
38
+ super(scope, id, {
39
+ physicalName: props.buildName,
40
+ });
41
+ try {
42
+ jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_BuildProps(props);
43
+ }
44
+ catch (error) {
45
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
46
+ Error.captureStackTrace(error, Build);
47
+ }
48
+ throw error;
49
+ }
50
+ if (props.buildName && !cdk.Token.isUnresolved(props.buildName)) {
51
+ if (props.buildName.length > 1024) {
52
+ throw new Error(`Build name can not be longer than 1024 characters but has ${props.buildName.length} characters.`);
53
+ }
54
+ }
55
+ this.role = props.role ?? new iam.Role(this, 'ServiceRole', {
56
+ assumedBy: new iam.ServicePrincipal('gamelift.amazonaws.com'),
57
+ });
58
+ this.grantPrincipal = this.role;
59
+ const content = props.content.bind(this, this.role);
60
+ const resource = new aws_gamelift_1.CfnBuild(this, 'Resource', {
61
+ name: props.buildName,
62
+ version: props.buildVersion,
63
+ operatingSystem: props.operatingSystem,
64
+ storageLocation: {
65
+ bucket: content.s3Location && content.s3Location.bucketName,
66
+ key: content.s3Location && content.s3Location.objectKey,
67
+ objectVersion: content.s3Location && content.s3Location.objectVersion,
68
+ roleArn: this.role.roleArn,
69
+ },
70
+ });
71
+ this.buildId = resource.ref;
72
+ }
73
+ /**
74
+ * Create a new Build from s3 content
75
+ */
76
+ static fromBucket(scope, id, bucket, key, objectVersion) {
77
+ return new Build(scope, id, {
78
+ content: content_1.Content.fromBucket(bucket, key, objectVersion),
79
+ });
80
+ }
81
+ /**
82
+ * Create a new Build from asset content
83
+ */
84
+ static fromAsset(scope, id, path, options) {
85
+ return new Build(scope, id, {
86
+ content: content_1.Content.fromAsset(path, options),
87
+ });
88
+ }
89
+ /**
90
+ * Import a build into CDK using its identifier
91
+ */
92
+ static fromBuildId(scope, id, buildId) {
93
+ return this.fromBuildAttributes(scope, id, { buildId });
94
+ }
95
+ /**
96
+ * Import an existing build from its attributes.
97
+ */
98
+ static fromBuildAttributes(scope, id, attrs) {
99
+ try {
100
+ jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_BuildAttributes(attrs);
101
+ }
102
+ catch (error) {
103
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
104
+ Error.captureStackTrace(error, this.fromBuildAttributes);
105
+ }
106
+ throw error;
107
+ }
108
+ class Import extends BuildBase {
109
+ constructor() {
110
+ super(...arguments);
111
+ this.buildId = attrs.buildId;
112
+ this.grantPrincipal = attrs.role ?? new iam.UnknownPrincipal({ resource: this });
113
+ }
114
+ }
115
+ return new Import(scope, id);
116
+ }
117
+ }
118
+ exports.Build = Build;
119
+ _b = JSII_RTTI_SYMBOL_1;
120
+ Build[_b] = { fqn: "@aws-cdk/aws-gamelift-alpha.Build", version: "2.45.0-alpha.0" };
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJidWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQ0FBMkM7QUFHM0MsbUNBQW1DO0FBRW5DLHVDQUFvQztBQUNwQywyREFBb0Q7QUFxQnBEOztHQUVHO0FBQ0gsTUFBc0IsU0FBVSxTQUFRLEdBQUcsQ0FBQyxRQUFROztBQUFwRCw4QkFPQzs7O0FBRUQ7O0dBRUc7QUFDSCxJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDekIsZ0RBQTZCLENBQUE7SUFDN0Isb0RBQWlDLENBQUE7SUFDakMsZ0RBQTZCLENBQUE7QUFDL0IsQ0FBQyxFQUpXLGVBQWUsR0FBZix1QkFBZSxLQUFmLHVCQUFlLFFBSTFCO0FBd0VEOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLEtBQU0sU0FBUSxTQUFTO0lBc0RsQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlCO1FBQ3pELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsWUFBWSxFQUFFLEtBQUssQ0FBQyxTQUFTO1NBQzlCLENBQUMsQ0FBQzs7Ozs7OytDQXpETSxLQUFLOzs7O1FBMkRkLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMvRCxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRTtnQkFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2REFBNkQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLGNBQWMsQ0FBQyxDQUFDO2FBQ3BIO1NBQ0Y7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDMUQsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDO1NBQzlELENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNoQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBELE1BQU0sUUFBUSxHQUFHLElBQUksdUJBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzlDLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUztZQUNyQixPQUFPLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDM0IsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLGVBQWUsRUFBRTtnQkFDZixNQUFNLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVU7Z0JBQzNELEdBQUcsRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUztnQkFDdkQsYUFBYSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhO2dCQUNyRSxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO2FBQzNCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO0tBQzdCO0lBakZEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxNQUFrQixFQUFFLEdBQVcsRUFBRSxhQUFzQjtRQUNyRyxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDMUIsT0FBTyxFQUFFLGlCQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDO1NBQ3hELENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLElBQVksRUFBRSxPQUFnQztRQUMzRixPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDMUIsT0FBTyxFQUFFLGlCQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7U0FDMUMsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7U0FFSztJQUNMLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsT0FBZTtRQUM5RCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztLQUN6RDtJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCOzs7Ozs7Ozs7O1FBQzdFLE1BQU0sTUFBTyxTQUFRLFNBQVM7WUFBOUI7O2dCQUNrQixZQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDeEIsbUJBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDOUYsQ0FBQztTQUFBO1FBRUQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDOUI7O0FBckNILHNCQXNGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzM19hc3NldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDb250ZW50IH0gZnJvbSAnLi9jb250ZW50JztcbmltcG9ydCB7IENmbkJ1aWxkIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdhbWVsaWZ0JztcblxuLyoqXG4gKiBZb3VyIGN1c3RvbS1idWlsdCBnYW1lIHNlcnZlciBzb2Z0d2FyZSB0aGF0IHJ1bnMgb24gR2FtZUxpZnQgYW5kIGhvc3RzIGdhbWUgc2Vzc2lvbnMgZm9yIHlvdXIgcGxheWVycy5cbiAqIEEgZ2FtZSBidWlsZCByZXByZXNlbnRzIHRoZSBzZXQgb2YgZmlsZXMgdGhhdCBydW4geW91ciBnYW1lIHNlcnZlciBvbiBhIHBhcnRpY3VsYXIgb3BlcmF0aW5nIHN5c3RlbS5cbiAqIFlvdSBjYW4gaGF2ZSBtYW55IGRpZmZlcmVudCBidWlsZHMsIHN1Y2ggYXMgZm9yIGRpZmZlcmVudCBmbGF2b3JzIG9mIHlvdXIgZ2FtZS5cbiAqIFRoZSBnYW1lIGJ1aWxkIG11c3QgYmUgaW50ZWdyYXRlZCB3aXRoIHRoZSBHYW1lTGlmdCBzZXJ2aWNlLlxuICogWW91IHVwbG9hZCBnYW1lIGJ1aWxkIGZpbGVzIHRvIHRoZSBHYW1lTGlmdCBzZXJ2aWNlIGluIHRoZSBSZWdpb25zIHdoZXJlIHlvdSBwbGFuIHRvIHNldCB1cCBmbGVldHMuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2dhbWVsaWZ0LWJ1aWxkLWNsaS11cGxvYWRpbmcuaHRtbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElCdWlsZCBleHRlbmRzIGNkay5JUmVzb3VyY2UsIGlhbS5JR3JhbnRhYmxlIHtcblxuICAvKipcbiAgICogVGhlIElkZW50aWZpZXIgb2YgdGhlIGJ1aWxkLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBidWlsZElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgbmV3IGFuZCBpbXBvcnRlZCBHYW1lTGlmdCBzZXJ2ZXIgYnVpbGQuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCdWlsZEJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJQnVpbGQge1xuICAvKipcbiAgICAgKiBUaGUgSWRlbnRpZmllciBvZiB0aGUgYnVpbGQuXG4gICAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBidWlsZElkOiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsOiBpYW0uSVByaW5jaXBhbDtcbn1cblxuLyoqXG4gKiBUaGUgb3BlcmF0aW5nIHN5c3RlbSB0aGF0IHRoZSBnYW1lIHNlcnZlciBiaW5hcmllcyBhcmUgYnVpbHQgdG8gcnVuIG9uLlxuICovXG5leHBvcnQgZW51bSBPcGVyYXRpbmdTeXN0ZW0ge1xuICBBTUFaT05fTElOVVggPSAnQU1BWk9OX0xJTlVYJyxcbiAgQU1BWk9OX0xJTlVYXzIgPSAnQU1BWk9OX0xJTlVYXzInLFxuICBXSU5ET1dTXzIwMTIgPSAnV0lORE9XU18yMDEyJ1xufVxuXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIEJ1aWxkIGNvbnRlbnQgZGVmaW5lZCBvdXRzaWRlIG9mIHRoaXMgc3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAgICogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGJ1aWxkXG4gICAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSBhc3N1bWVkIGJ5IEdhbWVMaWZ0IHRvIGFjY2VzcyBzZXJ2ZXIgYnVpbGQgaW4gUzMuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgbmV3IGJ1aWxkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRQcm9wcyB7XG4gIC8qKlxuICAgICAqIE5hbWUgb2YgdGhpcyBidWlsZFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgTm8gbmFtZVxuICAgICAqL1xuICByZWFkb25seSBidWlsZE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAgICogVmVyc2lvbiBvZiB0aGlzIGJ1aWxkXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBObyB2ZXJzaW9uXG4gICAgICovXG4gIHJlYWRvbmx5IGJ1aWxkVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICAgKiBUaGUgb3BlcmF0aW5nIHN5c3RlbSB0aGF0IHRoZSBnYW1lIHNlcnZlciBiaW5hcmllcyBhcmUgYnVpbHQgdG8gcnVuIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgTm8gdmVyc2lvblxuICAgICAqL1xuICByZWFkb25seSBvcGVyYXRpbmdTeXN0ZW0/OiBPcGVyYXRpbmdTeXN0ZW07XG5cbiAgLyoqXG4gICAgICogVGhlIGdhbWUgYnVpbGQgZmlsZSBzdG9yYWdlXG4gICAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IENvbnRlbnQ7XG5cbiAgLyoqXG4gICAgKiBUaGUgSUFNIHJvbGUgYXNzdW1lZCBieSBHYW1lTGlmdCB0byBhY2Nlc3Mgc2VydmVyIGJ1aWxkIGluIFMzLlxuICAgICogSWYgcHJvdmlkaW5nIGEgY3VzdG9tIHJvbGUsIGl0IG5lZWRzIHRvIHRydXN0IHRoZSBHYW1lTGlmdCBzZXJ2aWNlIHByaW5jaXBhbCAoZ2FtZWxpZnQuYW1hem9uYXdzLmNvbSkgYW5kIGJlIGdyYW50ZWQgc3VmZmljaWVudCBwZXJtaXNzaW9uc1xuICAgICogdG8gaGF2ZSBSZWFkIGFjY2VzcyB0byBhIHNwZWNpZmljIGtleSBjb250ZW50IGludG8gYSBzcGVjaWZpYyBTMyBidWNrZXQuXG4gICAgKiBCZWxvdyBhbiBleGFtcGxlIG9mIHJlcXVpcmVkIHBlcm1pc3Npb246XG4gICAgKiB7XG4gICAgKiAgXCJWZXJzaW9uXCI6IFwiMjAxMi0xMC0xN1wiLFxuICAgICogIFwiU3RhdGVtZW50XCI6IFt7XG4gICAgKiAgICAgICAgXCJFZmZlY3RcIjogXCJBbGxvd1wiLFxuICAgICogICAgICAgIFwiQWN0aW9uXCI6IFtcbiAgICAqICAgICAgICAgICAgXCJzMzpHZXRPYmplY3RcIixcbiAgICAqICAgICAgICAgICAgXCJzMzpHZXRPYmplY3RWZXJzaW9uXCJcbiAgICAqICAgICAgICBdLFxuICAgICogICAgICAgIFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnMzOjo6YnVja2V0LW5hbWUvb2JqZWN0LW5hbWVcIlxuICAgICogIH1dXG4gICAgKn1cbiAgICAqXG4gICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvc2VjdXJpdHlfaWFtX2lkLWJhc2VkLXBvbGljeS1leGFtcGxlcy5odG1sI3NlY3VyaXR5X2lhbV9pZC1iYXNlZC1wb2xpY3ktZXhhbXBsZXMtYWNjZXNzLXN0b3JhZ2UtbG9jXG4gICAgKlxuICAgICogQGRlZmF1bHQgLSBhIHJvbGUgd2lsbCBiZSBjcmVhdGVkIHdpdGggZGVmYXVsdCBwZXJtaXNzaW9ucy5cbiAgICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xufVxuXG4vKipcbiAqIEEgR2FtZUxpZnQgYnVpbGQsIHRoYXQgaXMgaW5zdGFsbGVkIGFuZCBydW5zIG9uIGluc3RhbmNlcyBpbiBhbiBBbWF6b24gR2FtZUxpZnQgZmxlZXQuIEl0IGNvbnNpc3RzIG9mXG4gKiBhIHppcCBmaWxlIHdpdGggYWxsIG9mIHRoZSBjb21wb25lbnRzIG9mIHRoZSBnYW1lIHNlcnZlciBidWlsZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvZ2FtZWxpZnQtYnVpbGQtY2xpLXVwbG9hZGluZy5odG1sXG4gKlxuICogQHJlc291cmNlIEFXUzo6R2FtZUxpZnQ6OkJ1aWxkXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWlsZCBleHRlbmRzIEJ1aWxkQmFzZSB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBCdWlsZCBmcm9tIHMzIGNvbnRlbnRcbiAgICovXG4gIHN0YXRpYyBmcm9tQnVja2V0KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGJ1Y2tldDogczMuSUJ1Y2tldCwga2V5OiBzdHJpbmcsIG9iamVjdFZlcnNpb24/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IEJ1aWxkKHNjb3BlLCBpZCwge1xuICAgICAgY29udGVudDogQ29udGVudC5mcm9tQnVja2V0KGJ1Y2tldCwga2V5LCBvYmplY3RWZXJzaW9uKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgQnVpbGQgZnJvbSBhc3NldCBjb250ZW50XG4gICAqL1xuICBzdGF0aWMgZnJvbUFzc2V0KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgb3B0aW9ucz86IHMzX2Fzc2V0cy5Bc3NldE9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEJ1aWxkKHNjb3BlLCBpZCwge1xuICAgICAgY29udGVudDogQ29udGVudC5mcm9tQXNzZXQocGF0aCwgb3B0aW9ucyksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICAgKiBJbXBvcnQgYSBidWlsZCBpbnRvIENESyB1c2luZyBpdHMgaWRlbnRpZmllclxuICAgICAqL1xuICBzdGF0aWMgZnJvbUJ1aWxkSWQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYnVpbGRJZDogc3RyaW5nKTogSUJ1aWxkIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tQnVpbGRBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBidWlsZElkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBidWlsZCBmcm9tIGl0cyBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgc3RhdGljIGZyb21CdWlsZEF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IEJ1aWxkQXR0cmlidXRlcyk6IElCdWlsZCB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQnVpbGRCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBidWlsZElkID0gYXR0cnMuYnVpbGRJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbCA9IGF0dHJzLnJvbGUgPz8gbmV3IGlhbS5Vbmtub3duUHJpbmNpcGFsKHsgcmVzb3VyY2U6IHRoaXMgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSWRlbnRpZmllciBvZiB0aGUgYnVpbGQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgR2FtZUxpZnQgYXNzdW1lcyB0byBhY2NjZXNzIHNlcnZlciBidWlsZCBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIHByaW5jaXBhbCB0aGlzIEdhbWVMaWZ0IEJ1aWxkIGlzIHVzaW5nLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsOiBpYW0uSVByaW5jaXBhbDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQnVpbGRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy5idWlsZE5hbWUsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuYnVpbGROYW1lICYmICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmJ1aWxkTmFtZSkpIHtcbiAgICAgIGlmIChwcm9wcy5idWlsZE5hbWUubGVuZ3RoID4gMTAyNCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJ1aWxkIG5hbWUgY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAxMDI0IGNoYXJhY3RlcnMgYnV0IGhhcyAke3Byb3BzLmJ1aWxkTmFtZS5sZW5ndGh9IGNoYXJhY3RlcnMuYCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucm9sZSA9IHByb3BzLnJvbGUgPz8gbmV3IGlhbS5Sb2xlKHRoaXMsICdTZXJ2aWNlUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdnYW1lbGlmdC5hbWF6b25hd3MuY29tJyksXG4gICAgfSk7XG4gICAgdGhpcy5ncmFudFByaW5jaXBhbCA9IHRoaXMucm9sZTtcbiAgICBjb25zdCBjb250ZW50ID0gcHJvcHMuY29udGVudC5iaW5kKHRoaXMsIHRoaXMucm9sZSk7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5CdWlsZCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiBwcm9wcy5idWlsZE5hbWUsXG4gICAgICB2ZXJzaW9uOiBwcm9wcy5idWlsZFZlcnNpb24sXG4gICAgICBvcGVyYXRpbmdTeXN0ZW06IHByb3BzLm9wZXJhdGluZ1N5c3RlbSxcbiAgICAgIHN0b3JhZ2VMb2NhdGlvbjoge1xuICAgICAgICBidWNrZXQ6IGNvbnRlbnQuczNMb2NhdGlvbiAmJiBjb250ZW50LnMzTG9jYXRpb24uYnVja2V0TmFtZSxcbiAgICAgICAga2V5OiBjb250ZW50LnMzTG9jYXRpb24gJiYgY29udGVudC5zM0xvY2F0aW9uLm9iamVjdEtleSxcbiAgICAgICAgb2JqZWN0VmVyc2lvbjogY29udGVudC5zM0xvY2F0aW9uICYmIGNvbnRlbnQuczNMb2NhdGlvbi5vYmplY3RWZXJzaW9uLFxuICAgICAgICByb2xlQXJuOiB0aGlzLnJvbGUucm9sZUFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmJ1aWxkSWQgPSByZXNvdXJjZS5yZWY7XG4gIH1cblxuXG59XG4iXX0=
@@ -0,0 +1,59 @@
1
+ import * as iam from 'aws-cdk-lib/aws-iam';
2
+ import * as s3 from 'aws-cdk-lib/aws-s3';
3
+ import * as s3_assets from 'aws-cdk-lib/aws-s3-assets';
4
+ import { Construct } from 'constructs';
5
+ /**
6
+ * Before deploying your GameLift-enabled multiplayer game servers for hosting with the GameLift service, you need to upload your game server files.
7
+ * The class helps you on preparing and uploading custom game server build files or Realtime Servers server script files.
8
+ */
9
+ export declare abstract class Content {
10
+ /**
11
+ * Game content as an S3 object.
12
+ * @param bucket The S3 bucket
13
+ * @param key The object key
14
+ * @param objectVersion Optional S3 ob ject version
15
+ */
16
+ static fromBucket(bucket: s3.IBucket, key: string, objectVersion?: string): S3Content;
17
+ /**
18
+ * Loads the game content from a local disk path.
19
+ *
20
+ * @param path Either a directory with the game content bundle or a .zip file
21
+ */
22
+ static fromAsset(path: string, options?: s3_assets.AssetOptions): AssetContent;
23
+ /**
24
+ * Called when the Build is initialized to allow this object to bind
25
+ */
26
+ abstract bind(scope: Construct, grantable: iam.IGrantable): ContentConfig;
27
+ }
28
+ /**
29
+ * Result of binding `Content` into a `Build`.
30
+ */
31
+ export interface ContentConfig {
32
+ /**
33
+ * The location of the content in S3.
34
+ */
35
+ readonly s3Location: s3.Location;
36
+ }
37
+ /**
38
+ * Game content from an S3 archive.
39
+ */
40
+ export declare class S3Content extends Content {
41
+ private readonly bucket;
42
+ private key;
43
+ private objectVersion?;
44
+ constructor(bucket: s3.IBucket, key: string, objectVersion?: string | undefined);
45
+ bind(_scope: Construct, grantable: iam.IGrantable): ContentConfig;
46
+ }
47
+ /**
48
+ * Game content from a local directory.
49
+ */
50
+ export declare class AssetContent extends Content {
51
+ readonly path: string;
52
+ private readonly options;
53
+ private asset?;
54
+ /**
55
+ * @param path The path to the asset file or directory.
56
+ */
57
+ constructor(path: string, options?: s3_assets.AssetOptions);
58
+ bind(scope: Construct, grantable: iam.IGrantable): ContentConfig;
59
+ }
package/lib/content.js ADDED
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var _a, _b, _c;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AssetContent = exports.S3Content = exports.Content = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const s3_assets = require("aws-cdk-lib/aws-s3-assets");
7
+ const cdk = require("aws-cdk-lib");
8
+ /**
9
+ * Before deploying your GameLift-enabled multiplayer game servers for hosting with the GameLift service, you need to upload your game server files.
10
+ * The class helps you on preparing and uploading custom game server build files or Realtime Servers server script files.
11
+ */
12
+ class Content {
13
+ /**
14
+ * Game content as an S3 object.
15
+ * @param bucket The S3 bucket
16
+ * @param key The object key
17
+ * @param objectVersion Optional S3 ob ject version
18
+ */
19
+ static fromBucket(bucket, key, objectVersion) {
20
+ return new S3Content(bucket, key, objectVersion);
21
+ }
22
+ /**
23
+ * Loads the game content from a local disk path.
24
+ *
25
+ * @param path Either a directory with the game content bundle or a .zip file
26
+ */
27
+ static fromAsset(path, options) {
28
+ return new AssetContent(path, options);
29
+ }
30
+ }
31
+ exports.Content = Content;
32
+ _a = JSII_RTTI_SYMBOL_1;
33
+ Content[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.Content", version: "2.45.0-alpha.0" };
34
+ /**
35
+ * Game content from an S3 archive.
36
+ */
37
+ class S3Content extends Content {
38
+ constructor(bucket, key, objectVersion) {
39
+ super();
40
+ this.bucket = bucket;
41
+ this.key = key;
42
+ this.objectVersion = objectVersion;
43
+ if (!bucket.bucketName) {
44
+ throw new Error('bucketName is undefined for the provided bucket');
45
+ }
46
+ }
47
+ bind(_scope, grantable) {
48
+ this.bucket.grantRead(grantable, this.key);
49
+ return {
50
+ s3Location: {
51
+ bucketName: this.bucket.bucketName,
52
+ objectKey: this.key,
53
+ objectVersion: this.objectVersion,
54
+ },
55
+ };
56
+ }
57
+ }
58
+ exports.S3Content = S3Content;
59
+ _b = JSII_RTTI_SYMBOL_1;
60
+ S3Content[_b] = { fqn: "@aws-cdk/aws-gamelift-alpha.S3Content", version: "2.45.0-alpha.0" };
61
+ /**
62
+ * Game content from a local directory.
63
+ */
64
+ class AssetContent extends Content {
65
+ /**
66
+ * @param path The path to the asset file or directory.
67
+ */
68
+ constructor(path, options = {}) {
69
+ super();
70
+ this.path = path;
71
+ this.options = options;
72
+ }
73
+ bind(scope, grantable) {
74
+ // If the same AssetContent is used multiple times, retain only the first instantiation.
75
+ if (!this.asset) {
76
+ this.asset = new s3_assets.Asset(scope, 'Content', {
77
+ path: this.path,
78
+ ...this.options,
79
+ });
80
+ }
81
+ else if (cdk.Stack.of(this.asset) !== cdk.Stack.of(scope)) {
82
+ throw new Error(`Asset is already associated with another stack '${cdk.Stack.of(this.asset).stackName}'. ` +
83
+ 'Create a new Content instance for every stack.');
84
+ }
85
+ this.asset.grantRead(grantable);
86
+ if (!this.asset.isZipArchive) {
87
+ throw new Error(`Asset must be a .zip file or a directory (${this.path})`);
88
+ }
89
+ return {
90
+ s3Location: {
91
+ bucketName: this.asset.s3BucketName,
92
+ objectKey: this.asset.s3ObjectKey,
93
+ },
94
+ };
95
+ }
96
+ }
97
+ exports.AssetContent = AssetContent;
98
+ _c = JSII_RTTI_SYMBOL_1;
99
+ AssetContent[_c] = { fqn: "@aws-cdk/aws-gamelift-alpha.AssetContent", version: "2.45.0-alpha.0" };
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSx1REFBdUQ7QUFDdkQsbUNBQW1DO0FBR25DOzs7R0FHRztBQUNILE1BQXNCLE9BQU87SUFDM0I7Ozs7O1NBS0s7SUFDRSxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQWtCLEVBQUUsR0FBVyxFQUFFLGFBQXNCO1FBQzlFLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztLQUNsRDtJQUdEOzs7O1NBSUs7SUFDRSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQVksRUFBRSxPQUFnQztRQUNwRSxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztLQUN4Qzs7QUFuQkgsMEJBMEJDOzs7QUFZRDs7R0FFRztBQUNILE1BQWEsU0FBVSxTQUFRLE9BQU87SUFFcEMsWUFBNkIsTUFBa0IsRUFBVSxHQUFXLEVBQVUsYUFBc0I7UUFDbEcsS0FBSyxFQUFFLENBQUM7UUFEbUIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBUztRQUVsRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7U0FDcEU7S0FDRjtJQUVNLElBQUksQ0FBQyxNQUFpQixFQUFFLFNBQXlCO1FBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsT0FBTztZQUNMLFVBQVUsRUFBRTtnQkFDVixVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO2dCQUNsQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ25CLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNsQztTQUNGLENBQUM7S0FDSDs7QUFsQkgsOEJBbUJDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLE9BQU87SUFHdkM7O09BRUc7SUFDSCxZQUE0QixJQUFZLEVBQW1CLFVBQWtDLEVBQUc7UUFDOUYsS0FBSyxFQUFFLENBQUM7UUFEa0IsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFtQixZQUFPLEdBQVAsT0FBTyxDQUE4QjtLQUUvRjtJQUVNLElBQUksQ0FBQyxLQUFnQixFQUFFLFNBQXlCO1FBQ3JELHdGQUF3RjtRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQ2pELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixHQUFHLElBQUksQ0FBQyxPQUFPO2FBQ2hCLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsS0FBSztnQkFDeEcsZ0RBQWdELENBQUMsQ0FBQztTQUNyRDtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRTtZQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUM1RTtRQUVELE9BQU87WUFDTCxVQUFVLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtnQkFDbkMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVzthQUNsQztTQUNGLENBQUM7S0FDSDs7QUFqQ0gsb0NBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHMzX2Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBCZWZvcmUgZGVwbG95aW5nIHlvdXIgR2FtZUxpZnQtZW5hYmxlZCBtdWx0aXBsYXllciBnYW1lIHNlcnZlcnMgZm9yIGhvc3Rpbmcgd2l0aCB0aGUgR2FtZUxpZnQgc2VydmljZSwgeW91IG5lZWQgdG8gdXBsb2FkIHlvdXIgZ2FtZSBzZXJ2ZXIgZmlsZXMuXG4gKiBUaGUgY2xhc3MgaGVscHMgeW91IG9uIHByZXBhcmluZyBhbmQgdXBsb2FkaW5nIGN1c3RvbSBnYW1lIHNlcnZlciBidWlsZCBmaWxlcyBvciBSZWFsdGltZSBTZXJ2ZXJzIHNlcnZlciBzY3JpcHQgZmlsZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb250ZW50IHtcbiAgLyoqXG4gICAgICogR2FtZSBjb250ZW50IGFzIGFuIFMzIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gYnVja2V0IFRoZSBTMyBidWNrZXRcbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBvYmplY3Qga2V5XG4gICAgICogQHBhcmFtIG9iamVjdFZlcnNpb24gT3B0aW9uYWwgUzMgb2IgamVjdCB2ZXJzaW9uXG4gICAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJ1Y2tldChidWNrZXQ6IHMzLklCdWNrZXQsIGtleTogc3RyaW5nLCBvYmplY3RWZXJzaW9uPzogc3RyaW5nKTogUzNDb250ZW50IHtcbiAgICByZXR1cm4gbmV3IFMzQ29udGVudChidWNrZXQsIGtleSwgb2JqZWN0VmVyc2lvbik7XG4gIH1cblxuXG4gIC8qKlxuICAgICAqIExvYWRzIHRoZSBnYW1lIGNvbnRlbnQgZnJvbSBhIGxvY2FsIGRpc2sgcGF0aC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXRoIEVpdGhlciBhIGRpcmVjdG9yeSB3aXRoIHRoZSBnYW1lIGNvbnRlbnQgYnVuZGxlIG9yIGEgLnppcCBmaWxlXG4gICAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFzc2V0KHBhdGg6IHN0cmluZywgb3B0aW9ucz86IHMzX2Fzc2V0cy5Bc3NldE9wdGlvbnMpOiBBc3NldENvbnRlbnQge1xuICAgIHJldHVybiBuZXcgQXNzZXRDb250ZW50KHBhdGgsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gdGhlIEJ1aWxkIGlzIGluaXRpYWxpemVkIHRvIGFsbG93IHRoaXMgb2JqZWN0IHRvIGJpbmRcbiAgICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGJpbmQoc2NvcGU6IENvbnN0cnVjdCwgZ3JhbnRhYmxlOiBpYW0uSUdyYW50YWJsZSk6IENvbnRlbnRDb25maWc7XG5cbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYmluZGluZyBgQ29udGVudGAgaW50byBhIGBCdWlsZGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudENvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIGNvbnRlbnQgaW4gUzMuXG4gICAqL1xuICByZWFkb25seSBzM0xvY2F0aW9uOiBzMy5Mb2NhdGlvbjtcbn1cblxuLyoqXG4gKiBHYW1lIGNvbnRlbnQgZnJvbSBhbiBTMyBhcmNoaXZlLlxuICovXG5leHBvcnQgY2xhc3MgUzNDb250ZW50IGV4dGVuZHMgQ29udGVudCB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBidWNrZXQ6IHMzLklCdWNrZXQsIHByaXZhdGUga2V5OiBzdHJpbmcsIHByaXZhdGUgb2JqZWN0VmVyc2lvbj86IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFidWNrZXQuYnVja2V0TmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdidWNrZXROYW1lIGlzIHVuZGVmaW5lZCBmb3IgdGhlIHByb3ZpZGVkIGJ1Y2tldCcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBiaW5kKF9zY29wZTogQ29uc3RydWN0LCBncmFudGFibGU6IGlhbS5JR3JhbnRhYmxlKTogQ29udGVudENvbmZpZyB7XG4gICAgdGhpcy5idWNrZXQuZ3JhbnRSZWFkKGdyYW50YWJsZSwgdGhpcy5rZXkpO1xuICAgIHJldHVybiB7XG4gICAgICBzM0xvY2F0aW9uOiB7XG4gICAgICAgIGJ1Y2tldE5hbWU6IHRoaXMuYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgIG9iamVjdEtleTogdGhpcy5rZXksXG4gICAgICAgIG9iamVjdFZlcnNpb246IHRoaXMub2JqZWN0VmVyc2lvbixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEdhbWUgY29udGVudCBmcm9tIGEgbG9jYWwgZGlyZWN0b3J5LlxuICovXG5leHBvcnQgY2xhc3MgQXNzZXRDb250ZW50IGV4dGVuZHMgQ29udGVudCB7XG4gIHByaXZhdGUgYXNzZXQ/OiBzM19hc3NldHMuQXNzZXQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBhc3NldCBmaWxlIG9yIGRpcmVjdG9yeS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBwYXRoOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogczNfYXNzZXRzLkFzc2V0T3B0aW9ucyA9IHsgfSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgYmluZChzY29wZTogQ29uc3RydWN0LCBncmFudGFibGU6IGlhbS5JR3JhbnRhYmxlKTogQ29udGVudENvbmZpZyB7XG4gICAgLy8gSWYgdGhlIHNhbWUgQXNzZXRDb250ZW50IGlzIHVzZWQgbXVsdGlwbGUgdGltZXMsIHJldGFpbiBvbmx5IHRoZSBmaXJzdCBpbnN0YW50aWF0aW9uLlxuICAgIGlmICghdGhpcy5hc3NldCkge1xuICAgICAgdGhpcy5hc3NldCA9IG5ldyBzM19hc3NldHMuQXNzZXQoc2NvcGUsICdDb250ZW50Jywge1xuICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoY2RrLlN0YWNrLm9mKHRoaXMuYXNzZXQpICE9PSBjZGsuU3RhY2sub2Yoc2NvcGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2V0IGlzIGFscmVhZHkgYXNzb2NpYXRlZCB3aXRoIGFub3RoZXIgc3RhY2sgJyR7Y2RrLlN0YWNrLm9mKHRoaXMuYXNzZXQpLnN0YWNrTmFtZX0nLiBgICtcbiAgICAgICAgJ0NyZWF0ZSBhIG5ldyBDb250ZW50IGluc3RhbmNlIGZvciBldmVyeSBzdGFjay4nKTtcbiAgICB9XG4gICAgdGhpcy5hc3NldC5ncmFudFJlYWQoZ3JhbnRhYmxlKTtcblxuICAgIGlmICghdGhpcy5hc3NldC5pc1ppcEFyY2hpdmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXQgbXVzdCBiZSBhIC56aXAgZmlsZSBvciBhIGRpcmVjdG9yeSAoJHt0aGlzLnBhdGh9KWApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzM0xvY2F0aW9uOiB7XG4gICAgICAgIGJ1Y2tldE5hbWU6IHRoaXMuYXNzZXQuczNCdWNrZXROYW1lLFxuICAgICAgICBvYmplY3RLZXk6IHRoaXMuYXNzZXQuczNPYmplY3RLZXksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,72 @@
1
+ export declare class GameLiftMetrics {
2
+ static activeInstancesAverage(dimensions: {
3
+ FleetId: string;
4
+ }): {
5
+ namespace: string;
6
+ metricName: string;
7
+ dimensionsMap: {
8
+ FleetId: string;
9
+ };
10
+ statistic: string;
11
+ };
12
+ static percentIdleInstancesAverage(dimensions: {
13
+ FleetId: string;
14
+ }): {
15
+ namespace: string;
16
+ metricName: string;
17
+ dimensionsMap: {
18
+ FleetId: string;
19
+ };
20
+ statistic: string;
21
+ };
22
+ static desiredInstancesAverage(dimensions: {
23
+ FleetId: string;
24
+ }): {
25
+ namespace: string;
26
+ metricName: string;
27
+ dimensionsMap: {
28
+ FleetId: string;
29
+ };
30
+ statistic: string;
31
+ };
32
+ static idleInstancesAverage(dimensions: {
33
+ FleetId: string;
34
+ }): {
35
+ namespace: string;
36
+ metricName: string;
37
+ dimensionsMap: {
38
+ FleetId: string;
39
+ };
40
+ statistic: string;
41
+ };
42
+ static maxInstancesAverage(dimensions: {
43
+ FleetId: string;
44
+ }): {
45
+ namespace: string;
46
+ metricName: string;
47
+ dimensionsMap: {
48
+ FleetId: string;
49
+ };
50
+ statistic: string;
51
+ };
52
+ static minInstancesAverage(dimensions: {
53
+ FleetId: string;
54
+ }): {
55
+ namespace: string;
56
+ metricName: string;
57
+ dimensionsMap: {
58
+ FleetId: string;
59
+ };
60
+ statistic: string;
61
+ };
62
+ static instanceInterruptionsSum(dimensions: {
63
+ FleetId: string;
64
+ }): {
65
+ namespace: string;
66
+ metricName: string;
67
+ dimensionsMap: {
68
+ FleetId: string;
69
+ };
70
+ statistic: string;
71
+ };
72
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ // Copyright 2012-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.GameLiftMetrics = void 0;
5
+ /* eslint-disable max-len */ // This is generated code - line lengths are difficult to control
6
+ class GameLiftMetrics {
7
+ static activeInstancesAverage(dimensions) {
8
+ return {
9
+ namespace: 'AWS/GameLift',
10
+ metricName: 'ActiveInstances',
11
+ dimensionsMap: dimensions,
12
+ statistic: 'Average',
13
+ };
14
+ }
15
+ static percentIdleInstancesAverage(dimensions) {
16
+ return {
17
+ namespace: 'AWS/GameLift',
18
+ metricName: 'PercentIdleInstances',
19
+ dimensionsMap: dimensions,
20
+ statistic: 'Average',
21
+ };
22
+ }
23
+ static desiredInstancesAverage(dimensions) {
24
+ return {
25
+ namespace: 'AWS/GameLift',
26
+ metricName: 'DesiredInstances',
27
+ dimensionsMap: dimensions,
28
+ statistic: 'Average',
29
+ };
30
+ }
31
+ static idleInstancesAverage(dimensions) {
32
+ return {
33
+ namespace: 'AWS/GameLift',
34
+ metricName: 'IdleInstances',
35
+ dimensionsMap: dimensions,
36
+ statistic: 'Average',
37
+ };
38
+ }
39
+ static maxInstancesAverage(dimensions) {
40
+ return {
41
+ namespace: 'AWS/GameLift',
42
+ metricName: 'MaxInstances',
43
+ dimensionsMap: dimensions,
44
+ statistic: 'Average',
45
+ };
46
+ }
47
+ static minInstancesAverage(dimensions) {
48
+ return {
49
+ namespace: 'AWS/GameLift',
50
+ metricName: 'MinInstances',
51
+ dimensionsMap: dimensions,
52
+ statistic: 'Average',
53
+ };
54
+ }
55
+ static instanceInterruptionsSum(dimensions) {
56
+ return {
57
+ namespace: 'AWS/GameLift',
58
+ metricName: 'InstanceInterruptions',
59
+ dimensionsMap: dimensions,
60
+ statistic: 'Sum',
61
+ };
62
+ }
63
+ }
64
+ exports.GameLiftMetrics = GameLiftMetrics;
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtZWxpZnQtY2FubmVkLW1ldHJpY3MuZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2FtZWxpZnQtY2FubmVkLW1ldHJpY3MuZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrRUFBK0U7OztBQUUvRSw0QkFBNEIsQ0FBQyxpRUFBaUU7QUFFOUYsTUFBYSxlQUFlO0lBQ25CLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxVQUErQjtRQUNsRSxPQUFPO1lBQ0wsU0FBUyxFQUFFLGNBQWM7WUFDekIsVUFBVSxFQUFFLGlCQUFpQjtZQUM3QixhQUFhLEVBQUUsVUFBVTtZQUN6QixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDO0tBQ0g7SUFDTSxNQUFNLENBQUMsMkJBQTJCLENBQUMsVUFBK0I7UUFDdkUsT0FBTztZQUNMLFNBQVMsRUFBRSxjQUFjO1lBQ3pCLFVBQVUsRUFBRSxzQkFBc0I7WUFDbEMsYUFBYSxFQUFFLFVBQVU7WUFDekIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQztLQUNIO0lBQ00sTUFBTSxDQUFDLHVCQUF1QixDQUFDLFVBQStCO1FBQ25FLE9BQU87WUFDTCxTQUFTLEVBQUUsY0FBYztZQUN6QixVQUFVLEVBQUUsa0JBQWtCO1lBQzlCLGFBQWEsRUFBRSxVQUFVO1lBQ3pCLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUM7S0FDSDtJQUNNLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxVQUErQjtRQUNoRSxPQUFPO1lBQ0wsU0FBUyxFQUFFLGNBQWM7WUFDekIsVUFBVSxFQUFFLGVBQWU7WUFDM0IsYUFBYSxFQUFFLFVBQVU7WUFDekIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQztLQUNIO0lBQ00sTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQStCO1FBQy9ELE9BQU87WUFDTCxTQUFTLEVBQUUsY0FBYztZQUN6QixVQUFVLEVBQUUsY0FBYztZQUMxQixhQUFhLEVBQUUsVUFBVTtZQUN6QixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDO0tBQ0g7SUFDTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsVUFBK0I7UUFDL0QsT0FBTztZQUNMLFNBQVMsRUFBRSxjQUFjO1lBQ3pCLFVBQVUsRUFBRSxjQUFjO1lBQzFCLGFBQWEsRUFBRSxVQUFVO1lBQ3pCLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUM7S0FDSDtJQUNNLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxVQUErQjtRQUNwRSxPQUFPO1lBQ0wsU0FBUyxFQUFFLGNBQWM7WUFDekIsVUFBVSxFQUFFLHVCQUF1QjtZQUNuQyxhQUFhLEVBQUUsVUFBVTtZQUN6QixTQUFTLEVBQUUsS0FBSztTQUNqQixDQUFDO0tBQ0g7Q0FDRjtBQXpERCwwQ0F5REMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxMi0yMDIyIEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG5cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi8gLy8gVGhpcyBpcyBnZW5lcmF0ZWQgY29kZSAtIGxpbmUgbGVuZ3RocyBhcmUgZGlmZmljdWx0IHRvIGNvbnRyb2xcblxuZXhwb3J0IGNsYXNzIEdhbWVMaWZ0TWV0cmljcyB7XG4gIHB1YmxpYyBzdGF0aWMgYWN0aXZlSW5zdGFuY2VzQXZlcmFnZShkaW1lbnNpb25zOiB7IEZsZWV0SWQ6IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9HYW1lTGlmdCcsXG4gICAgICBtZXRyaWNOYW1lOiAnQWN0aXZlSW5zdGFuY2VzJyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IGRpbWVuc2lvbnMsXG4gICAgICBzdGF0aXN0aWM6ICdBdmVyYWdlJyxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgcGVyY2VudElkbGVJbnN0YW5jZXNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgRmxlZXRJZDogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0dhbWVMaWZ0JyxcbiAgICAgIG1ldHJpY05hbWU6ICdQZXJjZW50SWRsZUluc3RhbmNlcycsXG4gICAgICBkaW1lbnNpb25zTWFwOiBkaW1lbnNpb25zLFxuICAgICAgc3RhdGlzdGljOiAnQXZlcmFnZScsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgc3RhdGljIGRlc2lyZWRJbnN0YW5jZXNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgRmxlZXRJZDogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0dhbWVMaWZ0JyxcbiAgICAgIG1ldHJpY05hbWU6ICdEZXNpcmVkSW5zdGFuY2VzJyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IGRpbWVuc2lvbnMsXG4gICAgICBzdGF0aXN0aWM6ICdBdmVyYWdlJyxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgaWRsZUluc3RhbmNlc0F2ZXJhZ2UoZGltZW5zaW9uczogeyBGbGVldElkOiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvR2FtZUxpZnQnLFxuICAgICAgbWV0cmljTmFtZTogJ0lkbGVJbnN0YW5jZXMnLFxuICAgICAgZGltZW5zaW9uc01hcDogZGltZW5zaW9ucyxcbiAgICAgIHN0YXRpc3RpYzogJ0F2ZXJhZ2UnLFxuICAgIH07XG4gIH1cbiAgcHVibGljIHN0YXRpYyBtYXhJbnN0YW5jZXNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgRmxlZXRJZDogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0dhbWVMaWZ0JyxcbiAgICAgIG1ldHJpY05hbWU6ICdNYXhJbnN0YW5jZXMnLFxuICAgICAgZGltZW5zaW9uc01hcDogZGltZW5zaW9ucyxcbiAgICAgIHN0YXRpc3RpYzogJ0F2ZXJhZ2UnLFxuICAgIH07XG4gIH1cbiAgcHVibGljIHN0YXRpYyBtaW5JbnN0YW5jZXNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgRmxlZXRJZDogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0dhbWVMaWZ0JyxcbiAgICAgIG1ldHJpY05hbWU6ICdNaW5JbnN0YW5jZXMnLFxuICAgICAgZGltZW5zaW9uc01hcDogZGltZW5zaW9ucyxcbiAgICAgIHN0YXRpc3RpYzogJ0F2ZXJhZ2UnLFxuICAgIH07XG4gIH1cbiAgcHVibGljIHN0YXRpYyBpbnN0YW5jZUludGVycnVwdGlvbnNTdW0oZGltZW5zaW9uczogeyBGbGVldElkOiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvR2FtZUxpZnQnLFxuICAgICAgbWV0cmljTmFtZTogJ0luc3RhbmNlSW50ZXJydXB0aW9ucycsXG4gICAgICBkaW1lbnNpb25zTWFwOiBkaW1lbnNpb25zLFxuICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICB9O1xuICB9XG59XG4iXX0=
package/lib/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './content';
2
+ export * from './build';
3
+ export * from './script';
package/lib/index.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./content"), exports);
14
+ __exportStar(require("./build"), exports);
15
+ __exportStar(require("./script"), exports);
16
+ // AWS::GameLift CloudFormation Resources:
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLDJDQUF5QjtBQUV6QiwwQ0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbnRlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZCc7XG5leHBvcnQgKiBmcm9tICcuL3NjcmlwdCc7XG5cbi8vIEFXUzo6R2FtZUxpZnQgQ2xvdWRGb3JtYXRpb24gUmVzb3VyY2VzOlxuIl19
@@ -0,0 +1,140 @@
1
+ import * as iam from 'aws-cdk-lib/aws-iam';
2
+ import * as s3 from 'aws-cdk-lib/aws-s3';
3
+ import * as s3_assets from 'aws-cdk-lib/aws-s3-assets';
4
+ import * as cdk from 'aws-cdk-lib';
5
+ import { Construct } from 'constructs';
6
+ import { Content } from './content';
7
+ /**
8
+ * Your configuration and custom game logic for use with Realtime Servers.
9
+ * Realtime Servers are provided by GameLift to use instead of a custom-built game server.
10
+ * You configure Realtime Servers for your game clients by creating a script using JavaScript,
11
+ * and add custom game logic as appropriate to host game sessions for your players.
12
+ * You upload the Realtime script to the GameLift service in the Regions where you plan to set up fleets.
13
+ *
14
+ * @see https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-script-uploading.html
15
+ */
16
+ export interface IScript extends cdk.IResource, iam.IGrantable {
17
+ /**
18
+ * The Identifier of the realtime server script.
19
+ *
20
+ * @attribute
21
+ */
22
+ readonly scriptId: string;
23
+ /**
24
+ * The ARN of the realtime server script.
25
+ *
26
+ * @attribute
27
+ */
28
+ readonly scriptArn: string;
29
+ }
30
+ /**
31
+ * Base class for new and imported GameLift realtime server script.
32
+ */
33
+ export declare abstract class ScriptBase extends cdk.Resource implements IScript {
34
+ /**
35
+ * The Identifier of the realtime server script.
36
+ */
37
+ abstract readonly scriptId: string;
38
+ abstract readonly scriptArn: string;
39
+ abstract readonly grantPrincipal: iam.IPrincipal;
40
+ }
41
+ /**
42
+ * Represents a Script content defined outside of this stack.
43
+ */
44
+ export interface ScriptAttributes {
45
+ /**
46
+ * The ARN of the realtime server script
47
+ */
48
+ readonly scriptArn: string;
49
+ /**
50
+ * The IAM role assumed by GameLift to access server script in S3.
51
+ * @default - undefined
52
+ */
53
+ readonly role?: iam.IRole;
54
+ }
55
+ /**
56
+ * Properties for a new realtime server script
57
+ */
58
+ export interface ScriptProps {
59
+ /**
60
+ * Name of this realtime server script
61
+ *
62
+ * @default No name
63
+ */
64
+ readonly scriptName?: string;
65
+ /**
66
+ * Version of this realtime server script
67
+ *
68
+ * @default No version
69
+ */
70
+ readonly scriptVersion?: string;
71
+ /**
72
+ * The game content
73
+ */
74
+ readonly content: Content;
75
+ /**
76
+ * The IAM role assumed by GameLift to access server script in S3.
77
+ * If providing a custom role, it needs to trust the GameLift service principal (gamelift.amazonaws.com) and be granted sufficient permissions
78
+ * to have Read access to a specific key content into a specific S3 bucket.
79
+ * Below an example of required permission:
80
+ * {
81
+ * "Version": "2012-10-17",
82
+ * "Statement": [{
83
+ * "Effect": "Allow",
84
+ * "Action": [
85
+ * "s3:GetObject",
86
+ * "s3:GetObjectVersion"
87
+ * ],
88
+ * "Resource": "arn:aws:s3:::bucket-name/object-name"
89
+ * }]
90
+ *}
91
+ *
92
+ * @see https://docs.aws.amazon.com/gamelift/latest/developerguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-access-storage-loc
93
+ *
94
+ * @default - a role will be created with default permissions.
95
+ */
96
+ readonly role?: iam.IRole;
97
+ }
98
+ /**
99
+ * A GameLift script, that is installed and runs on instances in an Amazon GameLift fleet. It consists of
100
+ * a zip file with all of the components of the realtime game server script.
101
+ *
102
+ * @see https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-script-uploading.html
103
+ *
104
+ * @resource AWS::GameLift::Script
105
+ */
106
+ export declare class Script extends ScriptBase {
107
+ /**
108
+ * Create a new realtime server script from s3 content
109
+ */
110
+ static fromBucket(scope: Construct, id: string, bucket: s3.IBucket, key: string, objectVersion?: string): Script;
111
+ /**
112
+ * Create a new realtime server script from asset content
113
+ */
114
+ static fromAsset(scope: Construct, id: string, path: string, options?: s3_assets.AssetOptions): Script;
115
+ /**
116
+ * Import a script into CDK using its ARN
117
+ */
118
+ static fromScriptArn(scope: Construct, id: string, scriptArn: string): IScript;
119
+ /**
120
+ * Import an existing realtime server script from its attributes.
121
+ */
122
+ static fromScriptAttributes(scope: Construct, id: string, attrs: ScriptAttributes): IScript;
123
+ /**
124
+ * The Identifier of the realtime server script.
125
+ */
126
+ readonly scriptId: string;
127
+ /**
128
+ * The ARN of the realtime server script.
129
+ */
130
+ readonly scriptArn: string;
131
+ /**
132
+ * The IAM role GameLift assumes to acccess server script content.
133
+ */
134
+ readonly role: iam.IRole;
135
+ /**
136
+ * The principal this GameLift script is using.
137
+ */
138
+ readonly grantPrincipal: iam.IPrincipal;
139
+ constructor(scope: Construct, id: string, props: ScriptProps);
140
+ }