

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

# Amazon S3 檔案磁碟區
<a name="s3files-volumes"></a>

S3 檔案可讓檔案系統直接存取存放在 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的資料。使用 AWS Batch，您可以在任務定義中定義 S3 檔案磁碟區，讓您的容器可以使用標準檔案操作讀取和寫入 Amazon S3 資料。

若要使用 S3 檔案磁碟區，您需要 S3 檔案系統，並在與 AWS Batch 運算環境相同的 VPC 中掛載目標。如需包括儲存貯體組態、IAM 角色、檔案系統建立和掛載目標的完整設定說明，請參閱《Amazon [S3 使用者指南》中的 S3 檔案先決條件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-prereq-policies.html)和《Amazon *Elastic Container Service 開發人員指南*》中的為 Amazon [ECS 設定 S3 檔案](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/s3files-volumes.html)。 *Amazon S3 * 

## Amazon S3 檔案磁碟區考量事項
<a name="s3files-volume-considerations"></a>

使用 S3 檔案磁碟區時，請考慮下列事項：
+ 
**重要**  
Amazon EC2 啟動類型目前不支援 S3 檔案。如果您在任務定義中設定 S3 檔案系統，並嘗試在 Amazon EC2 啟動類型上執行，則任務會在啟動時失敗。未來版本預計支援 Amazon EC2 啟動類型。
+ S3 檔案磁碟區一律啟用傳輸加密。您可以選擇性地使用 `transitEncryptionPort` 參數指定連接埠。預設連接埠為 `2049`。
+ 任務角色 （相當於 Amazon ECS 任務角色） 必須具有 檔案系統的 `s3files:ClientMount`和 `s3files:ClientWrite`許可。對於從 Amazon S3 直接讀取，角色也需要 `s3:GetObject`、 `s3:GetObjectVersion`和 儲存貯體的`s3:ListBucket`許可。
+ S3 檔案系統掛載目標必須位於相同的 VPC 中，並且可從運算 AWS Batch 環境的子網路連接。掛載目標安全群組必須允許來自運算環境安全群組的傳入 NFS 流量 (TCP 連接埠 2049)。

## 使用 Amazon S3 檔案存取點
<a name="s3files-volume-accesspoints"></a>

S3 檔案存取點是檔案系統中的應用程式特定進入點，可針對所有檔案系統請求強制執行 POSIX 使用者身分和根目錄。您可以使用存取點來隔離租用戶，讓每個任務只能存取共用檔案系統中自己的目錄。

**注意**  
當您使用 `accessPointArn` 參數指定存取點時，`rootDirectory`必須省略 或將 設定為 `/`。存取點會強制執行自己的根目錄路徑。

如需建立和管理存取點的詳細資訊，請參閱《Amazon [ S3 使用者指南》中的為 S3 檔案系統建立存取點](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-access-points-creating.html)。 *Amazon S3 * 如需使用檔案系統政策強制執行存取點隔離的詳細資訊，請參閱《Amazon [ S3 使用者指南》中的 S3 檔案如何與 IAM 搭配使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-security-iam.html)。 *Amazon S3 *

## 在任務定義中指定 Amazon S3 檔案系統
<a name="specify-s3files-config"></a>

若要對容器使用 S3 檔案磁碟區，您必須在任務定義中指定磁碟區和掛載點組態。下列任務定義 JSON 程式碼片段顯示容器的 `volumes`和 `mountPoints` 物件的語法：

```
{
    "ecsProperties": {
        "taskProperties": [
            {
                ...,
                "taskRoleArn": "arn:aws:iam::{{<account>}}:role/{{<job-role-name>}}",
                "containers": [
                    {
                        ...,
                        "mountPoints": [
                            {
                                "sourceVolume": "{{myS3FilesVolume}}",
                                "containerPath": "{{/mnt/s3data}}",
                                "readOnly": {{false}}
                            }
                        ]
                    }
                ],
                "volumes": [
                    {
                        "name": "{{myS3FilesVolume}}",
                        "s3filesVolumeConfiguration": {
                            "fileSystemArn": "arn:aws:s3files:{{<region>}}:{{<account>}}:file-system/{{<fs-id>}}",
                            "rootDirectory": "{{/keypath/in/s3}}"
                        }
                    }
                ]
            }
        ]
    }
}
```

`s3filesVolumeConfiguration`  
類型：物件  
必要：否  
使用 S3 檔案磁碟區時，會指定此參數。    
`fileSystemArn`  
類型：字串  
必要：是  
要使用的 S3 檔案系統的完整 ARN。  
`rootDirectory`  
類型：字串  
必要：否  
S3 檔案系統中要掛載為主機內根目錄的目錄。如果省略此參數，則會使用檔案系統的根。指定 `/` 的效果與忽略此參數的效果相同。長度上限為 4，096 個字元。  
如果在 中指定 S3 檔案存取點`accessPointArn`，則必須省略根目錄參數，或將 設定為 `/`。這會強制執行存取點上設定的路徑。  
`transitEncryptionPort`  
類型：整數  
必要：否  
在 AWS Batch 主機和 S3 檔案伺服器之間傳送加密資料時要使用的連接埠。如果您未指定傳輸加密連接埠，`2049`則會使用 的預設值。該值必須介於 0 到 65,535 之間。S3 檔案磁碟區一律啟用傳輸加密。  
`accessPointArn`  
類型：字串  
必要：否  
要使用之 S3 檔案存取點的 ARN。如果指定存取點，`s3filesVolumeConfiguration`則必須省略 中的根目錄值，或將 設定為 `/`。這會強制執行存取點上設定的路徑。存取點會強制執行 POSIX 使用者身分，並可以限制對檔案系統中特定目錄的存取。如需詳細資訊，請參閱《Amazon [ S3 使用者指南》中的為 S3 檔案系統建立存取點](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-access-points-creating.html)。 *Amazon S3 *

## 搭配 AWS Batch 和 Amazon EKS 使用 S3 檔案磁碟區
<a name="s3files-eks-volumes"></a>

對於使用 Amazon EKS 資源的任務， 透過 EKS 任務定義磁碟區組態`persistentVolumeClaim`中的 AWS Batch 支援 S3 檔案磁碟區。您必須先在 Amazon EKS 叢集中預先建立持久性磁碟區和持久性磁碟區宣告，才能在任務定義中參考它。

下列任務定義程式碼片段說明如何參考 S3 檔案持久性磁碟區宣告：

```
{
    "eksProperties": {
        "podProperties": {
            ...,
            "containers": [
                {
                    ...,
                    "volumeMounts": [
                        {
                            "name": "{{s3files-vol}}",
                            "mountPath": "{{/mnt/s3data}}"
                        }
                    ]
                }
            ],
            "volumes": [
                {
                    "name": "{{s3files-vol}}",
                    "persistentVolumeClaim": {
                        "claimName": "{{<s3files-pvc-name>}}"
                    }
                }
            ]
        }
    }
}
```

如需使用 Amazon EKS 設定 S3 檔案的詳細資訊，請參閱《Amazon [ S3 使用者指南》中的在 Amazon EKS 中掛載 S3 檔案系統](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-mounting-eks.html)。 *Amazon S3 * 如需完整的磁碟區參數參考，請參閱 *AWS Batch API 參考*中的 [EksVolume](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksVolume.html)。