在 Snowball Edge 设备上使用 S3 存储桶 - Amazon Snowball Edge 开发人员指南
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Snowball Edge 设备上使用 S3 存储桶

您可以在 Snowball Edge 设备上创建 Amazon S3 存储桶,以便在本地为需要本地数据访问、本地数据处理和数据驻留的应用存储和检索对象。Snow 系列设备上与 Amazon S3 兼容的存储提供了一个新的存储类别,即 SNOW,该存储类别使用 Amazon S3 API,并且用于在多个 Snowball Edge 设备之间持久冗余地存储数据。您可以在 Snowball Edge 存储桶上使用与 Amazon S3 相同的 API 和特征,包括存储桶生命周期策略、加密和标记。

使用Amazon CLI

请按照以下说明使用 Amazon CLI 在设备上使用 Amazon S3 存储桶。

设置 Amazon CLI
  1. ~/.aws/config 中为对象端点创建配置文件。

    [profile your-profile] aws_access_key_id = your-access-id aws_secret_access_key = your-access-key region = snow ca_bundle = dev/apps/ca-certs/your-ca_bundle
  2. 从您的设备获取证书。有关更多信息,请参阅《Snowball Edge 开发人员指南

  3. 如果您在虚拟环境中安装了开发工具包,请使用以下命令将其激活:

    source your-virtual-environment-name/bin/activate

设置操作后,您可以通过 Amazon CLI 使用 API 调用访问这些操作。在以下示例中,cert 是您刚刚使用 IAM 获得的设备证书。

访问对象操作

aws s3api --profile your-profile list-objects-v2 --endpoint-url https://s3api-endpoint-ip

访问存储桶操作

aws s3control --profile your-profile list-regional-buckets --account-id bucket-owner --endpoint-url https://s3ctrlapi-endpoint-ip

使用 Java SDK

使用以下示例,利用 Java SDK 处理 Amazon S3 对象。

import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.regions.Region; import java.net.URI; AwsBasicCredentials creds = AwsBasicCredentials.create(accessKey, secretKey); // set creds by getting Access Key and Secret Key from snowball edge SdkHttpClient httpClient = ApacheHttpClient.builder().tlsTrustManagersProvider(trustManagersProvider).build(); // set trust managers provider with client certificate from snowball edge String s3SnowEndpoint = "10.0.0.0"; // set s3-snow object api endpoint from describe service S3Client s3Client = S3Client.builder().httpClient(httpClient).region(Region.of("snow")).endpointOverride(new URI(s3SnowEndpoint)).credentialsProvider(StaticCredentialsProvider.create(creds)).build();

存储桶 ARN 格式

您可以使用此处列出的 Amazon 资源名称 (ARN) 格式来识别 Snowball Edge 设备上的 Amazon S3 存储桶:

arn:partition:s3:snow:account-id:device/device-id/bucket/bucket-name

其中 partition 是您预订 Snowball Edge 设备时所处区域的分区。如果设备为独立 Snowball Edge 设备,则 device-id 为 job_id,如果您拥有 Snowball Edge 集群,则为 cluster_id

在 Snowball Edge 设备上创建 S3 存储桶

您可以在 Snowball Edge 设备上创建 Amazon S3 存储桶,以便在边缘位置为需要本地数据访问、本地数据处理和数据驻留的应用存储和检索对象。Snow 系列设备上与 Amazon S3 兼容的存储提供了一个新的存储类别,即 SNOW,该存储类别使用 Amazon S3,并且用于在多个设备之间持久冗余地存储数据。您可以像在 Amazon S3 存储桶上一样使用相同的 API 和特征,包括存储桶生命周期策略、加密和标记。

以下示例将使用 Amazon CLI 为 Snowball Edge 设备创建 Amazon S3 存储桶。要运行此命令,请将用户输入占位符替换为您自己的信息。

aws s3control --profile your-profile create-bucket --bucket your-snow-bucket --endpoint-url https://s3ctrlapi-endpoint-ip

使用 Amazon CLI 创建和管理对象生命周期配置

您可以使用 Amazon S3 生命周期来在 Snow 系列设备上为与 Amazon S3 兼容的存储优化存储容量。您可以创建生命周期规则,使对象在老化时过期或被较新版本取代。您可以创建、启用、禁用或删除生命周期规则。有关 Amazon S3 生命周期的更多信息,请参阅管理存储生命周期

注意

创建存储桶的 Amazon Web Services 账户拥有该存储桶,并且是唯一可以创建、启用、禁用或删除生命周期规则的账户。

要使用 Amazon Command Line Interface (Amazon CLI) 在 Snow 系列设备存储桶上为与 Amazon S3 兼容的存储创建和管理生命周期配置,请参阅以下示例。

在 Snowball Edge 存储桶上放置生命周期配置

以下 Amazon CLI 示例在 Snowball Edge 存储桶上放置生命周期配置策略。此策略指定具有标记前缀 (myprefix) 的所有对象,并且标签在 10 天后过期。要使用此示例,请将每个用户输入占位符替换为您自己的信息。

首先,将生命周期配置策略保存到 JSON 文件中。在此示例中,文件命名为 lifecycle-example.json

{ "Rules": [{ "ID": "id-1", "Filter": { "And": { "Prefix": "myprefix", "Tags": [{ "Value": "mytagvalue1", "Key": "mytagkey1" }, { "Value": "mytagvalue2", "Key": "mytagkey2" } ], } }, "Status": "Enabled", "Expiration": { "Days": 10 } }] }

保存文件后,将 JSON 文件作为 put-bucket-lifecycle-configuration 命令的一部分提交。要使用此命令,请将每个用户输入占位符替换为您自己的信息。

aws s3control put-bucket-lifecycle-configuration --bucket example-snow-bucket --profile your-profile --lifecycle-configuration file://lifecycle-example.json --endpoint-url https://s3ctrlapi-endpoint-ip

有关此命令的更多信息,请参阅《Amazon CLI命令参考put-bucket-lifecycle-configuration中的。

在 Snowball Edge 设备上使用 S3 存储桶

借助 Snow 系列设备上与 Amazon S3 兼容的存储,您可以在 Snowball Edge 设备上创建 Amazon S3 存储桶,以便在本地为需要本地数据访问、本地数据处理和数据驻留的应用程序存储和检索对象。Snow 系列设备上与 Amazon S3 兼容的存储提供了一个新的存储类别,即 SNOW,该存储类别使用 Amazon S3 API,并且用于在多个 Snowball Edge 设备之间持久冗余地存储数据。您可以在 Snowball Edge 存储桶上使用与 Amazon S3 相同的 API 和特征,包括存储桶生命周期策略、加密和标记。您可以利用 Amazon Command Line Interface (Amazon CLI) 或 Amazon 开发工具包在 Snow 系列设备上使用与 Amazon S3 兼容的存储。

确定您能否在 Snow 系列设备存储桶上访问与 Amazon S3 兼容的存储

以下示例使用 head-bucket 命令来确定 Amazon S3 存储桶是否存在以及您是否有权使用 Amazon CLI 访问该存储桶。要使用此命令,请将每个用户输入占位符替换为您自己的信息。

aws s3api head-bucket --bucket sample-bucket --profile your-profile --endpoint-url https://s3api-endpoint-ip

检索存储桶列表

注意

为了获得最佳体验,请使用list-buckets代替list-regional-buckets。较旧的 Snowball Edge 设备不支持。list-buckets要访问它,请将设备更新到最新的软件版本。有关更新设备的更多信息,请参阅本指南中的更新 Snowball Edge 设备上的软件。有关该list-regional-buckets命令的更多信息,请参阅《Amazon CLI命令参考》list-regional-buckets中的。

以下示例使用 Amazon CLI 列出了 Snow 系列设备存储桶上与 Amazon S3 兼容的存储。要使用此命令,请将每个用户输入占位符替换为您自己的信息。

aws s3api list-buckets --account-id 123456789012 --profile your-profile --endpoint-url https://s3ctrlapi-endpoint-ip

有关此命令的更多信息,请参阅《命令参考》中的 list-buckets。Amazon CLI

以下适用于 Java 的开发工具包示例可获取 Snowball Edge 设备上的存储桶列表。有关更多信息,请参阅ListBuckets《亚马逊简单存储服务 API 参考》。

import com.amazonaws.services.s3.model.*; public void listBuckets() { ListBucketsRequest reqListBuckets = new ListBucketsRequest() .withAccountId(AccountId) ListBucketsResult respListBuckets = s3APIClient.RegionalBuckets(reqListBuckets); System.out.printf("ListBuckets Response: %s%n", respListBuckets.toString()); }

以下 PowerShell 示例获取了 Snowball Edge 设备上的存储桶列表。

Get-S3CRegionalBucketList -AccountId 012345678910 -Endpoint "https://snowball_ip" -Region snow

以下.NET 示例获取了 Snowball Edge 设备上的存储桶列表。

using Amazon.S3Control; using Amazon.S3Control.Model; namespace SnowTest; internal class Program { static async Task Main(string[] args) { var config = new AmazonS3ControlConfig { ServiceURL = "https://snowball_ip", AuthenticationRegion = "snow" // Note that this is not RegionEndpoint }; var client = new AmazonS3ControlClient(config); var response = await client.ListRegionalBucketsAsync(new ListRegionalBucketsRequest() { AccountId = "012345678910" }); } }

获取存储桶

以下示例使用 Amazon CLI 在 Snow 系列设备存储桶上获取与 Amazon S3 兼容的存储。要使用此命令,请将每个用户输入占位符替换为您自己的信息。

aws s3control get-bucket --account-id 123456789012 --bucket DOC-EXAMPLE-BUCKET --profile your-profile --endpoint-url https://s3ctrlapi-endpoint-ip

有关此命令的更多信息,请参阅《Amazon CLI 命令参考》中的 get-bucket

以下 Snow 系列设备上与 Amazon S3 兼容的存储示例使用适用于 Java 的开发工具包获取存储桶。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》https://docs.amazonaws.cn/AmazonS3/latest/API/中的 GetBucket

import com.amazonaws.services.s3control.model.*; public void getBucket(String bucketName) { GetBucketRequest reqGetBucket = new GetBucketRequest() .withBucket(bucketName) .withAccountId(AccountId); GetBucketResult respGetBucket = s3ControlClient.getBucket(reqGetBucket); System.out.printf("GetBucket Response: %s%n", respGetBucket.toString()); }

删除存储桶

重要
  • 创建存储桶的 Amazon Web Services 账户拥有该存储桶,也是唯一可以删除它的账户。

  • Snow 系列设备存储桶必须为空才能进行删除。

  • 存储桶在删除后不能恢复。

以下示例使用 Amazon CLI 在 Snow 系列设备存储桶上删除了与 Amazon S3 兼容的存储。要使用此命令,请将每个用户输入占位符替换为您自己的信息。

aws s3control delete-bucket --account-id 123456789012 --bucket DOC-EXAMPLE-BUCKET --profile your-profile --endpoint-url https://s3ctrlapi-endpoint-ip

有关此命令的更多信息,请参阅《Amazon CLI 命令参考》中的 delete-bucket