Version:

Resource Mapping 文件

资源映射文件 是一个 JSON 文件,它提供 查找名称 到有关 AWS 资源的 属性 集合的映射。O3DE 运行时可以查询映射文件,以便轻松查找和利用 AWS 资源。通常,正在开发的项目将使用与项目的已发布版本不同的部署,因此使用不同的映射文件。

映射文件包含一个或多个资源条目和一组全局属性。

资源条目格式

每个条目定义一个查找名称(资源的逻辑名称)和一个属性集合,格式如下:

"<lookup name>":  {
    "Type": string, (required)
    "Name/ID": string, (required)
    "Region": string, (optional)
    "AccountId": string (optional)
}

支持的属性

  • Type - AWS资源类型,例如AWS::Lambda::Function, AWS::S3::Bucket等,应该映射到一个 CloudFormation资源类型
  • Name/ID - AWS 资源名称或id。
  • Region - 如果此资源部署到其他 AWS 区域,则用于覆盖 global region 属性。
  • AccountId - 用于覆盖全局账户 ID 属性(如果此资源部署在其他 AWS 账户 中)。

全局属性

映射文件还支持一个 可选的 和两个 必须的 全局属性:

  • AccountId (可选的) - 用于搜索 O3DE 应用程序代码中引用的 AWS 资源的默认 AWS 账户。当未以其他方式显式引用账户 ID 时使用(例如在特定资源映射上)。
  • Region - 要用于此映射文件的默认区域。
  • Version - 本文档的 json 架构版本。

完整映射文件的示例

{
    "AWSResourceMappings": {
        "MyKey": {
            "Name/ID": "ExampleLambda",
            "Type": "AWS::Lambda::Function"
        }
    },
    "AccountId": "123456789123",
    "Region": "us-west-2",
    "Version": "1.0.0"
}

此映射文件具有单个映射:MyKey,它是一个名为“ExampleLambda”的 Lambda 函数。它部署在账户 ID 为“123456789123”的 AWS 账户中的 us-west-2 中。

重要:
我们强烈建议不要在分发到不受信任的环境的构建中包含您的 AWS 账户 ID。根据您的使用案例,匿名 client authentication 或使用 自定义域 可能会提供与 AWS 资源交互的方法,而无需指定账户 ID。

生成资源映射文件

映射文件具有定义明确的 JSON 格式。它们可以使用自定义工具生成,也可以手动生成。但是,生成或编辑这些文件的最简单方法是使用 O3DE 提供的可视化 资源映射工具

所有映射文件都应保存到项目的 Config 目录中。

使用资源映射

在位于工程的 Registry 目录中的 awscoreconfiguration.setreg文件的ResourceMappingConfigFileName设置中定义要在加载时使用的资源映射文件。有关此文件的更多信息,请参阅 项目设置 。AWS Core Gem 在初始化时加载定义的映射文件,并支持对映射的访问。

使用请求总线 (AWSResourceMappingRequestBus) 与配置的资源映射文件进行交互。有关总线的类 API 参考,请参阅 AWSResourceMappingRequests

示例:读取条目

// 读取名为 “MyTableKey” 的映射条目的设置。
AZStd::string requestTableName = "";
AWSResourceMappingRequestBus::BroadcastResult(requestTableName, &AWSResourceMappingRequests::GetResourceNameId, "MyTableKey");

AZStd::string requestRegion = "";
AWSResourceMappingRequestBus::BroadcastResult(requestRegion, &AWSResourceMappingRequests::GetResourceRegion, "MyTableKey");