与舰队中的其他 AWS 资源进行沟通 - Amazon GameLift

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

与舰队中的其他 AWS 资源进行沟通

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

一些示例场景包括:

  • 使用 Amazon CloudWatch 代理从托管EC2车队收集指标、日志和跟踪 Anywhere 舰队。

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

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

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

  • 使用亚马逊简单队列服务 (AmazonSQS) 将信号直接发送到实例。

  • 访问在亚马逊弹性计算云 (AmazonEC2) 上部署和运行的自定义资源。

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

使用IAM角色访问 AWS 资源

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

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

创建IAM角色

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

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

创建角色后,请记下该角色的 Amazon 资源名称 (ARN)。在创建舰队ARN期间,您需要该角色。

修改应用程序以获取凭证

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

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

使用服务器SDK版本 5.x

GetFleetRoleCredentials()从您的游戏服务器代码中调用服务器SDK方法。

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

使用服务器SDK版本 4 或更早版本

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

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

对于与 Server SDK 5.x 集成的游戏,此图说明了您部署的游戏版本中的应用程序如何获取该IAM角色的凭证。

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

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

对于使用服务器 SDK 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 队列实例的指标

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

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

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

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

向您的应用程序添加代码以代入该IAM角色并获取与您的 AWS 资源进行交互的凭证。在服务器 SDK 4 或更早版本的 Amazon GameLift 队列实例上运行的任何应用程序都可以代入该IAM角色。

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

将舰队与IAM角色关联

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

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

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

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

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