

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

# 演练：将对象上传到 Amazon S3 桶时附加 POSIX 权限
<a name="attach-s3-posix-permissions"></a>

以下步骤将指导您将对象上传到具有 POSIX 权限的 Amazon S3。此操作允许您在创建链接到该 S3 桶的 Amazon FSx 文件系统时导入 POSIX 权限。

**将具有 POSIX 权限的对象上传到 Amazon S3**

1. 在您的本地计算机或机器上，使用以下示例命令来创建要上传到 S3 桶的测试目录（`s3cptestdir`）和文件（`s3cptest.txt`）。

   ```
   $ mkdir s3cptestdir
   $ echo "S3cp metadata import test" >> s3cptestdir/s3cptest.txt
   $ ls -ld s3cptestdir/ s3cptestdir/s3cptest.txt
   drwxr-xr-x 3 500 500 96 Jan 8 11:29 s3cptestdir/
   -rw-r--r-- 1 500 500 26 Jan 8 11:29 s3cptestdir/s3cptest.txt
   ```

   新创建的文件和目录具有文件所有者用户 ID（UID）和组 ID（GID）500，以及前面示例所示的权限。

1. 调用 Amazon S3 API，创建具有元数据权限的 `s3cptestdir` 目录。您必须使用尾斜杠（`/`）指定目录名称。有关支持的 POSIX 元数据的信息，请参阅[针对数据存储库的 POSIX 元数据支持](posix-metadata-support.md)。

   将 `{{bucket_name}}` 替换为您的 S3 桶的名称。

   ```
   $ aws s3api put-object --bucket {{bucket_name}} --key s3cptestdir/ --metadata '{"user-agent":"aws-fsx-lustre" , \
         "file-atime":"1595002920000000000ns" , "file-owner":"500" , "file-permissions":"0100664","file-group":"500" , \
         "file-mtime":"1595002920000000000ns"}'
   ```

1. 验证 POSIX 权限是否已标记到 S3 对象元数据。

   ```
   $ aws s3api head-object --bucket {{bucket_name}} --key s3cptestdir/
   {
       "AcceptRanges": "bytes",
       "LastModified": "Fri, 08 Jan 2021 17:32:27 GMT",
       "ContentLength": 0,
       "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
       "VersionId": "bAlhCoWq7aIEjc3R6Myc6UOb8sHHtJkR",
       "ContentType": "binary/octet-stream",
       "Metadata": {
           "user-agent": "aws-fsx-lustre",
           "file-atime": "1595002920000000000ns",
           "file-owner": "500",
           "file-permissions": "0100664",
           "file-group": "500",
           "file-mtime": "1595002920000000000ns"
       }
   }
   ```

1. 将测试文件（在步骤 1 中创建）从您的计算机上传到具有元数据权限的 S3 桶。

   ```
   $ aws s3 cp s3cptestdir/s3cptest.txt s3://{{bucket_name}}/s3cptestdir/s3cptest.txt \
         --metadata '{"user-agent":"aws-fsx-lustre" , "file-atime":"1595002920000000000ns" , \
         "file-owner":"500" , "file-permissions":"0100664","file-group":"500" , "file-mtime":"1595002920000000000ns"}'
   ```

1. 验证 POSIX 权限是否已标记到 S3 对象元数据。

   ```
   $ aws s3api head-object --bucket {{bucket_name}} --key s3cptestdir/s3cptest.txt
   {
       "AcceptRanges": "bytes",
       "LastModified": "Fri, 08 Jan 2021 17:33:35 GMT",
       "ContentLength": 26,
       "ETag": "\"eb33f7e1f44a14a8e2f9475ae3fc45d3\"",
       "VersionId": "w9ztRoEhB832m8NC3a_JTlTyIx7Uzql6",
       "ContentType": "text/plain",
       "Metadata": {
           "user-agent": "aws-fsx-lustre",
           "file-atime": "1595002920000000000ns",
           "file-owner": "500",
           "file-permissions": "0100664",
           "file-group": "500",
           "file-mtime": "1595002920000000000ns"
       }
   }
   ```

1. 验证与 S3 桶链接的 Amazon FSx 文件系统的权限。

   ```
   $ sudo lfs df -h /fsx
   UUID                       bytes        Used   Available Use% Mounted on
   3rnxfbmv-MDT0000_UUID       34.4G        6.1M       34.4G   0% /fsx[MDT:0]
   3rnxfbmv-OST0000_UUID        1.1T        4.5M        1.1T   0% /fsx[OST:0]
    
   filesystem_summary:         1.1T        4.5M        1.1T   0% /fsx
    
   $ cd /fsx/s3cptestdir/
   $ ls -ld s3cptestdir/
   drw-rw-r-- 2 500 500 25600 Jan  8 17:33 s3cptestdir/
   
   $ ls -ld s3cptestdir/s3cptest.txt
   -rw-rw-r-- 1 500 500 26 Jan 8 17:33 s3cptestdir/s3cptest.txt
   ```

`s3cptestdir` 目录和 `s3cptest.txt` 文件都导入了 POSIX 权限。