

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon EMR on EKS 讀取、寫入和上傳資料到 Amazon S3 Express One Zone
<a name="upload-data-s3-express"></a>

透過 Amazon EMR 7.2.0 版及更高版本，您可以在執行任務和工作負載時搭配 Amazon [Amazon S3 ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone.html) EMR on EKS，以提高效能。S3 Express One Zone 是一種高效能的單區域 Amazon S3 儲存類別，可為對大多數延遲敏感的應用程式提供一致的單一位數毫秒資料存取。在發布時，S3 Express One Zone 提供 Amazon S3 中最低延遲和最高效能的雲端物件儲存。

## 先決條件
<a name="upload-data-s3-express-prereqs"></a>

您必須先具備下列先決條件，才能將 S3 Express One Zone 與 Amazon EMR on EKS 搭配使用：
+ [已完成設定 Amazon EMR on EKS](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/setting-up.html)。
+ 設定 Amazon EMR on EKS 之後，[請建立虛擬叢集](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/virtual-cluster.html#create-virtul-cluster)。

## 開始使用 S3 Express One Zone
<a name="upload-data-s3-express-getting-started"></a>

請依照下列步驟開始使用 S3 Express One Zone

1. 將 `CreateSession` 許可新增至您的任務執行角色。當 S3 Express One Zone 最初在 S3 物件`PUT`上執行 `GET`、 `LIST`或 等動作時，儲存類別`CreateSession`會代表您呼叫 。以下是如何授予 `CreateSession`許可的範例。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3express:*:*:bucket/{{DOC-EXAMPLE-BUCKET}}"
         ],
         "Action": [
           "s3express:CreateSession"
         ],
         "Sid": "AllowS3EXPRESSCreatesession"
       }
     ]
   }
   ```

------

1. 您必須使用 Apache Hadoop 連接器 S3A 來存取 S3 Express 儲存貯體，因此請將 Amazon S3 URIs 變更為使用`s3a`結構描述來使用連接器。如果他們不使用 結構描述，您可以變更用於 `s3`和 結構`s3n`描述的檔案系統實作。

   若要變更 `s3` 結構描述，請指定下列叢集組態：

   ```
   [
     {
       "Classification": "core-site",
       "Properties": {
         "fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
         "fs.AbstractFileSystem.s3.impl": "org.apache.hadoop.fs.s3a.S3A"
       }
     }
   ]
   ```

   若要變更 s3n 配置，請指定下列叢集組態：

   ```
   [
     {
       "Classification": "core-site",
       "Properties": {
         "fs.s3n.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
         "fs.AbstractFileSystem.s3n.impl": "org.apache.hadoop.fs.s3a.S3A",
         "fs.s3a.endpoint.region": "{{us-west-2}}",
         "fs.s3a.change.detection.mode": "none",
         "fs.s3a.select.enabled": "false"
       }
     },
      {
       "Classification": "spark-defaults",
       "Properties": {
         "spark.hadoop.fs.s3a.aws.credentials.provider": "software.amazon.awssdk.auth.credentials.WebIdentityTokenFileCredentialsProvider",
         "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false"
       }
     }
   ]
   ```

1. 在您的 spark-submit 組態中，使用 Web 身分憑證提供者。

   ```
   "spark.hadoop.fs.s3a.aws.credentials.provider=com.amazonaws.auth.WebIdentityTokenCredentialsProvider"
   ```