MySQL Shell 9.0  /  ...  /  与 S3 兼容的存储

4.7.2 与 S3 兼容的存储

MySQL Shell S3 支持已针对以下与 S3 兼容的存储服务进行了测试

MySQL Shell 支持在环境变量和配置文件中配置 AWS 凭据。

配置参数优先级

配置参数按优先顺序使用

  1. 选项。例如,s3Profile 优先于环境变量 AWS_PROFILE 和配置文件中的默认配置文件。

  2. 环境变量。例如,环境变量 AWS_SHARED_CREDENTIALS_FILE 优先于 credentials 文件的默认位置,~/.aws/credentials

  3. DEFAULT 环境变量(如果存在)。例如,环境变量 AWS_REGION 和环境变量 AWS_DEFAULT_REGION

  4. 在配置文件中定义的参数。

  5. AWS 默认值。

例如,对于 AWS 区域,按优先顺序排列

  1. s3Region 选项。

  2. AWS_REGION 环境变量。

  3. AWS_DEFAULT_REGION 环境变量。

  4. 在配置文件中定义的区域。

  5. us-east-1 的默认值。

AWS 凭据按以下优先顺序读取

  1. 环境变量(如果未定义 s3Profile 选项)。

  2. 凭据文件(针对指定的配置文件)。

  3. credential_process,在配置文件中定义。此配置类型包含一个外部命令,该命令检索或生成 AWS 身份验证凭据并将它们写入 stdout

  4. 配置文件(针对指定的配置文件)。

环境变量

有关 AWS 环境变量的信息,请参阅 配置 AWS CLI 的环境变量

您可以定义以下特定于 AWS S3 的环境变量

  • AWS_PROFILE:指定要使用的配置文件的名称。这可以是凭据或配置文件中配置文件的名称,也可以是值 default 以使用默认配置文件。此环境变量会覆盖配置文件中名为 [default] 的配置文件。您可以使用 --s3Profile 选项覆盖此环境变量。

  • AWS_SHARED_CREDENTIALS_FILE:用于存储访问密钥的文件的位置。例如 ~/.aws/credentials

  • AWS_CONFIG_FILE:用于存储配置配置文件的文件的位置。例如 ~/.aws/config

  • AWS_REGION:指定要将请求发送到的 AWS 区域。此值会覆盖 AWS_DEFAULT_REGION 环境变量和配置文件中定义的 profile

  • AWS_DEFAULT_REGION:指定要将请求发送到的 AWS 区域。如果指定了 --s3Region 选项和 AWS_REGION 环境变量,则此值将被覆盖。

  • AWS_ACCESS_KEY_ID:指定与 IAM 用户或角色关联的 AWS 访问密钥。

  • AWS_SECRET_ACCESS_KEY:指定与访问密钥关联的密钥。此变量会覆盖配置文件中定义的 aws_secret_access_key

  • AWS_SESSION_TOKEN:指定如果您使用的是临时安全凭据,则所需的会话令牌值。此变量会覆盖配置文件中定义的 aws_session_token

配置文件

MySQL Shell 需要在一个或多个配置文件中包含以下参数

  • aws_access_key_id:指定与用户关联的访问密钥。如果不存在,则会引发异常。

  • aws_secret_access_key:指定与访问密钥关联的密钥。如果不存在,则会引发异常。

  • aws_session_token:指定如果您使用的是临时安全凭据,则所需的会话令牌。如果不存在,则不会使用它来对用户进行身份验证。

  • region:指定云服务区域。如果不存在,则使用默认值 us-east-1

  • credential_process:此配置类型包含一个外部命令,该命令检索或生成 AWS 身份验证凭据并将它们写入 stdout

    注意

    credential_process 只能在 config 文件中定义。

    有关更多信息,请参阅以下内容

如果您已安装并配置了 AWS CLI,MySQL Shell 会自动从默认位置 .aws/ 读取连接参数。要使用备用配置,请使用相关的覆盖选项从命令行执行此操作。

如果您使用的是 Oracle 云基础设施的 S3 兼容性 API,请参阅 创建客户密钥,了解有关创建所需凭据的信息。

注意

默认情况下,AWS CLI 会创建两个配置文件,config(存储区域和输出格式等参数)和 credentials(存储访问密钥和会话令牌)。也可以将所有配置参数放在一个文件 config 中。有关更多信息,请参阅 AWS 配置和身份验证设置。但是,如果您在这两个文件中都定义了访问密钥和密钥访问密钥,则以 credentials 文件中定义的为准。

以下示例显示了一对默认的 AWS CLI 配置文件

        /home/.aws/credentials
        
        [default]
        aws_access_key_id = AKIA6AV......
        aws_secret_access_key = XHRY579I.....
        
        /home/.aws/config
        
        [default]
        region = us-west-1
        output = json

连接重试策略

所有到 AWS S3 的连接失败都会重试三次,每次重试之间延迟 1 秒。

如果在连接创建 10 分钟后发生故障,则延迟将更改为指数退避策略

  • 第一次延迟:3-6 秒

  • 第二次延迟:18-36 秒

  • 第三次延迟:40-80 秒