Introspection on GameLift EC2 instance

0

We have a number of different accounts, A1, A2, AN, ("tiers", dev, test, live, etc) and they all contain builds and fleets, which then get instantiated in AWS managed accounts B1, B2, BN. I've tried manually assuming the fleet-******

I can get EC2 instance meta-data, so I can figure out the account ID of B1-Bx, but since I never know these up-front, I can't easily create a mapping back to A1-Ax, which makes it impossible to determine a) which role I can assume, and also b) which backend tier to connect to, without making individual builds for each tier.

I tried using tags, but the instance role has no access, and I don't know if any of the build or fleets tags get applied to the EC2 anyway. If I defer things to after servers have started up, I could theoretically make a late binding from server IP to instance, but it happens a bit later than I would prefer.

Cheers!

已提問 3 年前檢視次數 204 次
4 個答案
0
已接受的答案

Hi,

GameLift team has recently added a metadata file in GameLift instances containing the information you need, and we are working on getting this documented. (GLIFT-15647)

In the meantime, you can be unblocked by reading the a metadata JSON file from this path:

  • /local/gamemetadata/gamelift-metadata.json (In Linux)
  • C:\GameMetadata\gamelift-metadata.json (In Windows)

This metadata contains the following fleet attributes as of this writing:

BuildArn
BuildId
FleetArn
FleetId
Description
Name  // AKA Fleet Name
ScriptArn  // If you are using Realtime Server
ScriptId  // If you are using Realtime Server
FleetType
InstanceType
InstanceRoleArn  // if you provide an instance role during fleet creation

This file is created prior to install.sh is run, so it is guaranteed to be readable by your install script. You could potentially add your build environment (test, dev, live, etc.) as a part of the fleet name, or make an additional call to DescribeBuild to get the build name instead.

Thanks, James

已回答 3 年前
0

Just FYI, here is an example of the JSON file content (after formatting, originally it's just a single line without spaces):

{
   "buildArn":"arn:******
   "buildId":"build-11223344-5566-7788-aabbcceeffgg",
   "fleetArn":"arn:******
   "fleetId":"fleet-******
   "description":"MyFleetDescription",
   "name":"MyFleetName",
   "fleetType":"ON_DEMAND",
   "instanceType":"c5.large"
}
已回答 3 年前
0

Absolutely brilliant, much appreciated! Thanks @REDACTEDUSER

已回答 3 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南