

# S3 Storage Lens에 CloudWatch 게시 사용
<a name="storage-lens-cloudwatch-enable-publish-option"></a>

S3 스토리지 렌즈 지표를 Amazon CloudWatch에 게시하여 [CloudWatch 대시보드](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)에서 운영 상태에 대한 통합 보기를 생성할 수 있습니다. 또한 경보 및 트리거된 작업, 지표 수학, 이상 감지와 같은 CloudWatch 기능을 사용하여 S3 스토리지 렌즈 지표를 모니터링하고 조치를 취할 수 있습니다. 또한 CloudWatch API 작업을 사용하면 서드 파티 공급자를 포함한 애플리케이션이 S3 스토리지 렌즈 지표에 액세스할 수 있습니다. CloudWatch 기능에 대한 자세한 내용은 [Amazon CloudWatch 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html)를 참조하세요.

S3 Storage Lens 지표는 S3 Storage Lens 구성을 소유한 계정의 CloudWatch에 게시됩니다. 고급 지표 내에서 CloudWatch 게시 옵션을 활성화하면 CloudWatch에서 구성 ID, 계정, 버킷(버킷 수준 지표만 해당), 리전 및 스토리지 클래스별로 계정 수준 및 버킷 수준 지표에 액세스할 수 있습니다. CloudWatch에서는 접두사 수준 지표를 사용할 수 없습니다.

S3 콘솔, Amazon S3 REST API, AWS CLI 및 AWS SDK로 신규 또는 기존 대시보드 구성에 CloudWatch 지원을 사용할 수 있습니다. CloudWatch 게시 옵션은 S3 스토리지 렌즈 고급 지표 및 권장 사항으로 업그레이드된 대시보드에 사용할 수 있습니다. S3 스토리지 렌즈 고급 지표 및 권장 사항 요금은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요. 추가 CloudWatch 지표 게시 요금은 적용되지 않습니다. 그러나 대시보드, 경보, API 호출 등의 다른 CloudWatch 요금이 적용됩니다.

S3 Storage Lens 지표용 CloudWatch 게시 옵션을 사용하려면 다음 주제를 참조하세요.

**참고**  
S3 Storage Lens 지표는 일일 지표이며 하루에 한 번 CloudWatch에 게시됩니다. CloudWatch에서 S3 Storage Lens 지표를 쿼리할 때 쿼리 기간은 1일(86,400초)이어야 합니다. 일일 S3 Storage Lens 지표가 Amazon S3 콘솔의 S3 Storage Lens 대시보드에 표시된 후 동일한 지표가 CloudWatch에 표시되는 데 몇 시간이 걸릴 수 있습니다. S3 Storage Lens 지표에 대해 CloudWatch 게시 옵션을 처음 사용하면 지표가 CloudWatch에 게시되는 데 최대 24시간이 걸릴 수 있습니다.  
현재 S3 스토리지 렌즈 지표는 CloudWatch 스트림을 통해 사용할 수 없습니다.

## S3 콘솔 사용
<a name="storage-lens-cloudwatch-enable-publish-console"></a>

S3 스토리지 렌즈 대시보드를 업데이트할 때 대시보드 이름이나 홈 리전을 변경할 수 없습니다. 또한 전체 계정의 스토리지로 범위가 지정된 기본 대시보드의 범위를 변경할 수 없습니다.

**CloudWatch 게시를 사용하도록 S3 스토리지 렌즈 대시보드 업데이트**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **S3 스토리지 렌즈**(S3 스토리지 렌즈), **Dashboards**(대시보드)를 선택합니다.

1. 편집할 대시보드를 선택한 다음 **편집(Edit)**을 선택합니다.

1. **지표 선택(Metrics selection)**에서 **고급 지표 및 권장 사항(Advanced metrics and recommendations)**을 선택합니다.

   고급 지표 및 권장 사항을 추가 요금에 사용할 수 있습니다. 고급 지표 및 권장 사항에는 15개월의 데이터 쿼리 기간, 접두사 수준에서 집계된 사용량 지표, 버킷별로 집계된 활동 지표, CloudWatch 게시 옵션, 스토리지 비용을 최적화하고 데이터 보호 모범 사례를 적용하는 데 도움이 되는 상황별 권장 사항이 포함됩니다. 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

1. **고급 지표 및 권장 사항 기능 선택(Select Advanced metrics and recommendations features)**에서 **CloudWatch 게시(CloudWatch publishing)**를 선택합니다.
**중요**  
구성에서 사용량 지표에 접두사 집계를 사용하면 접두사 수준 지표가 CloudWatch에 게시되지 않습니다. 버킷, 계정 및 조직 수준 S3 Storage Lens 지표만 CloudWatch에 게시됩니다.

1. **변경 사항 저장**을 선택합니다.

**CloudWatch 지원을 사용하는 새 S3 Storage Lens 대시보드 생성**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **스토리지 렌즈**(스토리지 렌즈), **Dashboards**(대시보드)를 선택합니다.

1. **대시보드 생성**을 선택합니다.

1. **General**(일반)에서 다음 구성 옵션을 정의합니다.

   1. **Dashboard name**(대시보드 이름)에 대시보드 이름을 입력합니다.

      대시보드 이름은 65자 미만이어야 하며 특수 문자나 공백을 포함할 수 없습니다. 대시보드를 생성한 후에는 대시보드 이름을 변경할 수 없습니다.

   1. 대시보드에 대해 **홈 리전(Home Region)**을 선택합니다.

      이 대시보드 범위에 포함된 모든 리전에 대한 대시보드 지표는 지정된 홈 리전에 중앙 집중식으로 저장됩니다. CloudWatch에서 S3 Storage Lens 지표는 홈 리전에서도 사용할 수 있습니다. 대시보드를 생성한 후에는 홈 리전을 변경할 수 없습니다.

1. (선택 사항) 태그를 추가하려면 **태그 추가(Add tag)**를 선택하고 태그 **키(Key)**와 **값(Value)**을 입력합니다.
**참고**  
대시보드 구성에 최대 50개의 태그를 추가할 수 있습니다.

1. 구성 범위를 정의합니다.

   1. 조직 수준 구성을 생성할 때 **Include all accounts in your configuration**(구성에 모든 계정 포함) 또는 **Limit the scope to your signed-in account**(로그인한 계정으로 범위 제한)를 사용하여 구성에 포함할 계정을 선택합니다.
**참고**  
모든 계정을 포함하는 조직 수준 구성을 생성할 때 버킷이 아닌 리전만 포함하거나 제외할 수 있습니다.

   1. 다음에 따라 S3 스토리지 렌즈가 대시보드 구성에 포함할 리전과 버킷을 선택합니다.
      + 모든 리전을 포함하려면 **리전 및 버킷 포함(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개까지 선택할 수 있습니다.

1. **Metrics selection**(지표 선택)에서 **Advanced metrics and recommendations**(고급 지표 및 권장 사항)를 선택합니다.

   고급 지표 및 권장 사항 요금에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/) 섹션을 참조하세요.

1. **Select advanced metrics and recommendations features**(고급 지표 및 권장 사항 기능 선택)에서 활성화할 옵션을 선택합니다.
   + **Advanced metrics(고급 지표** 
   + **CloudWatch 게시(CloudWatch publishing**
**중요**  
S3 스토리지 렌즈 구성에 접두사 집계를 사용하면 접두사 수준 지표가 CloudWatch에 게시되지 않습니다. 버킷, 계정 및 조직 수준 S3 스토리지 렌즈 지표만 CloudWatch에 게시됩니다.
   + **접두사 집계(Prefix aggregation**
**참고**  
고급 지표 및 권장 사항 기능에 대한 자세한 내용은 [지표 선택](storage_lens_basics_metrics_recommendations.md#storage_lens_basics_metrics_selection) 섹션을 참조하세요.

1. **Advanced metrics**(고급 지표)를 활성화한 경우 S3 스토리지 렌즈 대시보드에 표시하려는 **Advanced metrics categories**(고급 지표 범주)를 선택합니다.
   + **활동 지표**
   + **세부 상태 코드 지표**
   + **고급 비용 최적화 지표**
   + **고급 데이터 보호 지표**

   비용 범주에 관한 자세한 내용은 [지표 범주](storage_lens_basics_metrics_recommendations.md#storage_lens_basics_metrics_types) 섹션을 참조하십시오. 전체 지표 목록은 [Amazon S3 스토리지 렌즈 지표 용어집](storage_lens_metrics_glossary.md) 섹션을 참조하세요.

1. (선택 사항) 지표 내보내기를 구성합니다.

   지표 내보내기를 구성하는 방법에 대한 자세한 내용은 [S3 콘솔 사용](storage_lens_creating_dashboard.md#storage_lens_console_creating) 단계를 참조하세요.

1. **대시보드 생성**을 선택합니다.

## AWS CLI 사용
<a name="storage-lens-cloudwatch-enable-publish-cli"></a>

다음 AWS CLI 예에서는 S3 스토리지 렌즈 조직 수준 고급 지표 및 권장 사항 구성으로 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용 AWS SDK 사용
<a name="storage-lens-cloudwatch-enable-publish-sdk"></a>

```
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();
        }
    }
}
```

## REST API 사용
<a name="storage-lens-cloudwatch-enable-publish-api"></a>

Amazon S3 REST API로 CloudWatch 게시 옵션을 사용하도록 설정하려면 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutStorageLensConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutStorageLensConfiguration.html)을 사용합니다.

**다음 단계**  
CloudWatch 게시 옵션을 사용하도록 설정한 후 CloudWatch의 S3 Storage Lens 지표에 액세스할 수 있습니다. CloudWatch 기능을 활용하여 CloudWatch에서 S3 Storage Lens 데이터를 모니터링하고 분석할 수도 있습니다. 자세한 내용은 다음 항목을 참조하세요.
+ [S3 Storage Lens 지표 및 차원](storage-lens-cloudwatch-metrics-dimensions.md)
+ [CloudWatch의 S3 Storage Lens 지표 작업](storage-lens-cloudwatch-monitoring-cloudwatch.md)