

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

# Amazon S3 閘道端點
<a name="vpc-endpoints-s3"></a>

您可以使用閘道 VPC 端點從 VPC 中存取 Amazon S3。建立閘道端點後，您可以將其新增為路由表中的目標，用於從 VPC 到 Amazon S3 的流量。

使用閘道端點不需額外付費。

Amazon S3 支援閘道端點和界面端點。您可以使用閘道端點從您的 VPC 存取 Amazon S3，而無需為 VPC 使用網際網路閘道或 NAT 裝置，並無需支付額外費用。不過，閘道端點不允許從內部部署網路、其他 AWS 區域中的對等 VPCs 或透過傳輸閘道進行存取。這些情況下，您必須利用介面端點 (需額外付費)。如需詳細資訊，請參閱《Amazon S3 使用者指南》**中的[適用於 Amazon S3 的 VPC 端點類型](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-s3)。

**Topics**
+ [考量事項](#gateway-endpoint-considerations-s3)
+ [私有 DNS](#private-dns-s3)
+ [建立閘道端點](#create-gateway-endpoint-s3)
+ [使用儲存貯體政策控制存取](#bucket-policies-s3)
+ [關聯路由表](#associate-route-tables-s3)
+ [編輯 VPC 端點政策](#edit-vpc-endpoint-policy-s3)
+ [刪除閘道端點](#delete-gateway-endpoint-s3)

## 考量事項
<a name="gateway-endpoint-considerations-s3"></a>
+ 閘道端點只能在您建立該端點的區域中使用。請務必在與 S3 儲存貯體相同的區域中建立閘道端點。
+ 如果您使用的是 Amazon DNS 伺服器，則必須同時啟用 VPC 的 [DNS 主機名稱和 DNS 解析](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)。如果您使用自己的 DNS 伺服器，請確保對 Amazon S3 提出的請求可正確解析為 AWS所維護的 IP 地址。
+ 對於透過閘道端點存取 Amazon S3 的執行個體，安全群組的規則必須允許進出 Amazon S3 的流量。您可以在安全群組規則中參照 Amazon S3 的[字首清單](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html) ID。
+ 對於透過閘道端點存取 Amazon S3 的執行個體，子網路的網路 ACL 必須允許進出 Amazon S3 的流量。您無法在網路 ACL 規則中參照字首清單，但可以從 Amazon S3 的[字首清單](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html)中取得 Amazon S3 的 IP 地址範圍。
+ 檢查您是否使用 AWS 服務 需要存取 S3 儲存貯體的 。例如，服務可能需要存取含有日誌檔案的儲存貯體，或者可能會要求您將驅動程式或代理程式下載到 EC2 執行個體。若是如此，請確定您的端點政策允許 AWS 服務 或 資源使用 `s3:GetObject`動作存取這些儲存貯體。
+ 您不能針對周遊 VPC 端點的 Amazon S3 請求，在身分政策或儲存貯體政策中使用 `aws:SourceIp` 條件。請改用 `aws:VpcSourceIp` 條件。或者，您也可以使用路由表，控制哪些 EC2 執行個體可透過 VPC 端點存取 Amazon S3。
+ Amazon S3 收到的受影響子網路中執行個體的來源 IPv4 或 IPv6 地址會從公有地址變更為 VPC 中的私有地址。端點會切換網路路由，以及中斷連線開啟的 TCP 連線。先前使用公有地址的連線不會繼續。建議您在建立或修改端點時不要執行重要任務，或者建議您進行測試，確保軟體在斷線之後可以自動重新連線至 Amazon S3。
+ 端點連線不能延伸出 VPC。VPN 連線、VPC 對等互連、傳輸閘道或 VPC 中 Direct Connect 連線另一端的資源無法使用閘道端點與 Amazon S3 通訊。
+ 您的帳戶對於每個區域的預設配額為 20 個閘道端點，此配額可進行調整。每個 VPC 也有 255 個閘道端點的限制。

## 私有 DNS
<a name="private-dns-s3"></a>

為 Amazon S3 建立閘道端點和介面端點後，可以設定私有 DNS 以最佳化成本。

**Route 53 Resolver**  
Amazon 會為您的 VPC 提供 DNS 伺服器，名為 [Route 53 Resolver](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html)。Route 53 Resolver 會自動解析本機 VPC 網域名稱和私有託管區域中的記錄。但是，您無法從 VPC 外部使用 Route 53 Resolver。Route 53 會提供 Resolver 端點和 Resolver 規則，讓您可以從 VPC 外部使用 Route 53 Resolver。*傳入 Resolver 端點*會將 DNS 查詢從內部部署網路轉送至 Route 53 Resolver。*傳出 Resolver 端點*會將 DNS 查詢從 Route 53 Resolver 轉送至內部部署網路。

當您將 Amazon S3 的介面端點設定為僅針對傳入 Resolver 端點使用私有 DNS 後，我們會建立傳入 Resolver 端點。傳入 Resolver 端點會將從內部部署向 Amazon S3 發出的 DNS 查詢解析為介面端點的私有 IP 地址。我們也會將 Route 53 Resolver 的 ALIAS 記錄新增至 Amazon S3 的公有託管區域，以便來自 VPC 的 DNS 查詢解析為 Amazon S3 公有 IP 地址，並將流量路由到閘道端點。

**私有 DNS**  
如果您為 Amazon S3 的介面端點設定私有 DNS，但並未僅針對傳入 Resolver 端點設定私有 DNS，則來自內部部署網路和 VPC 的請求都會使用介面端點存取 Amazon S3。因此，來自 VPC 的流量都會使用介面端點，您需要為此付費；如果流量使用閘道端點，則您無需額外付費。

![\[使用兩種端點類型的 Amazon S3 請求路由。\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/privatelink/images/s3-private-dns-default.png)


**僅適用於傳入 Resolver 端點的私有 DNS**  
如果您僅針對傳入 Resolver 端點設定私有 DNS，則來自內部部署網路的請求會使用介面端點存取 Amazon S3，而來自 VPC 的請求會使用閘道端點存取 Amazon S3。因此，您可以最佳化成本，因為只有在無法使用閘道端點的流量使用介面端點時，您才需要付費。

若要設定此項目，閘道端點的 DNS 記錄 IP 類型必須符合介面端點，否則 `service-defined`. AWS PrivateLink doesn 不支援任何其他組合。如需詳細資訊，請參閱[DNS 記錄 IP 類型](gateway-endpoints.md#gateway-endpoint-dns-record-ip-type)。

![\[使用私有 DNS 和傳入解析程式端點的 Amazon S3 請求路由。\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/privatelink/images/s3-private-dns-inbound-endpoint.png)


**設定私有 DNS**  
您可以在建立 Amazon S3 的介面端點之時或之後為其設定私有 DNS。如需詳細資訊，請參閱 [建立 VPC 端點](create-interface-endpoint.md#create-interface-endpoint-aws) (建立期間設定) 或 [啟用私有 DNS 名稱](interface-endpoints.md#enable-private-dns-names) (建立後設定)。

## 建立閘道端點
<a name="create-gateway-endpoint-s3"></a>

使用下列程序建立連線至 Amazon S3 的閘道端點。

**使用主控台建立閘道端點**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中選擇 **Endpoints (端點)**。

1. 選擇**建立端點**。

1. 對於 **Service category** (服務類別)，選擇 **AWS 服務**。

1. 針對 **服務**，新增篩選條件**類型 = Gateway**。

   如果您的 Amazon S3 資料存放在一般用途儲存貯體中，請選取 **com.amazonaws.***region***.s3**。

   如果您的 Amazon S3 資料存放在目錄儲存貯體中，請選取 **com.amazonaws**.*region***.s3express**。

1. 針對 **VPC**，選取要在其中建立端點的 VPC。

1. 針對 **IP address type** (IP 地址類型)，從下列選項中選擇：
   + **IPv4** – 將 IPv4 地址指派給端點網路介面。只有當所有選取的子網路都具有 IPv4 地址範圍，且此服務接受 IPv4 請求時，才支援此選項。
   + **IPv6** – 將 IPv6 地址指派給端點網路介面。只有當所有選取的子網路都是僅限 IPv6 子網路，且此服務接受 IPv6 請求時，才支援此選項。
   + **Dualstack** – 將 IPv4 和 IPv6 地址指派給端點網路介面。只有當所有選取的子網路都具有 IPv4 和 IPv6 地址範圍，且此服務接受 IPv4 和 IPv6 請求時，才支援此選項。

1. 針對 **Route tables** (路由表)，選取要供端點使用的路由表。我們會自動新增路由，將以服務為目標的流量指向端點網路介面。

1. 對於 **Policy** (政策)，選取 **Full access** (完整存取)，以允許 VPC 端點上所有資源的所有主體進行所有操作。否則，選取 **Custom** (自訂)，連接 VPC 端點政策，該政策控制主體必須在 VPC 端點上對資源執行操作的權限。

1. (選用) 若要新增標籤，請選擇 **Add new tag (新增標籤)**，然後輸入標籤的鍵和值。

1. 選擇**建立端點**。

**若要使用命令列建立閘道端點**
+ [create-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-endpoint.html) (AWS CLI)
+ [New-EC2VpcEndpoint](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2VpcEndpoint.html) (Tools for Windows PowerShell)

## 使用儲存貯體政策控制存取
<a name="bucket-policies-s3"></a>

您可以使用儲存貯體政策來控制特定端點、VPCs存取 AWS 帳戶。這些範例假定還有政策聲明允許您的使用案例所需的存取權限。

**Example 範例：限制特定端點的存取**  
您可以使用 [aws:sourceVpce](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpce) 條件金鑰，建立儲存貯體政策來限制對特定端點的存取。除非使用指定的閘道端點，否則以下政策會拒絕使用指定動作存取指定的儲存貯體。請注意，此政策會封鎖透過 AWS 管理主控台使用指定動作來存取指定的儲存貯體。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-access-to-specific-VPCE",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
      "Resource": ["arn:aws:s3:::bucket_name",
                   "arn:aws:s3:::bucket_name/*"],
      "Condition": {
        "StringNotEquals": {
          "aws:sourceVpce": "vpce-1a2b3c4d"
        }
      }
    }
  ]
}
```

**Example 範例：限制特定 VPC 的存取**  
您可以使用 [aws:sourceVpc](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpc) 條件金鑰，建立儲存貯體政策來限制對特定 VPC 的存取。如果您在相同的 VPC 中設定多個端點，這將十分有用。除非請求是來自指定的 VPC，否則以下政策會拒絕使用指定動作存取指定的儲存貯體。請注意，此政策會封鎖透過 AWS 管理主控台使用指定動作來存取指定的儲存貯體。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-access-to-specific-VPC",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
      "Resource": ["arn:aws:s3:::example_bucket",
                   "arn:aws:s3:::example_bucket/*"],
      "Condition": {
        "StringNotEquals": {
          "aws:sourceVpc": "vpc-111bbb22"
        }
      }
    }
  ]
}
```

**Example 範例：限制對特定 IP 地址範圍的存取**  
您可以使用 [aws:VpcSourceIp](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-vpcsourceip) 條件金鑰，建立政策來限制對特定 IP 地址範圍的存取。除非請求是來自指定的 IP 地址，否則以下政策會拒絕使用指定動作存取指定的儲存貯體。請注意，此政策會封鎖透過 AWS 管理主控台使用指定動作來存取指定的儲存貯體。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-access-to-specific-VPC-CIDR",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
      "Resource": ["arn:aws:s3:::bucket_name",
                   "arn:aws:s3:::bucket_name/*"],
      "Condition": {
        "NotIpAddress": {
          "aws:VpcSourceIp": "172.31.0.0/16"
        }
      }
    }
  ]
}
```

**Example 範例：限制存取特定 中的儲存貯體 AWS 帳戶**  
您可以使用 `s3:ResourceAccount` 條件金鑰，建立政策來限制對特定 AWS 帳戶 中 S3 儲存貯體的存取。除非指定的動作為 AWS 帳戶所擁有，否則以下政策會拒絕使用指定動作存取 S3 儲存貯體。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-access-to-bucket-in-specific-account",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
      "Resource": "arn:aws:s3:::*",
      "Condition": {
        "StringNotEquals": {
          "s3:ResourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

## 關聯路由表
<a name="associate-route-tables-s3"></a>

您可變更與閘道端點關聯的路由表。當您關聯路由表時，我們會自動新增路由，將以服務為目標的流量指向端點網路介面。當您取消路由表的關聯時，我們會自動從路由表中移除端點路由。

**若要使用主控台來關聯路由表**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中選擇 **Endpoints (端點)**。

1. 選取閘道端點。

1. 選擇 **Actions (動作)**、**Manage route tables (管理路由表)**。

1. 視需要選取或取消選取路由表。

1. 選擇 **Modify route tables** (修改路由表)。

**若要使用命令列來關聯路由表**
+ [modify-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint.html) (AWS CLI)
+ [Edit-EC2VpcEndpoint](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2VpcEndpoint.html) (Tools for Windows PowerShell)

## 編輯 VPC 端點政策
<a name="edit-vpc-endpoint-policy-s3"></a>

您可以編輯閘道端點的端點政策，以控制從 VPC 中透過端點對 Amazon S3 的存取。更新端點政策後，變更生效需費時幾分鐘。預設政策允許完整存取。如需詳細資訊，請參閱[端點政策](vpc-endpoints-access.md)。

**若要使用主控台變更端點政策**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中選擇 **Endpoints (端點)**。

1. 選取閘道端點。

1. 選擇 **Actions** (動作)、**Manage policy** (管理政策)。

1. 選擇 **Full Access** (完整存取) 以允許完整存取服務，或選擇 **Custom** (自訂) 並連接自訂政策。

1. 選擇**儲存**。

下列範例端點原則用於存取 Amazon S3。

**Example 範例：限制特定儲存貯體的存取**  
您可以建立政策，以限制只存取特定 S3 儲存貯體。如果您的 VPC AWS 服務 中有使用 S3 儲存貯體的其他 ，這會很有用。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-access-to-specific-bucket",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
         "s3:ListBucket",
         "s3:GetObject",
         "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::bucket_name",
        "arn:aws:s3:::bucket_name/*"
      ]
    }
  ]
}
```

**Example 範例：限制特定 IAM 角色的存取**  
您可以建立政策，限制特定 IAM 角色的存取。您必須使用 `aws:PrincipalArn` 來授予對主體的存取權。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-access-to-specific-IAM-role",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "ArnEquals": {
          "aws:PrincipalArn": "arn:aws:iam::111122223333:role/role_name"
        }
      }
    }
  ]
}
```

**Example 範例：限制對特定帳戶中使用者的存取**  
您可以建立政策，限制特定帳戶的存取。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-callers-from-specific-account",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalAccount": "111122223333"
        }
      }
    }
  ]
}
```

## 刪除閘道端點
<a name="delete-gateway-endpoint-s3"></a>

閘道端點結束使用後即可刪除。當您刪除閘道端點時，我們會從子網路由表中移除端點路由。

如果啟用私有 DNS，則無法刪除閘道端點。

**若要使用主控台刪除閘道端點**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中選擇 **Endpoints (端點)**。

1. 選取閘道端點。

1. 選擇 **Actions** (動作)、**Delete VPC endpoints** (刪除 VPC 端點)。

1. 出現確認提示時，請按一下 **delete**。

1. 選擇 **刪除**。

**若要使用命令列刪除閘道端點**
+ [delete-vpc-endpoints](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-vpc-endpoints.html) (AWS CLI)
+ [Remove-EC2VpcEndpoint](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2VpcEndpoint.html) (Tools for Windows PowerShell)