開始使用 AWS CLI 和適用於 Java 的開發套件 - Amazon Simple Storage Service

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

開始使用 AWS CLI 和適用於 Java 的開發套件

透過 Amazon S3 on Outposts,您可以在 AWS Outposts 上建立 S3 儲存貯體,並針對需要本機資料存取權限、本機資料處理和資料駐留的應用程式,在內部部署輕鬆存放和擷取物件。S3 on Outposts 提供一個全新的儲存類別,即 S3 Outposts (OUTPOSTS),它使用 Amazon S3 API,目的是在您的 AWS Outposts Outposts 上的多個裝置和伺服器上以持久、備援的方式存放資料。您可以使用存取點和透過 Virtual Private Cloud (VPC) 的端點連線,與您的 Outpost 儲存貯體進行通訊。就像在 Amazon S3 儲存貯體一樣,您在 Outpost 儲存貯體上可以使用同樣的 API 和功能,包括存取政策、加密和標記。您可以透過 AWS Management Console、AWS Command Line Interface (AWS CLI)、AWS SDK 或 REST API 使用 S3 on Outposts。如需詳細資訊,請參閱 什麼是 Amazon S3 on Outposts?

若要開始使用 S3 on Outposts,您必須建立儲存貯體、存取點和端點。接著,您可以將物件上傳至您的儲存貯體。下列範例顯示如何使用 AWS CLI 和適用於 Java 的開發套件開始使用 S3 on Outposts。若要開始使用主控台,請參閱 使用 AWS Management Console 開始使用

步驟 1:建立儲存貯體

下列 AWS CLI 和適用於 Java 的 SDK 示範如何建立 S3 on Outposts 儲存貯體。

AWS CLI

下列範例使用 AWS CLI 建立 S3 on Outposts 儲存貯體 (s3-outposts:CreateBucket)。若要執行此命令,請以您自己的資訊取代 user input placeholders

aws s3control create-bucket --bucket example-outposts-bucket --outpost-id op-01ac5d28a6a232904
SDK for Java

下列範例使用適用於 Java 的開發套件建立 S3 on Outposts 儲存貯體 (s3-outposts:CreateBucket)。

import com.amazonaws.services.s3control.model.*; public String createBucket(String bucketName) { CreateBucketRequest reqCreateBucket = new CreateBucketRequest() .withBucket(bucketName) .withOutpostId(OutpostId) .withCreateBucketConfiguration(new CreateBucketConfiguration()); CreateBucketResult respCreateBucket = s3ControlClient.createBucket(reqCreateBucket); System.out.printf("CreateBucket Response: %s%n", respCreateBucket.toString()); return respCreateBucket.getBucketArn(); }

步驟 2:建立存取點

若要存取 Amazon S3 on Outposts 儲存貯體,您必須建立和設定存取點。這些範例示範如何使用 AWS CLI 和適用於 Java 的開發套件建立存取點。

存取點針對 Amazon S3 中的共用資料集,簡化管理大規模的資料存取。存取點為連接到儲存貯體的指定網路端點,您可以使用這些端點來執行 Amazon S3 物件操作,例如 GetObjectPutObject。使用 S3 on Outposts,您必須使用存取點來存取 Outposts 儲存貯體中的任何物件。存取點僅支援虛擬主機樣式定址。

AWS CLI

下列 AWS CLI 範例建立 Outposts 儲存貯體的存取點。若要執行此命令,請以您自己的資訊取代 user input placeholders

aws s3control create-access-point --account-id 123456789012 --name example-outposts-access-point --bucket "arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outposts-bucket" --vpc-configuration VpcId=example-vpc-12345
SDK for Java

下列適用於 Java 的開發套件範例建立 Outposts 儲存貯體的存取點。若要使用此範例,請以您自己的資訊取代 user input placeholders

import com.amazonaws.services.s3control.model.*; public String createAccessPoint(String bucketArn, String accessPointName) { CreateAccessPointRequest reqCreateAP = new CreateAccessPointRequest() .withAccountId(AccountId) .withBucket(bucketArn) .withName(accessPointName) .withVpcConfiguration(new VpcConfiguration().withVpcId("vpc-12345")); CreateAccessPointResult respCreateAP = s3ControlClient.createAccessPoint(reqCreateAP); System.out.printf("CreateAccessPoint Response: %s%n", respCreateAP.toString()); return respCreateAP.getAccessPointArn(); }

步驟 3:建立端點

若要將請求路由至 Amazon S3 on Outpost 存取點,您必須建立和設定 S3 on Outposts 端點。若要建立端點,您需要與 Outposts 主要區域的服務連結有效連接。Outpost 上的每個 Virtual Private Cloud (VPC) 可以有一個相關聯的端點。如需端點配額的詳細資訊,請參閱 S3 on Outposts 網路需求。您必須建立端點,才能存取您的 Outposts 儲存貯體並執行物件操作。如需更多詳細資訊,請參閱 端點

以下範例示範如何使用 AWS CLI 和適用於 Java 的開發套件建立端點。如需建立和管理端點所需許可的詳細資訊,請參閱 適用於 S3 on Outposts 端點的許可

AWS CLI

下列 AWS CLI 範例使用 VPC 資源存取類型建立 Outpost 的端點。VPC 衍生自子網路。若要執行此命令,請以您自己的資訊取代 user input placeholders

aws s3outposts create-endpoint --outpost-id op-01ac5d28a6a232904 --subnet-id subnet-8c7a57c5 --security-group-id sg-ab19e0d1

下列 AWS CLI 範例使用客戶擁有的 IP 地址集區 (CoIP 集區) 存取類型為 Outpost 建立端點。若要執行此命令,請以您自己的資訊取代 user input placeholders

aws s3outposts create-endpoint --outpost-id op-01ac5d28a6a232904 --subnet-id subnet-8c7a57c5 --security-group-id sg-ab19e0d1 --access-type CustomerOwnedIp --customer-owned-ipv4-pool ipv4pool-coip-12345678901234567
SDK for Java

下列適用於 Java 的開發套件範例建立 Outposts 的端點。若要使用此範例,請以您自己的資訊取代 user input placeholders

import com.amazonaws.services.s3outposts.AmazonS3Outposts; import com.amazonaws.services.s3outposts.AmazonS3OutpostsClientBuilder; import com.amazonaws.services.s3outposts.model.CreateEndpointRequest; import com.amazonaws.services.s3outposts.model.CreateEndpointResult; public void createEndpoint() { AmazonS3Outposts s3OutpostsClient = AmazonS3OutpostsClientBuilder .standard().build(); CreateEndpointRequest createEndpointRequest = new CreateEndpointRequest() .withOutpostId("op-0d79779cef3c30a40") .withSubnetId("subnet-8c7a57c5") .withSecurityGroupId("sg-ab19e0d1") .withAccessType("CustomerOwnedIp") .withCustomerOwnedIpv4Pool("ipv4pool-coip-12345678901234567"); // Use .withAccessType and .withCustomerOwnedIpv4Pool only when the access type is // customer-owned IP address pool (CoIP pool) CreateEndpointResult createEndpointResult = s3OutpostsClient.createEndpoint(createEndpointRequest); System.out.println("Endpoint is created and its ARN is " + createEndpointResult.getEndpointArn()); }

步驟 4:將物件上傳至 S3 on Outposts 儲存貯體

物件是存放在 Amazon S3 on Outposts 中的基本實體。每個物件都包含在儲存貯體中。您必須使用存取點來存取 Outpost 儲存貯體中的任何物件。針對物件操作指定儲存貯體時,您可以使用存取點 Amazon Resource Name (ARN) 或存取點別名。如需存取點別名的詳細資訊,請參閱 針對您的 S3 on Outposts 儲存貯體存取點使用儲存貯體樣式別名

以下範例顯示了 S3 on Outposts 存取點的 ARN 格式,其中包括 Outpost 所在區域的 AWS 區域代碼、AWS 帳戶 ID、Outposts ID,以及存取點名稱:

arn:aws:s3-outposts:region:account-id:outpost/outpost-id/accesspoint/accesspoint-name

如需 S3 on Outposts ARN 的詳細資訊,請參閱 適用於 S3 on Outposts 的資源 ARN

對於 Amazon S3 on Outposts,物件資料始終存放在 Outpost 上。當 AWS 安裝 Outpost 機架時,您的資料將保留在本機 Outpost 上,以滿足資料駐留的要求。您的物件永遠不會離開您的 Outpost,也不會在 AWS 區域 中。由於 AWS Management Console 託管在區域內,您無法使用主控台上傳或管理 Outpost 中的物件。然而,您可以使用 REST API、AWS Command Line Interface (AWS CLI) 以及 AWS SDK 透過存取點上傳和管理您的物件。

下列 AWS CLI 和 AWS SDK for Java 範例示範如何使用存取點將物件上傳到 S3 on Outposts 儲存貯體。

AWS CLI

下列範例使用 AWS CLI 將名稱為 sample-object.xml 的物件放置在 S3 on Outposts 儲存貯體 (s3-outposts:PutObject) 上。若要執行此命令,請以您自己的資訊取代每個 user input placeholder。如需此命令的詳細資訊,請參閱 AWS CLI 參考中的 put-object

aws s3api put-object --bucket arn:aws:s3-outposts:Region:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-outposts-access-point --key sample-object.xml --body sample-object.xml
SDK for Java

下列範例使用適用於 Java 的開發套件,將物件放置在 S3 on Outposts 儲存貯體。若要使用此範例,請以您自己的資訊取代每個 user input placeholder。如需更多詳細資訊,請參閱 上傳物件

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.PutObjectRequest; import java.io.File; public class PutObject { public static void main(String[] args) { String accessPointArn = "*** access point ARN ***"; String stringObjKeyName = "*** String object key name ***"; String fileObjKeyName = "*** File object key name ***"; String fileName = "*** Path to file to upload ***"; try { // This code expects that you have AWS credentials set up per: // https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .enableUseArnRegion() .build(); // Upload a text string as a new object. s3Client.putObject(accessPointArn, stringObjKeyName, "Uploaded String Object"); // Upload a file as a new object with ContentType and title specified. PutObjectRequest request = new PutObjectRequest(accessPointArn, fileObjKeyName, new File(fileName)); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("plain/text"); metadata.addUserMetadata("title", "someTitle"); request.setMetadata(metadata); s3Client.putObject(request); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }