通过外部方式为适用于 PHP 的 Amazon SDK 版本 3 配置服务客户端 - 适用于 PHP 的 Amazon SDK
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

通过外部方式为适用于 PHP 的 Amazon SDK 版本 3 配置服务客户端

许多配置设置可以通过代码以外的方式来处理。大多数配置设置可以设置为环境变量,也可以在单独的共享 Amazon config 文件中设置。Amazon 共享 config 文件可以维护多组独立的设置(称为配置文件),以便为不同的环境或测试提供不同的配置。有关 Amazon 共享 configcredentials 文件的完整讨论,请参阅《Amazon SDK 和工具参考指南》

大多数环境变量和共享 config 文件设置都已标准化,可在 Amazon SDK 和工具之间共享,从而支持在不同编程语言和应用程序之间保持一致的功能。

要查看 SDK 可以从环境变量或配置文件中解析的所有设置,请参阅《Amazon SDK 和工具参考指南》中的设置参考

用于客户端配置的配置提供程序链

SDK 会检查几个位置(或来源)以查找配置值。

  1. 在代码中或服务客户端本身上设置的任何显式设置均优先于其他任何设置。

  2. 环境变量

    • 有关设置环境变量的详细信息,请参阅《Amazon SDK 和工具参考指南》中的环境变量

    • 请注意,您可以在不同作用域层级为 shell 配置环境变量:系统级、用户级,以及特定终端会话级。

  3. 共享 configcredentials 文件

  4. 最后才会使用 SDK 源代码本身提供的任何默认值。

    • 某些属性(例如“区域”)没有默认值。您必须在代码、环境设置或共享 config 文件中明确指定这些属性。如果 SDK 无法解析所需的配置,API 请求在运行时会失败。

除了这个通用配置链之外,适用于 PHP 的 Amazon SDK 版本 3 还使用专门的提供程序链,包括凭证提供程序链Amazon Web Services 区域解析链。这些专门的链会添加其他提供程序,这些提供程序会考虑 SDK 的运行环境。例如,在容器或 EC2 实例中。

创建使用外部设置配置的服务客户端

您需要在应用程序中创建一个服务客户端才能与 Amazon Web Services 服务通信。服务客户端是您与 Amazon Web Services 服务建立连接的关键组件,它会处理所有复杂的通信细节,让您无需为此操心。它们会自动处理安全性、错误处理和重试等重要任务,让您可以专注于构建应用程序,而不是处理复杂的技术问题。

使用不带参数的构造函数构造服务客户端

如果您需要的所有配置设置都来自外部来源,则可以使用空构造函数来创建服务客户端:

require 'vendor/autoload.php'; use Aws\S3\S3Client; $s3 = new S3Client([]);

前面的代码段创建了一个 S3Client 实例。在创建过程中,SDK 会按照配置提供程序链依次查找所需的设置。SDK 找到设置值后,就会使用该值。

创建过程中还将使用默认 Amazon Web Services 区域提供程序链和默认凭证提供程序链。在链的某个地方,SDK 必须解析要使用的 Amazon Web Services 区域,并找到使其能够为签名请求检索凭证的设置。如果 SDK 无法找到这些值,则客户端创建失败。

适用于 PHP 的 Amazon SDK 版本 3 环境变量

除了大多数 Amazon SDK 支持的跨 SDK 设置外,适用于 PHP 的 Amazon SDK 版本 3 还可使用以下环境变量:

AWS_SDK_LOAD_NONDEFAULT_CONFIG

设置后,此环境变量会指示 SDK 除 credentials 文件(~/.aws/credential)之外,还从 Amazon config 文件(~/.aws/config)加载凭证。

AWS_SDK_UA_APP_ID

设置自定义应用程序标识符,以包含在 SDK 发出的请求的 User-Agent 标头中。

AWS_SUPPRESS_PHP_DEPRECATION_WARNING

当设置为 true 时,会抑制 SDK 可能生成的 PHP 弃用警告。