

# Amazon S3 ストレージレンズダッシュボードを作成する
<a name="storage_lens_creating_dashboard"></a>

AWS Organizations の組織、またはアカウント内の特定の AWS リージョンやバケットにスコープを設定できる、追加の S3 ストレージレンズカスタムダッシュボードを作成できます。

**注記**  
ダッシュボード構成への更新が正確に表示または視覚化されるまでに最大 48 時間かかる場合があります。

## S3 コンソールの使用
<a name="storage_lens_console_creating"></a>

Amazon S3 コンソールで Amazon S3 Storage Lens ダッシュボードを作成するには、次の手順に従います。

**ステップ 1: 一般設定を構成する**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、切り替え先のリージョンを選択します。

1. ナビゲーションペインの、**[S3 ストレージレンズ]** で、**[ダッシュボード]** を選択します。

1. [**ダッシュボードの作成**] を選択します。

1. **ダッシュボード**ページの [**全般**] セクションで、次の操作を行います。

   1. ダッシュボードの **[ホームリージョン]** を表示します。ホームリージョンとは、この Storage Lens ダッシュボード設定とメトリクスが保存される AWS リージョン です。

   1. ダッシュボード名を入力します。

      ダッシュボード名は 65 文字未満で記述する必要があり、特殊文字またはスペースを含めることはできません。
**注記**  
ダッシュボードが作成された後は、このダッシュボード名を変更することはできません。

   1. **[有効]** を選択すると、ダッシュボードに更新された日次メトリクスが表示されます。

   1. (オプション) ダッシュボードに **[タグ]** を追加することもできます。タグは、ダッシュボードのアクセス許可を管理し、S3 Storage Lens のコストを追跡するために使用できます。詳細については、「*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 ストレージレンズでダッシュボードに含める、または除外するリージョンとバケットを選択します。

1. S3 Storage Lens で含める、または除外するバケットを、選択したリージョンの中で選択します。バケットを含めるか除外するかの設定は可能ですが、両方を同時に設定することはできません。このオプションは、組織レベルのダッシュボードを作成するときには使用できません。
**注記**  
リージョンとバケットを、含めるか除外するかの選択が可能です。組織内のメンバーアカウント間で組織レベルのダッシュボードを作成する場合には、このオプションはリージョンのみに対し使用できます。
含めるか除外するバケットは最大 50 個まで選択できます。

1. **[次へ]** を選択して変更を保存し、続行します。

**ステップ 3: ストレージレンズ階層を選択する**

1. **[ストレージレンズ階層]** セクションで、このダッシュボードに集約する機能の階層を選択します。

   1. バケットレベルで集計され、14 日間のクエリに使用できる無料のメトリクスを含めるには、**[無料階層]** を選択します。

   1. 高度なメトリクスを有効にするには、**[アドバンスト階層]** を選択します。これらのオプションには、プレフィックスまたはストレージレンズグループの集約、Amazon CloudWatch 発行、拡張プレフィックスレポート、コンテキストレコメンデーションが含まれます。データは 15 か月間クエリで使用できます。高度な高度なメトリクスとレコメンデーションには追加料金がかかります。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

      無料のメトリクスと高度なメトリクスの詳細については、「[メトリクスの選択](storage_lens_basics_metrics_recommendations.md#storage_lens_basics_metrics_selection)」を参照してください。

1. **[高度なメトリクスカテゴリ]** で、有効にするメトリクスのカテゴリを選択します。
   + **アクティビティのメトリクス**
   + **Detailed status code metrics] (詳細なステータスコードメトリクス**
   + **コスト最適化メトリクス**
   + **データ保護メトリクス**
   + **パフォーマンスメトリクス**

   各カテゴリに含まれるメトリクスをプレビューするには、メトリクスカテゴリのチェックボックスリストの下にあるドロップダウン矢印ボタンを使用します。メトリクスのカテゴリの詳細については、「[メトリクスのカテゴリ](storage_lens_basics_metrics_recommendations.md#storage_lens_basics_metrics_types)」を参照してください。メトリクスの一覧については、「[Amazon S3 Storage Lens のメトリクスに関する用語集](storage_lens_metrics_glossary.md)」を参照してください。

1. **[プレフィックス区切り記号]** を選択または指定して、各プレフィックス内のレベルを区別します。この値は、各プレフィックスのレベルを識別するために使用されます。Amazon S3 でのデフォルト値は、「`/`」文字ですが、実際のストレージ構造では他の区切り文字を使用することも可能です。

1. **[次へ]** を選択して変更を保存し、続行します。

**ステップ 4: (オプション) メトリクスの集約を選択する**

1. **[その他のメトリクスの集約]** で、集約するメトリクスを選択します。
   + プレフィックス集約
   + Storage Lens グループ集約

1. **[プレフィックス集約]** を有効にしている場合は、ダッシュボードの最小 **[プレフィックスのしきい値]** と **[プレフィックスの深さ]** を指定します。**[次へ]** を選択して保存し、続行します。
**注記**  
**[プレフィックスの深さ]** 設定は、S3 ストレージレンズがオブジェクトプレフィックスを分析する階層レベルの数を決定し、最大 10 レベルに制限されます。**[プレフィックスのしきい値]** は、プレフィックスがストレージレンズメトリクスに含まれる前に、プレフィックスが表す必要がある合計ストレージの最小パーセンテージを指定します。

1. **[ストレージレンズグループ集約]** を有効にしている場合は、次のいずれかを選択します。
   + **ストレージレンズグループを含める**
   + **ストレージレンズグループを除外**

1. ストレージレンズグループを集約に含める場合、**ホームリージョン内のすべてのストレージレンズグループを含める**か、含めるストレージレンズグループを指定できます。

1. **[次へ]** を選択して変更を保存し、続行します。

**ステップ 5: (オプション) メトリクスのエクスポートと公開の設定を選択する**

1. CloudWatch ダッシュボードのストレージレンズメトリクスにアクセスする場合は、**[メトリクスの公開]** で、**[CloudWatch の公開]** を選択します。
**注記**  
プレフィックスレベルのメトリクスは CloudWatch では使用できません。

1. **[メトリクスのエクスポート]** で、毎日エクスポートするストレージレンズダッシュボードデータを選択します。
   + **デフォルトのメトリクスレポート**
   + **拡張プレフィックスメトリクスレポート**

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. **[ストレージレンズ階層]** セクションで、設定を確認します。変更があれば **[編集]** をクリックします。

1. **[メトリクスの集約]** セクションで、設定を確認します。変更があれば **[編集]** をクリックします。

1. **[メトリクスのエクスポート]** セクションで、設定を確認します。変更があれば **[編集]** をクリックします。

1. すべてのダッシュボード設定を確認して確定したら、**[送信]** を選択してダッシュボードを作成します。

新しいストレージレンズダッシュボードが正常に作成されたら、ストレージレンズ **[ダッシュボード]** ページにリストされた新しいダッシュボードを表示できます。

## の使用AWS CLI
<a name="S3PutStorageLensConfigurationTagsCLI"></a>

**Example**  
次のコマンド例では、タグを使用して Amazon S3 ストレージレンズ設定を作成します。これらの例を使用するには、`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 ストレージレンズ設定を作成します。これらの例を使用するには、`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
```

## AWS SDK for Java の使用
<a name="S3CreateandUpdateStorageLensConfigurationJava"></a>

**Example – Amazon S3 ストレージレンズ 設定を作成および更新する**  
以下の例では、SDK for Java により、Amazon S3 ストレージレンズ設定を作成して更新します。  

```
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_basics_metrics_recommendations.md#storage_lens_basics_metrics_selection)」を参照してください。S3 Storage Lens グループの詳細については、「[S3 ストレージレンズグループを使用したメトリクスのフィルタリングと集計](storage-lens-groups-overview.md)」を参照してください。