

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

# 搭配支援的 API 操作使用多區域存取點
<a name="MrapOperations"></a>

 Amazon S3 提供一組可管理多區域存取點的操作。Amazon S3 會同步處理其中一些操作，也會非同步處理另一些操作。當您叫用非同步操作時，Amazon S3 會先同步授權請求的操作。如果授權成功，Amazon S3 會傳回一個字符，而您可以用它來追蹤請求的操作的進度和結果。

**注意**  
透過 Amazon S3 主控台提出的請求始終同步。主控台會等到請求完成後，才會允許您提交其他請求。

您可以使用 主控台檢視非同步操作的目前狀態和結果，也可以`DescribeMultiRegionAccessPointOperation`在 、 AWS CLI AWS SDKs或 REST API 中使用 。Amazon S3 會在回應非同步操作時提供追蹤字符。您可以將該追蹤字符作為 `DescribeMultiRegionAccessPointOperation` 的參數。當您包括追蹤字符時，Amazon S3 接著會傳回指定操作的目前狀態和結果，包括任何錯誤或相關的資源資訊。Amazon S3 會同步執行 `DescribeMultiRegionAccessPointOperation` 操作。

所有建立或維護多區域存取點的控制平面請求，都必須路由至 `US West (Oregon)` 區域。對於多區域存取點資料平面請求，不需要指定區域。對於多區域存取點容錯移轉控制平面，請求必須路由至五個受支援區域的其中一個。如需多區域存取點支援區域的詳細資訊，請參閱[多區域存取點約束與限制](MultiRegionAccessPointRestrictions.md)。

此外，您必須將 `s3:ListAllMyBuckets`許可授予提出管理多區域存取點請求的使用者、角色或其他 AWS Identity and Access Management (IAM) 實體。

下列範例示範如何在 Amazon S3 中搭配相容操作使用多區域存取點。

**Topics**
+ [多區域存取點與 AWS 服務 和 AWS SDKs相容性](#mrap-api-support)
+ [多區域存取點與 S3 操作的相容性](#mrap-operations-support)
+ [檢視您的多區域存取點路由狀態](#query-mrap-routing-configuration)
+ [更新您的基礎 Amazon S3 儲存貯體政策](#update-underlying-bucket-policy)
+ [更新多區域存取點路由組態](#update-mrap-route-configuration)
+ [在您的多區域存取點中將物件新增至儲存貯體](#add-bucket-mrap)
+ [從您的多區域存取點中擷取物件](#get-object-mrap)
+ [列出存放在以多區域存取點為基礎之儲存貯體的物件](#list-objects-mrap)
+ [搭配多區域存取點使用預先簽章的 URL](#use-presigned-url-mrap)
+ [使用以多區域存取點設定為請求者付款的儲存貯體](#use-requester-pays-mrap)

## 多區域存取點與 AWS 服務 和 AWS SDKs相容性
<a name="mrap-api-support"></a>

若要將多區域存取點與需要 Amazon S3 儲存貯體名稱的應用程式搭配使用，請在使用 AWS SDK 提出請求時使用多區域存取點的 Amazon Resource Name (ARN)。若要檢查哪些 AWS SDKs 與多區域存取點相容，請參閱與 [AWS SDKs的相容性](https://docs.aws.amazon.com/sdkref/latest/guide/feature-s3-mrap.html#s3-mrap-sdk-compat)。

## 多區域存取點與 S3 操作的相容性
<a name="mrap-operations-support"></a>

您可以使用下列 Amazon S3 資料平面 API 操作，對儲存貯體中與多區域存取點相關聯的物件執行動作。下列 S3 操作可以接受多區域存取點 ARN：
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLegalHold.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLegalHold.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectRetention.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectRetention.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLegalHold.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLegalHold.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectRetention.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectRetention.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)

**注意**  
多區域存取點僅在使用多區域存取點 ARN 時，才支援使用多區域存取點作為目的地的複製操作。

您可以使用下列 Amazon S3 控制平面操作，來建立和管理您的多區域存取點：
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateMultiRegionAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateMultiRegionAccessPoint.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeMultiRegionAccessPointOperation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeMultiRegionAccessPointOperation.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPoint.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPointPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPointPolicyStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPointPolicyStatus.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPointRoutes.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPointRoutes.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListMultiRegionAccessPoints.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListMultiRegionAccessPoints.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutMultiRegionAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutMultiRegionAccessPointPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_SubmitMultiRegionAccessPointRoutes.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_SubmitMultiRegionAccessPointRoutes.html)

## 檢視您的多區域存取點路由狀態
<a name="query-mrap-routing-configuration"></a>

------
#### [ AWS CLI ]

下列範例命令會擷取您的多區域存取點路由組態，以便您可以查看儲存貯體目前的路由狀態。若要使用此範例命令，請以您自己的資訊取代 `user input placeholders`。

```
aws s3control get-multi-region-access-point-routes
--region eu-west-1
--account-id 111122223333
--mrap arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap
```

------
#### [ SDK for Java ]

下列適用於 Java 的 SDK 程式碼會擷取您的多區域存取點路由組態，以便您可以查看儲存貯體目前的路由狀態。若要使用此範例語法，請以您自己的資訊取代 `user input placeholders`。

```
S3ControlClient s3ControlClient = S3ControlClient.builder()
    .region(Region.US_EAST_1)
    .credentialsProvider(credentialsProvider)
    .build();
 
GetMultiRegionAccessPointRoutesRequest request = GetMultiRegionAccessPointRoutesRequest.builder()
    .accountId("111122223333")
    .mrap("arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap")
    .build();
 
GetMultiRegionAccessPointRoutesResponse response = s3ControlClient.getMultiRegionAccessPointRoutes(request);
```

------
#### [ SDK for JavaScript ]

下列適用於 JavaScript 的 SDK 程式碼會擷取您的多區域存取點路由組態，以便您可以查看儲存貯體目前的路由狀態。若要使用此範例語法，請以您自己的資訊取代 `user input placeholders`。

```
const REGION = 'us-east-1'
 
const s3ControlClient = new S3ControlClient({
  region: REGION
})
 
export const run = async () => {
  try {
    const data = await s3ControlClient.send(
      new GetMultiRegionAccessPointRoutesCommand({
        AccountId: '111122223333',
        Mrap: 'arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap',
      })
    )
    console.log('Success', data)
    return data
  } catch (err) {
    console.log('Error', err)
  }
}
 
run()
```

------
#### [ SDK for Python ]

下列適用於 Python 的 SDK 程式碼會擷取您的多區域存取點路由組態，以便您可以查看儲存貯體目前的路由狀態。若要使用此範例語法，請以您自己的資訊取代 `user input placeholders`。

```
s3.get_multi_region_access_point_routes(
        AccountId=111122223333,
        Mrap=arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap)['Routes']
```

------

## 更新您的基礎 Amazon S3 儲存貯體政策
<a name="update-underlying-bucket-policy"></a>

若要授予適當的存取權，您也必須更新基礎 Amazon S3 儲存貯體政策。下列範例將存取控制委派給多區域存取點政策。將存取控制委派給多區域存取點政策後，當透過多區域存取點進行請求時，系統不會再使用該儲存貯體政策來存取控制。

以下是範例儲存貯體政策，可將存取控制委派給多區域存取點政策。若要使用此範例儲存貯體政策，請以您自己的資訊取代 `user input placeholders`。若要透過 AWS CLI `put-bucket-policy`命令套用此政策，如下例所示，請將政策儲存在檔案中，例如 `policy.json`。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": { 
        "AWS": "arn:aws:iam::444455556666:root" 
      },
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket",
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {
        "StringEquals": {
          "s3:DataAccessPointAccount": "444455556666"
        }
      }
    }
  ]
}
```

------

下列 `put-bucket-policy` 範例命令會將更新的 S3 儲存貯體政策與您的 S3 儲存貯體建立關聯：

```
aws s3api put-bucket-policy
  --bucket amzn-s3-demo-bucket
  --policy file:///tmp/policy.json
```

## 更新多區域存取點路由組態
<a name="update-mrap-route-configuration"></a>

下列範例命令會更新多區域存取點路由組態。可以針對下列五個區域執行多區域存取點路由命令：
+ `ap-southeast-2`
+ `ap-northeast-1`
+ `us-east-1`
+ `us-west-2`
+ `eu-west-1`

在多區域存取點路由組態中，您可以將儲存貯體設為主動或被動路由狀態。主動儲存貯體會接收流量，而被動儲存貯體則不會接收流量。您可以將儲存貯體的 `TrafficDialPercentage` 值設為 `100` 表示主動或 `0` 表示被動，來設定儲存貯體的路由狀態。

------
#### [ AWS CLI ]

下列範例命令會更新您的多區域存取點路由組態。在此範例中，`amzn-s3-demo-bucket1` 會設為主動狀態，而 `amzn-s3-demo-bucket2` 會設為被動狀態。若要使用此範例命令，請以您自己的資訊取代 `user input placeholders`。

```
aws s3control submit-multi-region-access-point-routes
--region ap-southeast-2 
--account-id 111122223333
--mrap arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap
--route-updates Bucket=amzn-s3-demo-bucket1,TrafficDialPercentage=100
                Bucket=amzn-s3-demo-bucket2,TrafficDialPercentage=0
```

------
#### [ SDK for Java ]

下列適用於 Java 的 SDK 程式碼會更新您的多區域存取點路由組態。若要使用此範例語法，請以您自己的資訊取代 `user input placeholders`。

```
S3ControlClient s3ControlClient = S3ControlClient.builder()
    .region(Region.ap-southeast-2)
    .credentialsProvider(credentialsProvider)
    .build();
 
SubmitMultiRegionAccessPointRoutesRequest request = SubmitMultiRegionAccessPointRoutesRequest.builder()
    .accountId("111122223333")
    .mrap("arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap")
    .routeUpdates(
        MultiRegionAccessPointRoute.builder()
            .region("eu-west-1")
            .trafficDialPercentage(100)
            .build(),
        MultiRegionAccessPointRoute.builder()
            .region("ca-central-1")
            .bucket("111122223333")
            .trafficDialPercentage(0)
            .build()
    )
    .build();
 
SubmitMultiRegionAccessPointRoutesResponse response = s3ControlClient.submitMultiRegionAccessPointRoutes(request);
```

------
#### [ SDK for JavaScript ]

下列適用於 JavaScript 的 SDK 程式碼會更新您的多區域存取點路由組態。若要使用此範例語法，請以您自己的資訊取代 `user input placeholders`。

```
const REGION = 'ap-southeast-2'
 
const s3ControlClient = new S3ControlClient({
  region: REGION
})
 
export const run = async () => {
  try {
    const data = await s3ControlClient.send(
      new SubmitMultiRegionAccessPointRoutesCommand({
        AccountId: '111122223333',
        Mrap: 'arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap',
        RouteUpdates: [
          {
            Region: 'eu-west-1',
            TrafficDialPercentage: 100,
          },
          {
            Region: 'ca-central-1',
            Bucket: 'amzn-s3-demo-bucket1',
            TrafficDialPercentage: 0,
          },
        ],
      })
    )
    console.log('Success', data)
    return data
  } catch (err) {
    console.log('Error', err)
  }
}
 
run()
```

------
#### [ SDK for Python ]

下列適用於 Python 的 SDK 程式碼會更新您的多區域存取點路由組態。若要使用此範例語法，請以您自己的資訊取代 `user input placeholders`。

```
s3.submit_multi_region_access_point_routes(
        AccountId=111122223333,
        Mrap=arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap, 
        RouteUpdates= [{
            'Bucket': amzn-s3-demo-bucket,
            'Region': ap-southeast-2, 
            'TrafficDialPercentage': 10
        }])
```

------

## 在您的多區域存取點中將物件新增至儲存貯體
<a name="add-bucket-mrap"></a>

若要將與多區域存取點相關聯的物件新增至儲存貯體，您可以使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) 操作。若要將多區域存取點中的所有儲存貯體保持同步，請啟用[跨區域複寫](MultiRegionAccessPointBucketReplication.md)。

**注意**  
若要使用這項操作，您必須具有多區域存取點的 `s3:PutObject` 許可。如需多區域存取點許可需求的詳細資訊，請參閱 [許可](MultiRegionAccessPointPermissions.md)。

------
#### [ AWS CLI ]

下列範例資料平面請求會將 *`example.txt`* 上傳至指定的多區域存取點。若要使用此範例，請以您自己的資訊取代 *`user input placeholders`*。

```
aws s3api put-object --bucket arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap --key example.txt --body example.txt
```

------
#### [ SDK for Java ]

```
S3Client s3Client = S3Client.builder()
        .build();
        
PutObjectRequest objectRequest = PutObjectRequest.builder()
        .bucket("arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap")
        .key("example.txt")
        .build();

s3Client.putObject(objectRequest, RequestBody.fromString("Hello S3!"));
```

------
#### [ SDK for JavaScript ]

```
const client = new S3Client({});

async function putObjectExample() {
    const command = new PutObjectCommand({
        Bucket: "arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap",
        Key: "example.txt",
        Body: "Hello S3!",
    });
    
    try {
        const response = await client.send(command);
        console.log(response);
    } catch (err) {
        console.error(err);
    }
}
```

------
#### [ SDK for Python ]

```
import boto3

client = boto3.client('s3')
client.put_object(
    Bucket='arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap',
    Key='example.txt',
    Body='Hello S3!'
)
```

------

## 從您的多區域存取點中擷取物件
<a name="get-object-mrap"></a>

若要從多區域存取點中擷取物件，您可以使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 操作。

**注意**  
若要使用這項 API 操作，您必須具有多區域存取點的 `s3:GetObject` 許可。如需多區域存取點許可需求的詳細資訊，請參閱 [許可](MultiRegionAccessPointPermissions.md)。

------
#### [ AWS CLI ]

下列範例資料平面請求會從指定的多區域存取點中擷取 *`example.txt`*，並將其下載為 *`downloaded_example.txt`*。若要使用此範例，請以您自己的資訊取代 *`user input placeholders`*。

```
aws s3api get-object --bucket arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap --key example.txt downloaded_example.txt
```

------
#### [ SDK for Java ]

```
S3Client s3 = S3Client
   .builder()
   .build();

GetObjectRequest getObjectRequest = GetObjectRequest.builder()
    .bucket("arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap")
    .key("example.txt")
    .build();

s3Client.getObject(getObjectRequest);
```

------
#### [ SDK for JavaScript ]

```
const client = new S3Client({})

async function getObjectExample() {
    const command = new GetObjectCommand({
        Bucket: "arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap",
        Key: "example.txt"
    });
    
    try {
        const response = await client.send(command);
        console.log(response);
    } catch (err) {
        console.error(err);
    }
}
```

------
#### [ SDK for Python ]

```
import boto3

client = boto3.client('s3')
client.get_object(
    Bucket='arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap',
    Key='example.txt'
)
```

------

## 列出存放在以多區域存取點為基礎之儲存貯體的物件
<a name="list-objects-mrap"></a>

若要傳回存放在以多區域存取點為基礎之儲存貯體的物件清單，請使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) 操作。在下列範例命令中，使用多區域存取點的 ARN，列出指定多區域存取點的所有物件。在此情況下，多區域存取點 ARN 為：

`arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap`

**注意**  
若要使用這項 API 操作，您必須具有多區域存取點的 `s3:ListBucket` 許可和基礎儲存貯體。如需多區域存取點許可需求的詳細資訊，請參閱 [許可](MultiRegionAccessPointPermissions.md)。

------
#### [ AWS CLI ]

下列範例資料平面請求會列出以 ARN 所指定多區域存取點為基礎之儲存貯體中的物件。若要使用此範例，請以您自己的資訊取代 *`user input placeholders`*。

```
aws s3api list-objects-v2 --bucket arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap
```

------
#### [ SDK for Java ]

```
S3Client s3Client = S3Client.builder()
        .build();
        
String bucketName = "arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap";

ListObjectsV2Request listObjectsRequest = ListObjectsV2Request
    .builder()
    .bucket(bucketName)
    .build();

 s3Client.listObjectsV2(listObjectsRequest);
```

------
#### [ SDK for JavaScript ]

```
const client = new S3Client({});

async function listObjectsExample() {
    const command = new ListObjectsV2Command({
        Bucket: "arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap",
    });
    
    try {
        const response = await client.send(command);
        console.log(response);
    } catch (err) {
        console.error(err);
    }
}
```

------
#### [ SDK for Python ]

```
import boto3

client = boto3.client('s3')
client.list_objects_v2(
    Bucket='arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap'
)
```

------

## 搭配多區域存取點使用預先簽章的 URL
<a name="use-presigned-url-mrap"></a>

您可以使用預先簽章的 URL 來產生一個 URL，允許其他人透過 Amazon S3 多區域存取點存取 Amazon S3 儲存貯體。當建立預先簽章的 URL 時，您會將其與 S3 上傳 (`PutObject`) 或 S3 下載 (`GetObject`) 等特定物件動作建立關聯。您可以共用預先簽章的 URL，且擁有存取權的任何人都可以執行嵌入 URL 中的動作，如同原始簽章使用者一樣。

預先簽章的 URL 具有到期日。過了到期時間，URL 將不再運作起作用。

在您搭配預先簽章的 URL 使用 S3 多區域存取點之前，請先檢查 [AWS SDK](https://docs.aws.amazon.com/sdkref/latest/guide/feature-s3-mrap.html#s3-mrap-sdk-compat) 與 SigV4a 演算法的相容性。驗證您的 SDK 版本是否支援 SigV4a 作為簽署實作，用來簽署全域 AWS 區域 請求。如需搭配 Amazon S3 使用預先簽章 URL 的詳細資訊，請參閱[使用預先簽章的 URL 共用物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html)。

下列範例示範如何搭配預先簽章的 URL 使用多區域存取點。若要使用這些範例，請以您自己的資訊取代 *`user input placeholders`*。

------
#### [ AWS CLI ]

```
aws s3 presign arn:aws:s3::123456789012:accesspoint/MultiRegionAccessPoint_alias/example-file.txt
```

------
#### [ SDK for Python ]

```
import logging
import boto3
from botocore.exceptions import ClientError

s3_client = boto3.client('s3',aws_access_key_id='xxx',aws_secret_access_key='xxx')
s3_client.generate_presigned_url(HttpMethod='PUT',ClientMethod="put_object", Params={'Bucket':'arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap','Key':'example-file'})
```

------
#### [ SDK for Java ]

```
S3Presigner s3Presigner = S3Presigner.builder()
    .credentialsProvider(StsAssumeRoleCredentialsProvider.builder()
        .refreshRequest(assumeRole)
        .stsClient(stsClient)
        .build())
    .build();

GetObjectRequest getObjectRequest = GetObjectRequest.builder()
    .bucket("arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap")
    .key("example-file")
    .build();

GetObjectPresignRequest preSignedReq = GetObjectPresignRequest.builder()
    .getObjectRequest(getObjectRequest)
    .signatureDuration(Duration.ofMinutes(10))
    .build();

PresignedGetObjectRequest presignedGetObjectRequest = s3Presigner.presignGetObject(preSignedReq);
```

------

**注意**  
若要搭配臨時安全登入資料使用 SigV4A，例如使用 IAM 角色時，請確定您向 in AWS Security Token Service (AWS STS) 的區域端點請求臨時登入資料，而不是全域端點。如果您使用全域端點 for AWS STS (`sts.amazonaws.com`)， AWS STS 會從全域端點產生臨時登入資料，Sig4A 不支援。因此，您會收到錯誤。若要解決此問題，請使用任何列出的[區域端點 AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#id_credentials_region-endpoints)。

## 使用以多區域存取點設定為請求者付款的儲存貯體
<a name="use-requester-pays-mrap"></a>

若與多區域存取點相關聯的 S3 儲存貯體[設定為使用請求者付款](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysExamples.html)，請求者將支付儲存貯體請求、下載和任何多區域存取點的相關費用。如需詳細資訊，請參閱 [Simple Storage Service (Amazon S3) 定價](https://aws.amazon.com/s3/pricing/)。

以下範例是多區域存取點的資料平面請求，該多區域存取點連接至請求者付款儲存貯體。

------
#### [ AWS CLI ]

若要從連接至請求者付款儲存貯體的多區域存取點下載物件，您必須將 `--request-payer requester` 指定為 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html) 請求的一部分。您也必須指定儲存貯體中檔案的名稱，以及應存放下載檔案的位置。

```
aws s3api get-object --bucket MultiRegionAccessPoint_ARN --request-payer requester --key example-file-in-bucket.txt example-location-of-downloaded-file.txt 
```

------
#### [ SDK for Java ]

若要從連接至請求者付款儲存貯體的多區域存取點下載物件，您必須將 `RequestPayer.REQUESTER` 指定為 `GetObject` 請求的一部分。您也必須指定儲存貯體中檔案的名稱，以及儲存檔案的位置。

```
GetObjectResponse getObjectResponse = s3Client.getObject(GetObjectRequest.builder()
    .key("example-file.txt")
    .bucket("arn:aws:s3::
123456789012:accesspoint/abcdef0123456.mrap")
    .requestPayer(RequestPayer.REQUESTER)
    .build()
).response();
```

------