Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions packages/@aws-cdk/aws-s3tables-alpha/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,20 @@ const encryptedBucketAuto = new TableBucket(scope, 'EncryptedTableBucketAuto', {
});
```

### Enabling CloudWatch Request Metrics

You can enable CloudWatch request metrics for your table bucket. Request metrics provide insight into Amazon S3 Tables requests, helping you monitor and optimize your table bucket usage.

For more information about S3 Tables CloudWatch metrics, see the [S3 Tables CloudWatch Metrics documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-cloudwatch-metrics.html).

```ts
// Enable CloudWatch request metrics for the table bucket
const tableBucketWithMetrics = new TableBucket(scope, 'TableBucketWithMetrics', {
tableBucketName: 'metrics-enabled-bucket',
requestMetricsStatus: RequestMetricsStatus.ENABLED,
});
```

### Controlling Table Permissions

```ts
Expand Down
26 changes: 26 additions & 0 deletions packages/@aws-cdk/aws-s3tables-alpha/lib/table-bucket.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,21 @@ export enum UnreferencedFileRemovalStatus {
DISABLED = 'Disabled',
}

/**
* Controls whether CloudWatch request metrics are enabled or disabled for the table bucket.
*/
export enum RequestMetricsStatus {
/**
* Enable CloudWatch request metrics for the table bucket.
*/
ENABLED = 'Enabled',

/**
* Disable CloudWatch request metrics for the table bucket.
*/
DISABLED = 'Disabled',
}

/**
* Controls Server Side Encryption (SSE) for this TableBucket.
*/
Expand Down Expand Up @@ -349,6 +364,16 @@ export interface TableBucketProps {
* @default RETAIN
*/
readonly removalPolicy?: RemovalPolicy;

/**
* CloudWatch request metrics configuration for the table bucket.
*
* When enabled, S3 Tables publishes CloudWatch request metrics for the table bucket.
* Request metrics provide insight into Amazon S3 Tables requests.
*
* @default - Request metrics are disabled
*/
readonly requestMetricsStatus?: RequestMetricsStatus;
}

/**
Expand Down Expand Up @@ -601,6 +626,7 @@ export class TableBucket extends TableBucketBase {
unreferencedDays: props.unreferencedFileRemoval?.unreferencedDays,
},
encryptionConfiguration: bucketEncryption,
metricsConfiguration: props.requestMetricsStatus ? { status: props.requestMetricsStatus } : undefined,
});

this.resource.applyRemovalPolicy(props.removalPolicy);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Construct } from 'constructs';
import { Stack } from 'aws-cdk-lib';
import { TableBucket, UnreferencedFileRemovalStatus, TableBucketEncryption, Namespace, Table, Status, OpenTableFormat, IcebergTransform, SortDirection, NullOrder } from '@aws-cdk/aws-s3tables-alpha';
import { TableBucket, UnreferencedFileRemovalStatus, TableBucketEncryption, RequestMetricsStatus, Namespace, Table, Status, OpenTableFormat, IcebergTransform, SortDirection, NullOrder } from '@aws-cdk/aws-s3tables-alpha';
import * as iam from 'aws-cdk-lib/aws-iam';
import * as kms from 'aws-cdk-lib/aws-kms';

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"Resources": {
"MetricsEnabledBucket01C9F646": {
"Type": "AWS::S3Tables::TableBucket",
"Properties": {
"MetricsConfiguration": {
"Status": "Enabled"
},
"TableBucketName": "metrics-enabled-test-bucket",
"UnreferencedFileRemoval": {}
},
"UpdateReplacePolicy": "Delete",
"DeletionPolicy": "Delete"
}
},
"Parameters": {
"BootstrapVersion": {
"Type": "AWS::SSM::Parameter::Value<String>",
"Default": "/cdk-bootstrap/hnb659fds/version",
"Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]"
}
},
"Rules": {
"CheckBootstrapVersion": {
"Assertions": [
{
"Assert": {
"Fn::Not": [
{
"Fn::Contains": [
[
"1",
"2",
"3",
"4",
"5"
],
{
"Ref": "BootstrapVersion"
}
]
}
]
},
"AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI."
}
]
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading