

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

# 概述
<a name="overview"></a>

Terraform 提供者是允许 Terraform 与不同 API 进行交互的插件。Terraform P AWS rovider 是用于使用 Terraform 管理 AWS 基础设施即代码 (IaC) 的官方插件。它将 Terraform 语法转换为 AWS API 调用，用于创建、读取、更新和删除资源。 AWS 

 AWS 提供程序负责处理身份验证、将 Terraform 语法转换为 AWS API 调用以及在中配置资源。 AWS你可以使用 Terraform `provider` 代码块来配置 Terraform 用来与 API 交互的提供者插件。 AWS 您可以配置多个 P AWS rovider 区块来管理不同 AWS 账户 和地区的资源。

以下是 Terraform 配置示例，该配置使用多个带有别名的 AWS 提供程序块来管理在不同区域和账户中具有副本的亚马逊关系数据库服务 (Amazon RDS) 数据库。主要提供商和次要提供商扮演不同的 AWS Identity and Access Management (IAM) 角色：

```
# Configure the primary AWS Provider
provider "aws" {
  region = "us-west-1"
  alias  = "primary"
}

# Configure a secondary AWS Provider for the replica Region and account
provider "aws" {
  region      = "us-east-1"
  alias       = "replica"
  assume_role {
    role_arn     = "arn:aws:iam::<replica-account-id>:role/<role-name>"
    session_name = "terraform-session"
  }
}

# Primary Amazon RDS database
resource "aws_db_instance" "primary" {
  provider = aws.primary

  # ... RDS instance configuration
}

# Read replica in a different Region and account
resource "aws_db_instance" "read_replica" {
  provider = aws.replica

  # ... RDS read replica configuration
  replicate_source_db = aws_db_instance.primary.id
}
```

在本示例中：
+ 第一个`provider`区块使用别`primary`名配置`us-west-1`区域中的主 AWS 提供商。
+ 第二个`provider`模块使用别`replica`名配置`us-east-1`区域中的辅助 AWS 提供商。此提供程序用于在不同的区域和账户中创建主数据库的只读副本。该`assume_role`区块用于在副本账户中扮演 IAM 角色。`role_arn`指定要代入的 IAM 角色的亚马逊资源名称 (ARN)，并且`session_name`是 Terraform 会话的唯一标识符。
+ 该`aws_db_instance.primary`资源使用该`us-west-1`地区的`primary`提供商创建主 Amazon RDS 数据库。
+ 该`aws_db_instance.read_replica`资源使用`replica`提供程序在`us-east-1`区域中创建主数据库的只读副本。该`replicate_source_db`属性引用`primary`数据库的 ID。