与您的实例集中的其他 AWS 资源进行通信 - Amazon GameLift

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

与您的实例集中的其他 AWS 资源进行通信

当您创建要在 Amazon GameLift 队列上部署的游戏服务器版本时,您可能希望游戏版本中的应用程序能够与您拥有的其他 AWS 资源直接安全地通信。由于 Amazon GameLift 管理您的游戏托管队伍,因此您必须向 Amazon GameLift 提供对这些资源和服务的有限访问权限。

一些示例场景包括:

  • 使用 Amazon CloudWatch 代理从托管式 EC2 实例集和 Anywhere 实例集中收集指标、日志和跟踪信息。

  • 将实例日志数据发送到 Amazon CloudWatch Logs。

  • 将消息存储在 Amazon Simple Storage Service (Amazon S3) 存储桶中。

  • 读写在 Amazon DynamoDB 数据库或其他数据存储服务中存储的游戏数据,例如游戏模式或清单。

  • 使用 Amazon Simple Queue Service(Amazon SQS)将信号直接发送到实例。

  • 访问在 Amazon Elastic Compute Cloud (Amazon EC2) 上部署和运行的自定义资源。

Amazon GameLift 支持以下方法来建立访问权限:

使用软件开发工具包以 IAM 角色访问 AWS 资源

使用 IAM 角色指定谁可以访问您的资源并设置访问限制。受信任方可以“担任”角色并获得临时安全证书,以授权他们与资源进行交互。当各方发出与资源相关的 API 请求时,他们必须提供证书。

要设置由 IAM 角色控制的访问权限,请执行以下任务:

创建 IAM 角色。

在此步骤中,您将创建一个 IAM 角色,该角色具有一组控制 AWS 资源访问权限的权限和一个授予 Amazon GameLift 使用该角色权限的信任策略。

有关如何设置 IAM 角色的说明,请参阅为亚马逊设置 IAM 服务角色 GameLift。在创建权限策略时,请选择您的应用程序需要使用的特定服务、资源和操作。作为最佳实操,请尽可能限制权限的范围。

创建角色后,记下其 Amazon 资源名称(ARN)。在创建实例集期间,您需要角色 ARN。

修改应用程序以获取凭证

在此步骤中,您将应用程序配置为获取 IAM 角色的安全凭证,并在与您的 AWS 资源交互时使用这些凭证。参见下表,根据 (1) 应用程序的类型以及 (2) 您的游戏用于与 Amazon GameLift 通信的服务器软件开发工具包 版本来确定如何修改您的应用程序。

游戏服务器应用程序 其他客户端应用程序

使用服务器软件开发工具包版本 5.x

从您的游戏服务器代码中调用服务器软件开发工具包方法 GetFleetRoleCredentials()

向应用程序添加代码,以便从队列实例上的共享文件中提取证书。

使用服务器软件开发工具包版本 4 或更早版本

使用角色 ARN 调用 AWS Security Token Service(AWS STS)AssumeRole

使用角色 ARN 调用 AWS Security Token Service(AWS STS)AssumeRole

对于与服务器软件开发工具包 5.x 集成的游戏,此图说明了您部署的游戏版本中的应用程序如何获取 IAM 角色的证书。

游戏可执行文件调用 GetFleetRoleCredentials()。其他文件使用本地存储的共享凭证。

在您的游戏服务器代码(该代码应该已经与 Amazon GameLift 服务器 SDK 5.x 集成)中,调用 GetFleetRoleCredentialsC++)(C#)(Unreal)(Go)以检索一组临时凭证。证书过期后,您可以通过再次调用 GetFleetRoleCredentials 来刷新凭证。

对于使用服务器软件开发工具包 5.x 与游戏服务器版本一起部署的非服务器应用程序,请添加代码以获取和使用存储在共享文件中的凭据。Amazon GameLift 会为每个队列实例生成一个凭证配置文件。这些证书可供实例上的所有应用程序使用。 Amazon GameLift 会不断刷新临时证书。

您必须将队列配置为在创建队列时生成共享凭证文件。

在每个需要使用共享凭据文件的应用程序中,指定文件位置和配置文件名称,如下所示:

Windows:

[credentials] shared_credential_profile= "FleetRoleCredentials" shared_credential_file= "C:\\Credentials\\credentials"

Linux:

[credentials] shared_credential_profile= "FleetRoleCredentials" shared_credential_file= "/local/credentials/credentials"

示例:设置 CloudWatch 代理以收集 Amazon GameLift 实例集实例的指标

如果您想使用 Amazon CloudWatch 代理从您的 Amazon GameLift 队列收集指标、日志和跟踪,请使用此方法授权代理将数据发送到您的账户。在此场景中,请采取以下步骤:

  1. 检索或写入 CloudWatch 代理 config.json 文件。

  2. 如上所述,更新 common-config.toml 代理文件以识别凭证文件名和配置文件名称。

  3. 设置游戏服务器版本安装脚本以安装和启动 CloudWatch 代理。

向您的应用程序添加代码以担任 IAM 角色并获取用于与您的 AWS 资源交互的凭证。任何在带有服务器软件开发工具包 4 或更早版本的 Amazon GameLift 队列实例上运行的应用程序都可以担任 IAM 角色。

在应用程序代码中,在访问 AWS 资源之前,应用程序必须调用 AWS Security Token Service(AWS STS)AssumeRole API 操作并指定角色 ARN。此操作返回一组授权应用程序访问 AWS 资源的临时凭证。有关更多信息,请参阅《IAM 用户指南》中的将临时凭证用于 AWS 资源

将实例集与 IAM 角色关联

在创建 IAM 角色并更新游戏服务器版本中的应用程序以获取和使用访问凭证后,您可以部署队列。配置新队列时,请设置以下参数:

创建队列时必须设置这些值。以后,无法对其进行更新。

通过 VPC 对等互连访问 AWS 资源

您可以使用 Amazon Virtual Private Cloud(Amazon VPC)对等在 Amazon GameLift 实例上运行的应用程序与其他 AWS 资源上运行的应用程序之间进行通信。VPC 是您定义的虚拟专用网络,其中包括通过您 AWS 账户管理的一组资源。每个 Amazon GameLift 实例集都有自己的 VPC。借助 VPC 对等连接,您可以在实例集的 VPC 与其他 AWS 资源的 VPC 之间建立直接网络连接。

简化了为游戏服务器设置 VPC 对等连接的过程。它会处理对等请求、更新路由表,并根据需要配置连接。有关如何为游戏服务器设置 VPC 对等连接的更多信息,请参阅Amazon GameLift 的 VPC 对等连接