/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace GameLift { namespace Model { /** *

Log entry describing an event that involves Amazon GameLift resources (such * as a fleet). In addition to tracking activity, event codes and messages can * provide additional information for troubleshooting and debugging * problems.

See Also:

AWS API * Reference

*/ class Event { public: AWS_GAMELIFT_API Event(); AWS_GAMELIFT_API Event(Aws::Utils::Json::JsonView jsonValue); AWS_GAMELIFT_API Event& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_GAMELIFT_API Aws::Utils::Json::JsonValue Jsonize() const; ///@{ /** *

A unique identifier for a fleet event.

*/ inline const Aws::String& GetEventId() const{ return m_eventId; } inline bool EventIdHasBeenSet() const { return m_eventIdHasBeenSet; } inline void SetEventId(const Aws::String& value) { m_eventIdHasBeenSet = true; m_eventId = value; } inline void SetEventId(Aws::String&& value) { m_eventIdHasBeenSet = true; m_eventId = std::move(value); } inline void SetEventId(const char* value) { m_eventIdHasBeenSet = true; m_eventId.assign(value); } inline Event& WithEventId(const Aws::String& value) { SetEventId(value); return *this;} inline Event& WithEventId(Aws::String&& value) { SetEventId(std::move(value)); return *this;} inline Event& WithEventId(const char* value) { SetEventId(value); return *this;} ///@} ///@{ /** *

A unique identifier for an event resource, such as a fleet ID.

*/ inline const Aws::String& GetResourceId() const{ return m_resourceId; } inline bool ResourceIdHasBeenSet() const { return m_resourceIdHasBeenSet; } inline void SetResourceId(const Aws::String& value) { m_resourceIdHasBeenSet = true; m_resourceId = value; } inline void SetResourceId(Aws::String&& value) { m_resourceIdHasBeenSet = true; m_resourceId = std::move(value); } inline void SetResourceId(const char* value) { m_resourceIdHasBeenSet = true; m_resourceId.assign(value); } inline Event& WithResourceId(const Aws::String& value) { SetResourceId(value); return *this;} inline Event& WithResourceId(Aws::String&& value) { SetResourceId(std::move(value)); return *this;} inline Event& WithResourceId(const char* value) { SetResourceId(value); return *this;} ///@} ///@{ /** *

The type of event being logged.

Fleet state transition * events:

  • FLEET_CREATED -- A fleet resource was successfully * created with a status of NEW. Event messaging includes the fleet * ID.

  • FLEET_STATE_DOWNLOADING -- Fleet status changed from * NEW to DOWNLOADING. Amazon GameLift is downloading the * compressed build and running install scripts.

  • *

    FLEET_STATE_VALIDATING -- Fleet status changed from DOWNLOADING * to VALIDATING. Amazon GameLift has successfully installed build and * is now validating the build files.

  • FLEET_STATE_BUILDING -- * Fleet status changed from VALIDATING to BUILDING. * Amazon GameLift has successfully verified the build files and is now launching a * fleet instance.

  • FLEET_STATE_ACTIVATING -- Fleet status changed * from BUILDING to ACTIVATING. Amazon GameLift is * launching a game server process on the fleet instance and is testing its * connectivity with the Amazon GameLift service.

  • *

    FLEET_STATE_ACTIVE -- The fleet's status changed from ACTIVATING * to ACTIVE. The fleet is now ready to host game sessions.

  • *
  • FLEET_STATE_ERROR -- The Fleet's status changed to ERROR. * Describe the fleet event message for more details.

Fleet * creation events (ordered by fleet creation activity):

  • *

    FLEET_BINARY_DOWNLOAD_FAILED -- The build failed to download to the fleet * instance.

  • FLEET_CREATION_EXTRACTING_BUILD -- The game server * build was successfully downloaded to an instance, and Amazon GameLiftis now * extracting the build files from the uploaded build. Failure at this stage * prevents a fleet from moving to ACTIVE status. Logs for this stage display a * list of the files that are extracted and saved on the instance. Access the logs * by using the URL in PreSignedLogUrl.

  • *

    FLEET_CREATION_RUNNING_INSTALLER -- The game server build files were * successfully extracted, and Amazon GameLift is now running the build's install * script (if one is included). Failure in this stage prevents a fleet from moving * to ACTIVE status. Logs for this stage list the installation steps and whether or * not the install completed successfully. Access the logs by using the URL in * PreSignedLogUrl.

  • FLEET_CREATION_COMPLETED_INSTALLER -- * The game server build files were successfully installed and validation of the * installation will begin soon.

  • FLEET_CREATION_FAILED_INSTALLER * -- The installed failed while attempting to install the build files. This event * indicates that the failure occurred before Amazon GameLift could start * validation.

  • FLEET_CREATION_VALIDATING_RUNTIME_CONFIG -- The * build process was successful, and the GameLift is now verifying that the game * server launch paths, which are specified in the fleet's runtime configuration, * exist. If any listed launch path exists, Amazon GameLift tries to launch a game * server process and waits for the process to report ready. Failures in this stage * prevent a fleet from moving to ACTIVE status. Logs for this stage * list the launch paths in the runtime configuration and indicate whether each is * found. Access the logs by using the URL in PreSignedLogUrl.

  • *
  • FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND -- Validation of the runtime * configuration failed because the executable specified in a launch path does not * exist on the instance.

  • *

    FLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE -- Validation of the runtime * configuration failed because the executable specified in a launch path failed to * run on the fleet instance.

  • FLEET_VALIDATION_TIMED_OUT -- * Validation of the fleet at the end of creation timed out. Try fleet creation * again.

  • FLEET_ACTIVATION_FAILED -- The fleet failed to * successfully complete one of the steps in the fleet activation process. This * event code indicates that the game build was successfully downloaded to a fleet * instance, built, and validated, but was not able to start a server process. For * more information, see Debug * Fleet Creation Issues.

  • *

    FLEET_ACTIVATION_FAILED_NO_INSTANCES -- Fleet creation was not able to obtain * any instances based on the input fleet attributes. Try again at a different time * or choose a different combination of fleet attributes such as fleet type, * instance type, etc.

  • FLEET_INITIALIZATION_FAILED -- A generic * exception occurred during fleet creation. Describe the fleet event message for * more details.

VPC peering events:

  • *

    FLEET_VPC_PEERING_SUCCEEDED -- A VPC peering connection has been established * between the VPC for an Amazon GameLift fleet and a VPC in your Amazon Web * Services account.

  • FLEET_VPC_PEERING_FAILED -- A requested VPC * peering connection has failed. Event details and status information provide * additional detail. A common reason for peering failure is that the two VPCs have * overlapping CIDR blocks of IPv4 addresses. To resolve this, change the CIDR * block for the VPC in your Amazon Web Services account. For more information on * VPC peering failures, see https://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/invalid-peering-configurations.html *

  • FLEET_VPC_PEERING_DELETED -- A VPC peering connection has * been successfully deleted.

Container group events: *

  • CONTAINER_GROUP_REGISTRATION_FAILED – A game server container * group started, but timed out before calling RegisterCompute.

    *
  • CONTAINER_GROUP_CRASHED A game server container group started and * terminated without calling RegisterCompute.

* Spot instance events:

  • INSTANCE_INTERRUPTED -- A spot * instance was interrupted by EC2 with a two-minute notification.

  • *

    INSTANCE_RECYCLED -- A spot instance was determined to have a high risk of * interruption and is scheduled to be recycled once it has no active game * sessions.

Server process events:

  • *

    SERVER_PROCESS_INVALID_PATH -- The game server executable or script could not * be found based on the Fleet runtime configuration. Check that the launch path is * correct based on the operating system of the Fleet.

  • *

    SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT -- The server process did not call * InitSDK() within the time expected (5 minutes). Check your game * session log to see why InitSDK() was not called in time.

  • *
  • SERVER_PROCESS_PROCESS_READY_TIMEOUT -- The server process did not call * ProcessReady() within the time expected (5 minutes) after calling * InitSDK(). Check your game session log to see why * ProcessReady() was not called in time.

  • *

    SERVER_PROCESS_CRASHED -- The server process exited without calling * ProcessEnding(). Check your game session log to see why * ProcessEnding() was not called.

  • *

    SERVER_PROCESS_TERMINATED_UNHEALTHY -- The server process did not report a * valid health check for too long and was therefore terminated by GameLift. Check * your game session log to see if the thread became stuck processing a synchronous * task for too long.

  • SERVER_PROCESS_FORCE_TERMINATED -- The * server process did not exit cleanly within the time expected after * OnProcessTerminate() was sent. Check your game session log to see * why termination took longer than expected.

  • *

    SERVER_PROCESS_PROCESS_EXIT_TIMEOUT -- The server process did not exit * cleanly within the time expected (30 seconds) after calling * ProcessEnding(). Check your game session log to see why termination * took longer than expected.

Game session events:

*
  • GAME_SESSION_ACTIVATION_TIMEOUT -- GameSession failed to activate * within the expected time. Check your game session log to see why * ActivateGameSession() took longer to complete than expected.

    *

Other fleet events:

  • FLEET_SCALING_EVENT * -- A change was made to the fleet's capacity settings (desired instances, * minimum/maximum scaling limits). Event messaging includes the new capacity * settings.

  • FLEET_NEW_GAME_SESSION_PROTECTION_POLICY_UPDATED -- * A change was made to the fleet's game session protection policy setting. Event * messaging includes both the old and new policy setting.

  • *

    FLEET_DELETED -- A request to delete a fleet was initiated.

  • *

    GENERIC_EVENT -- An unspecified event has occurred.

*/ inline const EventCode& GetEventCode() const{ return m_eventCode; } inline bool EventCodeHasBeenSet() const { return m_eventCodeHasBeenSet; } inline void SetEventCode(const EventCode& value) { m_eventCodeHasBeenSet = true; m_eventCode = value; } inline void SetEventCode(EventCode&& value) { m_eventCodeHasBeenSet = true; m_eventCode = std::move(value); } inline Event& WithEventCode(const EventCode& value) { SetEventCode(value); return *this;} inline Event& WithEventCode(EventCode&& value) { SetEventCode(std::move(value)); return *this;} ///@} ///@{ /** *

Additional information related to the event.

*/ inline const Aws::String& GetMessage() const{ return m_message; } inline bool MessageHasBeenSet() const { return m_messageHasBeenSet; } inline void SetMessage(const Aws::String& value) { m_messageHasBeenSet = true; m_message = value; } inline void SetMessage(Aws::String&& value) { m_messageHasBeenSet = true; m_message = std::move(value); } inline void SetMessage(const char* value) { m_messageHasBeenSet = true; m_message.assign(value); } inline Event& WithMessage(const Aws::String& value) { SetMessage(value); return *this;} inline Event& WithMessage(Aws::String&& value) { SetMessage(std::move(value)); return *this;} inline Event& WithMessage(const char* value) { SetMessage(value); return *this;} ///@} ///@{ /** *

Time stamp indicating when this event occurred. Format is a number expressed * in Unix time as milliseconds (for example "1469498468.057").

*/ inline const Aws::Utils::DateTime& GetEventTime() const{ return m_eventTime; } inline bool EventTimeHasBeenSet() const { return m_eventTimeHasBeenSet; } inline void SetEventTime(const Aws::Utils::DateTime& value) { m_eventTimeHasBeenSet = true; m_eventTime = value; } inline void SetEventTime(Aws::Utils::DateTime&& value) { m_eventTimeHasBeenSet = true; m_eventTime = std::move(value); } inline Event& WithEventTime(const Aws::Utils::DateTime& value) { SetEventTime(value); return *this;} inline Event& WithEventTime(Aws::Utils::DateTime&& value) { SetEventTime(std::move(value)); return *this;} ///@} ///@{ /** *

Location of stored logs with additional detail that is related to the event. * This is useful for debugging issues. The URL is valid for 15 minutes. You can * also access fleet creation logs through the Amazon GameLift console.

*/ inline const Aws::String& GetPreSignedLogUrl() const{ return m_preSignedLogUrl; } inline bool PreSignedLogUrlHasBeenSet() const { return m_preSignedLogUrlHasBeenSet; } inline void SetPreSignedLogUrl(const Aws::String& value) { m_preSignedLogUrlHasBeenSet = true; m_preSignedLogUrl = value; } inline void SetPreSignedLogUrl(Aws::String&& value) { m_preSignedLogUrlHasBeenSet = true; m_preSignedLogUrl = std::move(value); } inline void SetPreSignedLogUrl(const char* value) { m_preSignedLogUrlHasBeenSet = true; m_preSignedLogUrl.assign(value); } inline Event& WithPreSignedLogUrl(const Aws::String& value) { SetPreSignedLogUrl(value); return *this;} inline Event& WithPreSignedLogUrl(Aws::String&& value) { SetPreSignedLogUrl(std::move(value)); return *this;} inline Event& WithPreSignedLogUrl(const char* value) { SetPreSignedLogUrl(value); return *this;} ///@} ///@{ /** *

The number of times that this event occurred.

*/ inline long long GetCount() const{ return m_count; } inline bool CountHasBeenSet() const { return m_countHasBeenSet; } inline void SetCount(long long value) { m_countHasBeenSet = true; m_count = value; } inline Event& WithCount(long long value) { SetCount(value); return *this;} ///@} private: Aws::String m_eventId; bool m_eventIdHasBeenSet = false; Aws::String m_resourceId; bool m_resourceIdHasBeenSet = false; EventCode m_eventCode; bool m_eventCodeHasBeenSet = false; Aws::String m_message; bool m_messageHasBeenSet = false; Aws::Utils::DateTime m_eventTime; bool m_eventTimeHasBeenSet = false; Aws::String m_preSignedLogUrl; bool m_preSignedLogUrlHasBeenSet = false; long long m_count; bool m_countHasBeenSet = false; }; } // namespace Model } // namespace GameLift } // namespace Aws