本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 Amazon 集装箱队列创建 GameLift 容器组定义
本文档适用于公开预览版中的一项功能。本文档随时可能更改。
容器组定义描述了如何将容器化游戏服务器应用程序部署到容器队列。它是一个蓝图,用于确定要在舰队上运行的容器集以及如何运行它们。创建容器队列时,您需要指定要部署到队列的容器组定义。有关容器组的更多信息,请参阅集装箱船队组件。
开始之前
完成以下任务:
-
设计用于托管游戏服务器的容器架构。请参阅 设计一支亚马逊 GameLift 集装箱船队。
-
规划要包含在容器组中的容器定义。如果您使用的是 AWS CLI,请在 JSON 文件中创建容器定义。
-
将最终的容器镜像推送到亚马逊弹性容器注册表 (Amazon ECR) Container Registry,该注册表与您计划创建容器组的位置 AWS 区域 相同。Amazon 会在您创建容器组定义时 GameLift 存储每个图像的快照,并在部署到容器队列时使用该副本。请参阅 使用游戏服务器软件准备容器镜像。
-
验证您的 AWS 用户是否具有 IAM 权限来访问 Amazon ECR 存储库。请参阅 管理 Amazon 的用户权限 GameLift。您至少需要权限才能执行以下操作:
ecr:DescribeImages
ecr:BatchGetImage
ecr:GetDownloadUrlForLayer
克隆容器组定义
您可以使用 Amazon GameLift 控制台克隆现有的容器组定义。
克隆容器组
-
在 Amazon GameLift 控制台
中,前往左侧导航窗格并选择容器组。 在容器组列表页面上,选择要克隆的现有容器组。选择容器组后,“克隆” 按钮处于活动状态。
选择克隆。此操作将打开带有预填设置的容器组创建向导。
为克隆的容器组输入新名称。同一区域中的容器组必须具有唯一的名称。
浏览容器组和容器定义页面,查看并创建新的容器组。
创建副本容器组定义
副本容器组管理您的游戏服务器软件。副本容器组至少有一个运行 Amazon A GameLift gent 和您的游戏服务器进程的容器。该小组可能还有其他 “sidecar” 容器来运行支持软件。
本主题介绍如何使用 Amazon GameLift 控制台或 AWS CLI 工具创建容器组定义。有关设置容器组配置的更多详细信息,请参阅设计一支亚马逊 GameLift 集装箱船队。
创建容器定义JSON
文件
创建容器组定义时,还要为该组定义容器。容器定义指定存储容器映像的 Amazon ECR 存储库,以及网络端口的可选配置、CPU 和内存使用限制以及其他设置。我们建议创建一个包含容器组中所有容器的配置的单个JSON
文件。维护文件对于存储、共享、版本跟踪这些关键配置非常有用。如果您使用 AWS CLI 创建容器组定义,则可以在命令中引用该文件。
创建容器定义
创建并打开一个新
.JSON
文件。例如:[~/work/glc]$
vim SimpleServer.json为该组的每个容器创建单独的容器定义。复制以下示例内容,并根据需要对其进行修改,以适应您的容器。有关容器定义语法的详细信息,请参阅 Amazon GameLift API 参考ContainerDefinitionInput中的。
将文件保存在本地,以便您可以在 AWS CLI 命令中引用该文件。
此示例描述了您的副本容器组的基本容器。必不可少的副本容器包括您的游戏服务器应用程序、Amazon A GameLift gent,还可能包括用于托管游戏的其他支持软件。定义必须包括名称、图像 URI 和端口配置。此示例还设置了一些特定于容器的资源限制。
[ { "ContainerName": "SimpleServer", "ImageUri": "111122223333.dkr.ecr.us-east-1.amazonaws.com/gl-containers:complex-server", "Essential": true, "Cpu": 256, "MemoryLimits": { "HardLimit": 128 }, "PortConfiguration": { "ContainerPortRanges": [ { "FromPort": 2000, "Protocol": "TCP", "ToPort": 2100 } ] } } ]