S3 Storage Lens에 대한 CloudWatch 게시 활성화
S3 Storage Lens에 대한 CloudWatch 게시 활성화
S3 Storage Lens 지표를 Amazon CloudWatch에 게시해 CloudWatch 대시보드에서 운영 상태를 통합해서 볼 수 있어요. 또한 CloudWatch의 경보 및 트리거 작업, 지표 계산(metric math), 이상 탐지 같은 기능을 사용해 S3 Storage Lens 지표를 모니터링하고 조치를 취할 수 있어요. 게다가 CloudWatch API 작업을 사용하면 타사 제공업체를 포함한 애플리케이션이 S3 Storage Lens 지표에 액세스할 수 있어요. CloudWatch 기능에 대한 자세한 내용은 Amazon CloudWatch 사용자 안내서를 참고하세요.
본문
S3 Storage Lens 지표는 S3 Storage Lens 구성을 소유한 계정의 CloudWatch에 게시돼요. 고급 지표 내에서 CloudWatch 게시 옵션을 활성화한 후에는 CloudWatch에서 구성 ID, 계정, 버킷(버킷 수준 지표에만 해당), 리전, 스토리지 클래스별로 계정 수준 및 버킷 수준 지표에 액세스할 수 있어요. 프리픽스 수준 지표는 CloudWatch에서 제공되지 않아요.
S3 콘솔, Amazon S3 REST API, AWS CLI, AWS SDK를 사용해 새 대시보드 구성이나 기존 대시보드 구성에 대해 CloudWatch 지원을 활성화할 수 있어요. CloudWatch 게시 옵션은 S3 Storage Lens 고급 지표 및 권장 사항으로 업그레이드된 대시보드에 사용할 수 있어요. S3 Storage Lens 고급 지표 및 권장 사항의 요금은 Amazon S3 요금을 참고하세요. 추가 CloudWatch 지표 게시 요금은 부과되지 않지만, 대시보드, 경보, API 호출 같은 다른 CloudWatch 요금은 부과돼요.
S3 Storage Lens 지표용 CloudWatch 게시 옵션을 활성화하려면 다음 주제를 참고하세요.
참고
S3 Storage Lens 지표는 일일 지표이며 하루에 한 번 CloudWatch에 게시돼요. CloudWatch에서 S3 Storage Lens 지표를 쿼리할 때 쿼리 기간(period)은 1일(86400초)이어야 해요. Amazon S3 콘솔의 S3 Storage Lens 대시보드에 일일 S3 Storage Lens 지표가 표시된 후에도 동일한 지표가 CloudWatch에 표시되려면 몇 시간이 걸릴 수 있어요. S3 Storage Lens 지표에 대해 CloudWatch 게시 옵션을 처음 활성화하면 지표가 CloudWatch에 게시되는 데 최대 24시간이 걸릴 수 있어요.
현재 S3 Storage Lens 지표는 CloudWatch 스트림을 통해 사용할 수 없어요.
S3 Storage Lens 대시보드를 업데이트할 때는 대시보드 이름이나 홈 리전을 변경할 수 없어요. 또한 전체 계정의 스토리지로 범위가 지정된 기본 대시보드의 범위도 변경할 수 없어요.
CloudWatch 게시를 활성화하도록 S3 Storage Lens 대시보드를 업데이트하려면
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 열어요.
- 왼쪽 탐색 창에서 S3 Storage Lens, Dashboards를 선택해요.
- 편집할 대시보드를 선택한 다음 Edit을 선택해요.
- Metrics selection에서 Advanced metrics and recommendations를 선택해요. 고급 지표 및 권장 사항은 추가 비용으로 사용할 수 있어요. 고급 지표 및 권장 사항에는 데이터 쿼리를 위한 15개월 기간, 프리픽스 수준에서 집계된 사용량 지표, 버킷별로 집계된 활동 지표, CloudWatch 게시 옵션, 스토리지 비용 최적화와 데이터 보호 모범 사례 적용을 돕는 상황별 권장 사항이 포함돼요. 자세한 내용은 Amazon S3 요금을 참고하세요.
- Select Advanced metrics and recommendations features에서 CloudWatch publishing을 선택해요.
중요
구성에서 사용량 지표에 대해 프리픽스 집계를 활성화하면 프리픽스 수준 지표는 CloudWatch에 게시되지 않아요. 버킷, 계정, 조직 수준의 S3 Storage Lens 지표만 CloudWatch에 게시돼요.
- Save changes를 선택해요.
CloudWatch 지원을 활성화하는 새 S3 Storage Lens 대시보드를 만들려면
-
AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 열어요.
-
왼쪽 탐색 창에서 Storage Lens, Dashboards를 선택해요.
-
Create dashboard를 선택해요.
-
General에서 다음 구성 옵션을 정의해요.
Dashboard name에 대시보드 이름을 입력해요. 대시보드 이름은 65자 미만이어야 하고 특수 문자나 공백을 포함할 수 없어요. 대시보드를 만든 후에는 대시보드 이름을 변경할 수 없어요.
대시보드의 Home Region을 선택해요. 대시보드 범위에 포함된 모든 리전의 지표는 지정된 홈 리전에 중앙 집중식으로 저장돼요. CloudWatch에서 S3 Storage Lens 지표도 홈 리전에서 사용할 수 있어요. 대시보드를 만든 후에는 홈 리전을 변경할 수 없어요.
-
(선택 사항) 태그를 추가하려면 Add tag를 선택하고 태그 Key와 Value를 입력해요.
참고
대시보드 구성에 최대 50개의 태그를 추가할 수 있어요.
-
구성의 범위를 정의해요.
조직 수준 구성을 만들 경우 구성에 포함할 계정을 선택해요: Include all accounts in your configuration 또는 Limit the scope to your signed-in account 중에서 선택해요.
참고
모든 계정을 포함하는 조직 수준 구성을 만들 때는 버킷이 아닌 리전만 포함하거나 제외할 수 있어요.
다음을 수행해 S3 Storage Lens가 대시보드 구성에 포함할 리전과 버킷을 선택해요.
- 모든 리전을 포함하려면 Include Regions and buckets를 선택해요.
- 특정 리전을 포함하려면 Include all Regions을 해제하고 Choose Regions to include에서 S3 Storage Lens가 대시보드에 포함할 리전을 선택해요.
- 특정 버킷을 포함하려면 Include all buckets을 해제하고 Choose buckets to include에서 S3 Storage Lens가 대시보드에 포함할 버킷을 선택해요.
참고
최대 50개의 버킷을 선택할 수 있어요.
-
Metrics selection에서 Advanced metrics and recommendations를 선택해요. 고급 지표 및 권장 사항 요금에 대한 자세한 내용은 Amazon S3 요금을 참고하세요.
-
Advanced metrics and recommendations features에서 활성화할 옵션을 선택해요.
- Advanced metrics
- CloudWatch publishing
중요
S3 Storage Lens 구성에 대해 프리픽스 집계를 활성화하면 프리픽스 수준 지표는 CloudWatch에 게시되지 않아요. 버킷, 계정, 조직 수준의 S3 Storage Lens 지표만 CloudWatch에 게시돼요.
- Prefix aggregation
참고
고급 지표 및 권장 사항 기능에 대한 자세한 내용은 Metrics selection을 참고하세요.
-
Advanced metrics를 활성화했다면 S3 Storage Lens 대시보드에 표시할 Advanced metrics 범주를 선택해요.
- Activity metrics
- Detailed status code metrics
- Advanced cost optimization metrics
- Advanced data protection metrics
지표 범주에 대한 자세한 내용은 Metrics categories를 참고하세요. 전체 지표 목록은 Amazon S3 Storage Lens 지표 용어집을 참고하세요.
-
(선택 사항) 지표 내보내기를 구성해요. 지표 내보내기 구성 방법에 대한 자세한 내용은 S3 콘솔 사용 단계를 참고하세요.
-
Create dashboard를 선택해요.
다음 AWS CLI 예시는 S3 Storage Lens 조직 수준 고급 지표 및 권장 사항 구성을 사용해 CloudWatch 게시 옵션을 활성화해요. 이 예시를 사용하려면 user input placeholders를 본인 정보로 바꿔요.
aws s3control put-storage-lens-configuration --account-id=555555555555 --config-id=your-configuration-id --region=us-east-1 --storage-lens-configuration=file://./config.json
config.json
{
"Id": "SampleS3StorageLensConfiguration",
"AwsOrg": {
"Arn": "arn:aws:organizations::123456789012:organization/o-abcdefgh"
},
"AccountLevel": {
"ActivityMetrics": {
"IsEnabled":true
},
"AdvancedCostOptimizationMetrics": {
"IsEnabled":true
},
"AdvancedDataProtectionMetrics": {
"IsEnabled":true
},
"DetailedStatusCodesMetrics": {
"IsEnabled":true
},
"BucketLevel": {
"ActivityMetrics": {
"IsEnabled":true
},
"AdvancedCostOptimizationMetrics": {
"IsEnabled":true
},
"DetailedStatusCodesMetrics": {
"IsEnabled":true
},
"PrefixLevel":{
"StorageMetrics":{
"IsEnabled":true,
"SelectionCriteria":{
"MaxDepth":5,
"MinStorageBytesPercentage":1.25,
"Delimiter":"/"
}
}
}
}
},
"Exclude": {
"Regions": [
"eu-west-1"
],
"Buckets": [
"arn:aws:s3:::amzn-s3-demo-source-bucket "
]
},
"IsEnabled": true,
"DataExport": {
"S3BucketDestination": {
"OutputSchemaVersion": "V_1",
"Format": "CSV",
"AccountId": "111122223333",
"Arn": "arn:aws:s3:::amzn-s3-demo-destination-bucket",
"Prefix": "prefix-for-your-export-destination",
"Encryption": {
"SSES3": {}
}
},
"CloudWatchMetrics": {
"IsEnabled": true
}
}
}
다음은 Java SDK를 사용해 CloudWatch 지원 구성으로 대시보드를 만들고 업데이트하는 예시예요.
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 = "Source Account ID";
String exportAccountId = "Destination Account ID";
String exportBucketArn = "arn:aws:s3:::amzn-s3-demo-destination-bucket"; // 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:::amzn-s3-demo-bucket"))
.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();
}
}
}
Amazon S3 REST API를 사용해 CloudWatch 게시 옵션을 활성화하려면 PutStorageLensConfiguration을 사용할 수 있어요.
다음 단계
CloudWatch 게시 옵션을 활성화한 후에는 CloudWatch에서 S3 Storage Lens 지표에 액세스할 수 있어요. 또한 CloudWatch 기능을 활용해 CloudWatch에서 S3 Storage Lens 데이터를 모니터링하고 분석할 수 있어요. 자세한 내용은 다음 주제를 참고하세요.