创建 Amazon S3 Storage Lens 存储统计管理工具控制面板
可以创建其它 S3 Storage Lens 存储统计管理工具自定义控制面板,其范围可以限定为涵盖 AWS Organizations 中您的组织,或者账户中的特定 AWS 区域或存储桶。
注意
对控制面板配置所做的任何更新最长可能需要 48 小时才能准确显示或可视化。
使用以下步骤在 Amazon S3 控制台中创建 Amazon S3 Storage Lens 存储统计管理工具控制面板。
步骤 1:定义控制面板范围
登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在页面顶部的导航栏中,选择当前所显示 AWS 区域的名称。接下来,选择要切换到的区域。
-
在导航窗格中,在 S3 Storage Lens 存储统计管理工具下选择控制面板。
-
选择创建控制面板。
-
在控制面板页面的常规部分中,执行以下操作:
-
查看控制面板的主区域。主区域是在其中存储此 Storage Lens 存储分析功能控制面板的配置和指标的 AWS 区域。
-
输入控制面板名称。
控制面板名称必须少于 65 个字符,且不得包含特殊字符或空格。
注意
创建控制面板后,您无法更改此控制面板名称。
-
您可以选择将标签添加到控制面板。您可以使用标签管理控制面板的权限并跟踪 S3 Storage Lens 存储统计管理工具的成本。
有关更多信息,请参阅《IAM 用户指南》中的使用资源标签控制访问以及 AWS Billing 用户指南中的 AWS 生成的成本分配标签。
注意
您最多可以在控制面板配置中添加 50 个标签。
-
-
在控制面板范围部分中,执行以下操作:
-
选择希望 S3 Storage Lens 存储统计管理工具在控制面板中包括或排除的区域和桶。
-
在所选区域中选择希望 S3 Storage Lens 存储统计管理工具包括或排除的桶。您可以包括或排除桶,但不能同时包括和排除桶。创建组织级控制面板时,此选项不可用。
注意
-
您可以包括或排除区域和桶。在组织中跨成员账户创建组织级控制面板时,此选项仅限于“区域”。
-
您最多可以选择 50 个桶来包括或排除。
-
步骤 2:配置指标选择
-
在指标选择部分,选择要为此控制面板聚合的指标类型。
-
要包括在桶级别聚合且可用于 14 天查询的免费指标,请选择 Free Metrics(免费指标)。
-
要启用高级指标和其他高级选项,请选择 Advanced metrics and recommendations(高级指标和建议)。这些选项包括高级前缀聚合、Amazon CloudWatch 发布和上下文建议。数据可查询 15 个月。高级指标和建议需要额外付费。有关更多信息,请参阅 Amazon S3 定价
。 有关高级指标和免费指标的更多信息,请参阅指标选择。
-
-
在 Advanced metrics and recommendations features(高级指标和建议功能)下方,选择您要启用的选项:
-
Advanced metrics(高级指标)
-
CloudWatch publishing(CloudWatch 发布)
-
Prefix aggregation(前缀聚合)
重要
如果您为 S3 Storage Lens 存储统计管理工具配置启用了前缀聚合,那么前缀级别的指标将不会发布到 CloudWatch。只有桶、账户和企业级 S3 Storage Lens 存储统计管理工具指标才会发布到 CloudWatch。
-
-
如果您启用了 Advanced metrics(高级指标),请选择要在 S3 Storage Lens 存储统计管理工具控制面板中显示的 Advanced metrics categories(高级指标类别):
-
活动指标
-
Detailed status code metrics(详细的状态代码指标)
-
Advanced cost optimization metrics(高级成本优化指标)
-
Advanced data protection metrics(高级数据保护指标)
有关指标类别的更多信息,请参阅指标类别。要获得指标的完整列表,请参阅 Amazon S3 Storage Lens 存储统计管理工具指标词汇表。
-
-
如果选择启用前缀聚合,请配置以下内容:
-
选择此控制面板的最小前缀阈值大小。
例如,5% 的前缀阈值表示将聚合构成占桶的总存储大小 5% 或更大的前缀。
-
选择前缀名称。
此设置指示评估前缀的最大级别数。前缀深度必须小于 10。
-
输入前缀分隔符字符。
此值用来标识每个前缀级别。Amazon S3 中的原定设置值为
/
个字符,但是您的存储结构可能会使用其他分隔符字符。
-
(可选)步骤 3:导出控制面板的指标
-
在 Metrics export(指标导出)部分中,要创建将每天放置在您选择的目标桶中的指标导出,请选择 Enable(启用)。
指标导出为 CSV 或 Apache Parquet 格式。它代表的数据范围与 S3 Storage Lens 存储统计管理工具控制面板数据相同,但不包含建议。
-
如果启用了指标导出,请选择每日指标导出的输出格式:CSV 或 Apache Parquet。
Parquet 是 Hadoop 的开源文件格式,它以平面列格式存储嵌套数据。
-
为您的指标导出选择目标 S3 桶。
您可以在 S3 Storage Lens 存储统计管理工具控制面板的当前账户中选择桶。或者,如果您拥有目标桶权限和目标桶拥有者的账户 ID,则可以选择另一个 AWS 账户。
-
选择目标 S3 桶(格式:
s3://
)。bucket-name
/prefix
桶必须在 S3 Storage Lens 存储统计管理工具控制面板的主区域中。S3 控制台向您显示 Amazon S3 将添加到目标桶策略的 Destination bucket permission(目标桶权限)。Amazon S3 将更新目标桶上的桶策略,以允许 S3 在该桶中放置数据。
-
(可选)要对指标导出启用服务器端加密,请选择 Specify an encryption key(指定加密密钥)。然后,选择加密类型:Amazon S3 托式管密钥(SSE-S3)或 AWS Key Management Service 密钥(SSE-KMS)。
您可以在 Amazon S3 托管式密钥(SSE-S3)和 AWS Key Management Service(AWS KMS)密钥(SSE-KMS)之间进行选择。
-
(可选)要指定 AWS KMS 密钥,必须选择 KMS 密钥或输入密钥 Amazon 资源名称(ARN)。
如果您选择客户托管式密钥,则必须在 AWS KMS 密钥策略中向 Amazon S3 Storage Lens 存储统计管理工具授予加密权限。有关更多信息,请参阅 使用 AWS KMS key 加密您的指标导出。
-
请选择创建控制面板。
以下示例命令创建带标签的 Amazon S3 Storage Lens 存储统计管理工具配置。要使用这些示例,请将
替换为您自己的信息。user input placeholders
aws s3control put-storage-lens-configuration --account-id=
111122223333
--config-id=example-dashboard-configuration-id
--region=us-east-1
--storage-lens-configuration=file://./config.json
--tags=file://./tags.json
以下示例命令创建不带标签的 Amazon S3 Storage Lens 存储统计管理工具配置。要使用这些示例,请将
替换为您自己的信息。user input placeholders
aws s3control put-storage-lens-configuration --account-id=
222222222222
--config-id=your-configuration-id
--region=us-east-1
--storage-lens-configuration=file://./config.json
例 – 创建和更新 Amazon S3 Storage Lens 存储统计管理工具配置
以下示例在适用于 Java 的 SDK 中创建和更新 Amazon S3 Storage Lens 存储统计管理工具配置:
package aws.example.s3control; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3control.AWSS3Control; import com.amazonaws.services.s3control.AWSS3ControlClient; import com.amazonaws.services.s3control.model.AccountLevel; import com.amazonaws.services.s3control.model.ActivityMetrics; import com.amazonaws.services.s3control.model.BucketLevel; import com.amazonaws.services.s3control.model.CloudWatchMetrics; import com.amazonaws.services.s3control.model.Format; import com.amazonaws.services.s3control.model.Include; import com.amazonaws.services.s3control.model.OutputSchemaVersion; import com.amazonaws.services.s3control.model.PrefixLevel; import com.amazonaws.services.s3control.model.PrefixLevelStorageMetrics; import com.amazonaws.services.s3control.model.PutStorageLensConfigurationRequest; import com.amazonaws.services.s3control.model.S3BucketDestination; import com.amazonaws.services.s3control.model.SSES3; import com.amazonaws.services.s3control.model.SelectionCriteria; import com.amazonaws.services.s3control.model.StorageLensAwsOrg; import com.amazonaws.services.s3control.model.StorageLensConfiguration; import com.amazonaws.services.s3control.model.StorageLensDataExport; import com.amazonaws.services.s3control.model.StorageLensDataExportEncryption; import com.amazonaws.services.s3control.model.StorageLensTag; import java.util.Arrays; import java.util.List; import static com.amazonaws.regions.Regions.
US_WEST_2
; public class CreateAndUpdateDashboard { public static void main(String[] args) { String configurationId = "ConfigurationId
"; String sourceAccountId = "111122223333
"; String exportAccountId = "Destination Account ID
"; String exportBucketArn = "arn:aws:s3:::destBucketName
"; // The destination bucket for your metrics export must be in the same Region as your S3 Storage Lens configuration. String awsOrgARN = "arn:aws:organizations::123456789012
:organization/o-abcdefgh
"; Format exportFormat = Format.CSV; try { SelectionCriteria selectionCriteria = new SelectionCriteria() .withDelimiter("/
") .withMaxDepth(5
) .withMinStorageBytesPercentage(10.0
); PrefixLevelStorageMetrics prefixStorageMetrics = new PrefixLevelStorageMetrics() .withIsEnabled(true
) .withSelectionCriteria(selectionCriteria); BucketLevel bucketLevel = new BucketLevel() .withActivityMetrics(new ActivityMetrics().withIsEnabled(true
)) .withAdvancedCostOptimizationMetrics(new AdvancedCostOptimizationMetrics().withIsEnabled(true
)) .withAdvancedDataProtectionMetrics(new AdvancedDataProtectionMetrics().withIsEnabled(true
)) .withDetailedStatusCodesMetrics(new DetailedStatusCodesMetrics().withIsEnabled(true
)) .withPrefixLevel(new PrefixLevel().withStorageMetrics(prefixStorageMetrics)); AccountLevel accountLevel = new AccountLevel() .withActivityMetrics(new ActivityMetrics().withIsEnabled(true
)) .withAdvancedCostOptimizationMetrics(new AdvancedCostOptimizationMetrics().withIsEnabled(true
)) .withAdvancedDataProtectionMetrics(new AdvancedDataProtectionMetrics().withIsEnabled(true
)) .withDetailedStatusCodesMetrics(new DetailedStatusCodesMetrics().withIsEnabled(true
)) .withBucketLevel(bucketLevel); Include include = new Include() .withBuckets(Arrays.asList("arn:aws:s3:::bucketName
")) .withRegions(Arrays.asList("us-west-2
")); StorageLensDataExportEncryption exportEncryption = new StorageLensDataExportEncryption() .withSSES3(new SSES3()); S3BucketDestination s3BucketDestination = new S3BucketDestination() .withAccountId(exportAccountId) .withArn(exportBucketArn) .withEncryption(exportEncryption) .withFormat(exportFormat) .withOutputSchemaVersion(OutputSchemaVersion.V_1) .withPrefix("Prefix"); CloudWatchMetrics cloudWatchMetrics = new CloudWatchMetrics() .withIsEnabled(true
); StorageLensDataExport dataExport = new StorageLensDataExport() .withCloudWatchMetrics(cloudWatchMetrics) .withS3BucketDestination(s3BucketDestination); StorageLensAwsOrg awsOrg = new StorageLensAwsOrg() .withArn(awsOrgARN
); StorageLensConfiguration configuration = new StorageLensConfiguration() .withId(configurationId) .withAccountLevel(accountLevel) .withInclude(include) .withDataExport(dataExport) .withAwsOrg(awsOrg) .withIsEnabled(true
); List<StorageLensTag> tags = Arrays.asList( new StorageLensTag().withKey("key-1
").withValue("value-1
"), new StorageLensTag().withKey("key-2
").withValue("value-2
") ); AWSS3Control s3ControlClient = AWSS3ControlClient.builder() .withCredentials(new ProfileCredentialsProvider()) .withRegion(US_WEST_2
) .build(); s3ControlClient.putStorageLensConfiguration(new PutStorageLensConfigurationRequest() .withAccountId(sourceAccountId) .withConfigId(configurationId) .withStorageLensConfiguration(configuration) .withTags(tags) ); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and 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(); } } }
要进一步了解您的存储,您可以创建一个或多个 S3 Storage Lens 组并将它们附加到您的控制面板。S3 Storage Lens 组是基于前缀、后缀、对象标签、对象大小、对象龄期或这些筛选条件的组合的自定义对象筛选条件。
您可以使用 S3 Storage Lens 组获得对大型共享桶(例如数据湖)的精细可见性,从而做出更明智的业务决策。例如,您可以将存储使用情况细分到一个或多个桶中各个项目和成本中心的特定对象组,从而简化存储分配并优化成本报告。
要使用 S3 Storage Lens 组,您必须升级控制面板以使用高级指标和建议。有关 S3 Storage Lens 组的更多信息,请参阅 使用 S3 Storage Lens 组筛选和汇总指标。