

# Amazon S3 Storage Lens 대시보드 만들기
<a name="storage_lens_creating_dashboard"></a>

AWS Organizations의 조직 또는 계정 내의 특정 AWS 리전이나 버킷으로 범위를 지정할 수 있는 추가 S3 Storage Lens 사용자 지정 대시보드를 만들 수 있습니다.

**참고**  
대시보드 구성을 업데이트하는 경우 올바르게 표시하거나 시각화하는 데 최장 48시간이 걸릴 수 있습니다.

## S3 콘솔 사용
<a name="storage_lens_console_creating"></a>

다음 단계에 따라 Amazon S3 콘솔에서 Amazon S3 스토리지 렌즈 대시보드를 생성합니다.

**1단계: 일반 설정 구성**

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

1. 페이지 상단의 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 그런 다음 전환하려는 리전을 선택합니다.

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

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

1. **대시보드(Dashboard)** 페이지의 **일반(General)** 섹션에서 다음을 수행합니다.

   1. 대시보드의 **홈 리전**을 확인합니다. 홈 리전은 이 Storage Lens 대시보드에 대한 구성 및 지표가 저장되는 AWS 리전입니다.

   1. 대시보드 이름을 입력합니다.

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

   1. 대시보드에 업데이트된 일일 지표를 표시하려면 **활성화됨**을 선택합니다.

   1. (선택 사항) 대시보드에 **태그**를 추가하도록 선택할 수 있습니다. 태그를 사용하여 대시보드에 대한 권한을 관리하고 S3 스토리지 렌즈에 대한 비용을 추적할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [태그를 사용한 AWS 리소스 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) 및 *AWS Billing 사용 설명서*의 [AWS에서 생성된 태그 사용](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/aws-tags.html)을 참조하세요.
**참고**  
대시보드 구성에 최대 50개의 태그를 추가할 수 있습니다.

1. **다음**을 선택하여 변경 사항을 저장하고 계속합니다.

**2단계: 대시보드 범위 정의**

1. **대시보드 범위** 섹션에서 S3 Storage Lens가 대시보드에 포함하거나 제외할 리전과 버킷을 선택합니다.

1. S3 스토리지 렌즈에 포함하거나 제외하도록 사용자가 선택한 리전에서 버킷을 선택합니다. 버킷을 포함하거나 제외할 수 있지만, 둘 다 할 수는 없습니다. 조직 수준의 대시보드를 생성할 때는 이 옵션을 사용할 수 없습니다.
**참고**  
리전과 버킷을 포함하거나 제외할 수 있습니다. 이 옵션은 조직의 구성원 계정에서 조직 수준의 대시보드를 생성할 때만 리전으로 제한됩니다.
포함하거나 제외할 버킷을 최대 50개까지 선택할 수 있습니다.

1. **다음**을 선택하여 변경 사항을 저장하고 계속합니다.

**3단계: Storage Lens 티어 선택**

1. **Storage Lens 티어** 섹션에서 이 대시보드에 대해 집계할 기능 티어를 선택합니다.

   1. 버킷 수준에서 집계되고 14일 동안 쿼리에 사용할 수 있는 무료 지표를 포함하려면 **무료 티어**를 선택합니다.

   1. 고급 지표를 활성화하려면 **고급 티어**를 선택합니다. 이러한 옵션에는 접두사 또는 Storage Lens 그룹 집계, Amazon CloudWatch 게시, 확장된 접두사 보고서 및 컨텍스트 권장 사항이 포함됩니다. 데이터는 15개월 동안 쿼리에 사용할 수 있습니다. 고급 지표 및 권장 사항에는 추가 비용이 부과됩니다. 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하십시오.

      고급 지표 및 무료 지표에 대한 자세한 내용은 [지표 선택](storage_lens_basics_metrics_recommendations.md#storage_lens_basics_metrics_selection) 섹션을 참조하십시오.

1. **고급 지표 범주**에서 활성화하려는 지표 범주를 선택합니다.
   + **활동 지표**
   + **세부 상태 코드 지표**
   + **비용 최적화 지표**
   + **데이터 보호 지표**
   + **성능 지표**

   각 범주에 포함되는 지표를 미리 보려면 지표 범주 확인란 목록 아래의 드롭다운 화살표 버튼을 사용합니다. 비용 범주에 관한 자세한 내용은 [지표 범주](storage_lens_basics_metrics_recommendations.md#storage_lens_basics_metrics_types) 섹션을 참조하십시오. 전체 지표 목록은 [Amazon S3 스토리지 렌즈 지표 용어집](storage_lens_metrics_glossary.md) 섹션을 참조하세요.

1. **접두사 구분 기호**를 선택하거나 지정하여 각 접두사 내의 수준을 구분합니다. 이 값은 각 접두사 수준을 식별하는 데 사용되는 값입니다. Amazon S3의 기본값은 ‘`/`‘ 문자이지만, 사용자 스토리지 구조에서 다른 구분 기호를 사용할 수 있습니다.

1. **다음**을 선택하여 변경 사항을 저장하고 계속합니다.

**4단계: (선택 사항) 지표 집계 선택**

1. **추가 지표 집계**에서 집계할 지표를 선택합니다.
   + 접두사 집계(Prefix aggregation)
   + Storage Lens 그룹 집계

1. **접두사 집계**를 활성화한 경우 대시보드의 최소 **접두사 임계값**과 **접두사 깊이**를 지정합니다. 그런 뒤에 **다음**을 선택하여 저장하고 계속합니다.
**참고**  
**접두사 깊이** 설정은 심층 S3 Storage Lens가 객체 접두사를 분석할 계층 수준 수를 결정하며, 최대 제한은 10개 수준입니다. **접두사 임계값**은 접두사가 Storage Lens 지표에 포함되기 전에 표시해야 하는 총 스토리지의 최소 백분율을 지정합니다.

1. **Storage Lens 그룹 집계**를 활성화한 경우 다음 중 하나를 선택합니다.
   + **Storage Lens 그룹 포함**
   + **Storage Lens 그룹 제외**

1. 집계에 Storage Lens 그룹을 포함하는 경우 **홈 리전에 모든 Storage Lens 그룹을 포함**하거나 포함할 Storage Lens 그룹을 지정할 수 있습니다.

1. **다음**을 선택하여 변경 사항을 저장하고 계속합니다.

**5단계: (선택 사항) 지표 내보내기 및 게시 설정 선택**

1. CloudWatch 대시보드에서 Storage Lens지표에 액세스하려면 **지표 게시**에서 **CloudWatch 게시**를 선택합니다.
**참고**  
CloudWatch에서는 접두사 수준 지표를 사용할 수 없습니다.

1. **지표 내보내기**에서 매일 내보낼 Storage Lens 대시보드 데이터를 선택합니다.
   + **기본 지표 보고서**
   + **확장된 접두사 지표 보고서**

1. (선택 사항) **기본 지표 보고서**를 선택한 경우 **기본 지표 보고서** 설정에서 버킷 유형을 선택합니다. 보고서를 범용 Amazon S3 버킷 또는 AWS 관리형 S3 테이블 버킷으로 내보낼 수 있습니다. 선택한 버킷 유형에 따라 **범용 버킷 대상 설정** 또는 **테이블 버킷 대상 설정** 옵션을 업데이트합니다.
**참고**  
**기본 지표 보고서**에는 접두사 집계 설정에서 설정된 임계값 및 깊이 내에 있는 접두사만 포함됩니다.  
암호화 키 지정을 선택한 경우, AWS KMS 키(SSE-KMS) 또는 Amazon S3 관리형 키(SSE-S3) 중 하나를 선택해야 합니다. 대상 버킷 정책에 암호화가 필요한 경우 지표 내보내기를 위한 암호화 키를 제공해야 합니다. 암호화 키가 없으면 S3로 내보내기가 실패합니다. 자세한 내용은 [AWS KMS key를 사용하여 지표 내보내기 암호화](storage_lens_encrypt_permissions.md) 섹션을 참조하세요.

1. (선택 사항) **확장된 접두사 지표 보고서**를 선택한 경우 **확장된 접두사 지표 보고서** 설정에서 버킷 유형을 선택합니다. 보고서를 범용 Amazon S3 버킷 또는 읽기 전용 S3 테이블 버킷으로 내보낼 수 있습니다. 선택한 버킷 유형에 따라 **범용 버킷 대상 설정** 또는 **테이블 버킷 대상 설정**을 업데이트합니다.
**참고**  
**확장된 접두사 지표 보고서**에는 대시보드 범위에 지정된 선택한 모든 버킷의 접두사 깊이 50까지의 모든 접두사가 포함됩니다.  
암호화 키 지정을 선택한 경우, AWS KMS 키(SSE-KMS) 또는 Amazon S3 관리형 키(SSE-S3) 중 하나를 선택해야 합니다. 대상 버킷 정책에 암호화가 필요한 경우 지표 내보내기를 위한 암호화 키를 제공해야 합니다. 암호화 키가 없으면 S3로 내보내기가 실패합니다. 자세한 내용은 [AWS KMS key를 사용하여 지표 내보내기 암호화](storage_lens_encrypt_permissions.md) 섹션을 참조하세요.

1. **다음**을 선택하여 변경 사항을 저장하고 계속합니다.

1. **검토 및 생성** 페이지의 모든 내용을 검토합니다. 추가 변경 사항이 없는 경우 **다음**을 선택하여 변경 사항을 저장하고 대시보드를 생성합니다.

**6단계: 대시보드 구성 검토 및 대시보드 생성**

1. **일반** 섹션에서 설정을 검토합니다. 변경하려면 **편집**을 선택합니다.

1. **대시보드 범위** 섹션에서 설정을 검토합니다. 변경하려면 **편집**을 선택합니다.

1. **Storage Lens 티어** 섹션에서 설정을 검토합니다. 변경하려면 **편집**을 선택합니다.

1. **지표 집계** 섹션에서 설정을 검토합니다. 변경하려면 **편집**을 선택합니다.

1. **지표 내보내기** 섹션에서 설정을 검토합니다. 변경하려면 **편집**을 선택합니다.

1. 모든 대시보드 구성 설정을 검토하고 확인한 후 **제출**을 선택하여 대시보드를 생성합니다.

새 Storage Lens 대시보드를 성공적으로 생성한 후에는 Storage Lens **대시보드** 페이지에 나열된 새 대시보드를 볼 수 있습니다.

## AWS CLI 사용
<a name="S3PutStorageLensConfigurationTagsCLI"></a>

**Example**  
다음 예제 명령에서는 태그가 있는 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
```

**Example**  
다음 예제 명령에서는 태그가 없는 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
```

## Java용 AWS SDK 사용
<a name="S3CreateandUpdateStorageLensConfigurationJava"></a>

**Example – Amazon S3 Storage Lens 구성 만들기 및 업데이트**  
다음 예제에서는 SDK for Java에서 Amazon S3 Storage Lens 구성을 만들고 업데이트합니다.  

```
package aws.example.s3control;

import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.core.exception.SdkClientException;
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3control.S3ControlClient;
import software.amazon.awssdk.services.s3control.model.AccountLevel;
import software.amazon.awssdk.services.s3control.model.ActivityMetrics;
import software.amazon.awssdk.services.s3control.model.AdvancedCostOptimizationMetrics;
import software.amazon.awssdk.services.s3control.model.AdvancedDataProtectionMetrics;
import software.amazon.awssdk.services.s3control.model.AdvancedPerformanceMetrics;
import software.amazon.awssdk.services.s3control.model.BucketLevel;
import software.amazon.awssdk.services.s3control.model.CloudWatchMetrics;
import software.amazon.awssdk.services.s3control.model.DetailedStatusCodesMetrics;
import software.amazon.awssdk.services.s3control.model.Format;
import software.amazon.awssdk.services.s3control.model.Include;
import software.amazon.awssdk.services.s3control.model.OutputSchemaVersion;
import software.amazon.awssdk.services.s3control.model.PrefixLevel;
import software.amazon.awssdk.services.s3control.model.PrefixLevelStorageMetrics;
import software.amazon.awssdk.services.s3control.model.PutStorageLensConfigurationRequest;
import software.amazon.awssdk.services.s3control.model.S3BucketDestination;
import software.amazon.awssdk.services.s3control.model.SSES3;
import software.amazon.awssdk.services.s3control.model.SelectionCriteria;
import software.amazon.awssdk.services.s3control.model.StorageLensAwsOrg;
import software.amazon.awssdk.services.s3control.model.StorageLensConfiguration;
import software.amazon.awssdk.services.s3control.model.StorageLensDataExport;
import software.amazon.awssdk.services.s3control.model.StorageLensDataExportEncryption;
import software.amazon.awssdk.services.s3control.model.StorageLensExpandedPrefixesDataExport;
import software.amazon.awssdk.services.s3control.model.StorageLensTableDestination;
import software.amazon.awssdk.services.s3control.model.StorageLensTag;

import java.util.Arrays;
import java.util.List;

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 = SelectionCriteria.builder()
                    .delimiter("/")
                    .maxDepth(5)
                    .minStorageBytesPercentage(10.0)
                    .build();

            PrefixLevelStorageMetrics prefixStorageMetrics = PrefixLevelStorageMetrics.builder()
                    .isEnabled(true)
                    .selectionCriteria(selectionCriteria)
                    .build();

            BucketLevel bucketLevel = BucketLevel.builder()
                    .activityMetrics(ActivityMetrics.builder().isEnabled(true).build())
                    .advancedCostOptimizationMetrics(AdvancedCostOptimizationMetrics.builder().isEnabled(true).build())
                    .advancedDataProtectionMetrics(AdvancedDataProtectionMetrics.builder().isEnabled(true).build())
                    .advancedPerformanceMetrics(AdvancedPerformanceMetrics.builder().isEnabled(true).build())
                    .detailedStatusCodesMetrics(DetailedStatusCodesMetrics.builder().isEnabled(true).build())
                    .prefixLevel(PrefixLevel.builder().storageMetrics(prefixStorageMetrics).build())
                    .build();

            AccountLevel accountLevel = AccountLevel.builder()
                    .activityMetrics(ActivityMetrics.builder().isEnabled(true).build())
                    .advancedCostOptimizationMetrics(AdvancedCostOptimizationMetrics.builder().isEnabled(true).build())
                    .advancedPerformanceMetrics(AdvancedPerformanceMetrics.builder().isEnabled(true).build())
                    .advancedDataProtectionMetrics(AdvancedDataProtectionMetrics.builder().isEnabled(true).build())
                    .detailedStatusCodesMetrics(DetailedStatusCodesMetrics.builder().isEnabled(true).build())
                    .bucketLevel(bucketLevel)
                    .build();

            Include include = Include.builder()
                    .buckets(Arrays.asList("arn:aws:s3:::bucketName"))
                    .regions(Arrays.asList("us-west-2"))
                    .build();

            StorageLensDataExportEncryption exportEncryption = StorageLensDataExportEncryption.builder()
                    .sses3(SSES3.builder().build())
                    .build();

            S3BucketDestination s3BucketDestination = S3BucketDestination.builder()
                    .accountId(exportAccountId)
                    .arn(exportBucketArn)
                    .encryption(exportEncryption)
                    .format(exportFormat)
                    .outputSchemaVersion(OutputSchemaVersion.V_1)
                    .prefix("Prefix")
                    .build();

            StorageLensTableDestination s3TablesDestination = StorageLensTableDestination.builder()
                    .encryption(exportEncryption)
                    .isEnabled(true)
                    .build();

            CloudWatchMetrics cloudWatchMetrics = CloudWatchMetrics.builder()
                    .isEnabled(true)
                    .build();

            StorageLensDataExport dataExport = StorageLensDataExport.builder()
                    .cloudWatchMetrics(cloudWatchMetrics)
                    .s3BucketDestination(s3BucketDestination)
                    .storageLensTableDestination(s3TablesDestination)
                    .build();

            StorageLensAwsOrg awsOrg = StorageLensAwsOrg.builder()
                    .arn(awsOrgARN)
                    .build();

            StorageLensExpandedPrefixesDataExport expandedPrefixesDataExport = StorageLensExpandedPrefixesDataExport.builder()
                    .s3BucketDestination(s3BucketDestination)
                    .storageLensTableDestination(s3TablesDestination)
                    .build();

            StorageLensConfiguration configuration = StorageLensConfiguration.builder()
                    .id(configurationId)
                    .accountLevel(accountLevel)
                    .include(include)
                    .dataExport(dataExport)
                    .awsOrg(awsOrg)
                    .expandedPrefixesDataExport(expandedPrefixesDataExport)
                    .prefixDelimiter("/")
                    .isEnabled(true)
                    .build();

            List<StorageLensTag> tags = Arrays.asList(
                    StorageLensTag.builder().key("key-1").value("value-1").build(),
                    StorageLensTag.builder().key("key-2").value("value-2").build()
            );

            S3ControlClient s3ControlClient = S3ControlClient.builder()
                    .region(Region.US_WEST_2)
                    .credentialsProvider(ProfileCredentialsProvider.create())
                    .build();

            s3ControlClient.putStorageLensConfiguration(PutStorageLensConfigurationRequest.builder()
                    .accountId(sourceAccountId)
                    .configId(configurationId)
                    .storageLensConfiguration(configuration)
                    .tags(tags)
                    .build()
            );

        } catch (AwsServiceException 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 그룹 또는 확장된 접두사에 액세스하려면 고급 티어를 사용하도록 대시보드를 업그레이드해야 합니다. 추가 요금이 발생합니다. 무료 및 고급 티어에 대한 자세한 정보는 [지표 선택](storage_lens_basics_metrics_recommendations.md#storage_lens_basics_metrics_selection) 섹션을 참조하세요. S3 스토리지 렌즈 사용에 대한 자세한 내용은 [S3 Storage Lens 그룹을 사용하여 지표 필터링 및 집계](storage-lens-groups-overview.md) 섹션을 참조하십시오.