

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

# 访问 Amazon S3 的私有子网的示例策略
<a name="private-subnet-iampolicy"></a>

在私有子网中启动 Amazon EMR 集群时，必须提供通往 Amazon S3 的路由。默认情况下，Amazon S3 的网关终端节点允许访问所有存储桶。您可以创建 VPC 终端节点策略来限制对特定存储桶的访问；如果这样做，则需要添加允许访问 Amazon EMR 要求的特定 S3 存储桶的策略声明。有关 Amazon S3 终端节点的更多信息，请参阅 Ama [zon S3 的网关终端节点](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html)。

由您决定满足业务需求的策略限制。本页详细介绍了 Amazon EMR 成功启动集群所需的存储桶，然后是授予访问这些存储桶权限的 VPC 终端节点策略示例。

## 必需的存储桶
<a name="private-subnet-iampolicy-required-buckets"></a>

### 亚马逊 Linux AMI 存储库
<a name="private-subnet-iampolicy-al-repos"></a>

所有亚马逊 EMR 集群都需要访问亚马逊 Linux 存储库。具体的存储桶 ARN 取决于所使用的 Amazon Linux 版本，这取决于所使用的亚马逊 EMR 版本：
+ 亚马逊 EMR 5.29.0 及更早版本：AL1 存储库和 `arn:aws:s3:::packages.{{region}}.amazonaws.com` `arn:aws:s3:::repo.{{region}}.amazonaws.com`
+ 亚马逊 EMR 5.30.0 到 6.15.0：AL2 存储库和 `arn:aws:s3:::amazonlinux.{{region}}.amazonaws.com` `arn:aws:s3:::amazonlinux-2-repos-{{region}}`
+ 亚马逊 EMR 7.0.0 及更高版本：AL2023 存储库 `arn:aws:s3:::al2023-repos-{{region}}-de612dc2` AL2023

### 亚马逊 EMR 存储库
<a name="private-subnet-iampolicy-emr-repos"></a>

亚马逊 EMR 5.22.0 及更高版本需要访问 EMR 存储库存储桶。`arn:aws:s3:::repo.{{region}}.emr.amazonaws.com`

亚马逊 EMR 8.0.0 及更高版本以及亚马逊 EMR Spark 8.0.0 及更高版本需要访问 EMR 实例数据存储桶和。`arn:aws:s3:::aws157-instance-data-0-prod-{{region}}` `arn:aws:s3:::aws157-instance-data-1-prod-{{region}}`

在 ap-southeast-2 区域，这些存储桶改为命名为 and。`arn:aws:s3:::aws157-instance-data-bucket-0-prod-ap-southeast-2` `arn:aws:s3:::aws157-instance-data-bucket-1-prod-ap-southeast-2`

### 日志记录
<a name="private-subnet-iampolicy-logging"></a>

如果您启用集群日志记录，则需要在创建集群时指定为日志目标的存储桶以及系统日志存储桶的 PUT 权限。在 us-east-1 区域中，存储桶 ARN `arn:aws:s3:::aws157-logs-prod` 为；对于所有其他区域，存储桶 ARN 为。`arn:aws:s3:::aws157-logs-prod-{{region}}`

### 持久性应用程序用户界面
<a name="private-subnet-iampolicy-app-ui"></a>

在 Amazon EMR 5.25.0 或更高版本中，要允许一键访问永久应用程序用户界面，您必须允许 Amazon EMR 访问收集应用程序日志的系统存储桶。`arn:aws:s3:::prod.{{region}}.appinfo.src`有关更多信息，请参阅[在 Amazon EMR 中查看永久应用程序用户界面](https://docs.aws.amazon.com/emr/latest/ManagementGuide/app-history-spark-UI.html)。

## 策略示例
<a name="private-subnet-iampolicy-example"></a>

以下示例策略提供了在 us-east-2 区域的私有子网中启动 Amazon EMR 8.0.0 集群所需的权限，同时启用了日志记录和永久应用程序用户界面。

```
{
  "Version":"2012-10-17", 		 	 	 
  "Statement": [
    {
      "Sid": "AmazonLinux2023AMIRepositoryAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::al2023-repos-us-east-2-de612dc2/*"
      ]
    },
    {
      "Sid": "EmrRepositoryAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::repo.us-east-2.emr.amazonaws.com/*",
        "arn:aws:s3:::aws157-instance-data-0-prod-us-east-2/*",
        "arn:aws:s3:::aws157-instance-data-1-prod-us-east-2/*"
      ]
    },
    {
      "Sid": "EnableClusterLogs",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3:Put*"
      ],
      "Resource": [
        "arn:aws:s3:::aws157-logs-prod-us-east-2/*",
        "arn:aws:s3:::{{my-logs-bucket}}/*"
      ]
    },
    {
      "Sid": "EnableApplicationHistory",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3:Put*",
        "s3:Get*",
        "s3:Create*",
        "s3:Abort*",
        "s3:List*"
      ],
      "Resource": [
        "arn:aws:s3:::prod.us-east-2.appinfo.src/*"
      ]
    }
  ]
}
```