
software.amazon.awscdk.services.dynamodb.global.GlobalTable Maven / Gradle / Ivy
package software.amazon.awscdk.services.dynamodb.global;
/**
* (deprecated) This class works by deploying an AWS DynamoDB table into each region specified in GlobalTableProps.regions[], then triggering a CloudFormation Custom Resource Lambda to link them all together to create linked AWS Global DynamoDB tables.
*
* Example:
*
*
* import software.amazon.awscdk.services.dynamodb.AttributeType;
* import software.amazon.awscdk.services.dynamodb.global.GlobalTable;
* import software.amazon.awscdk.core.App;
* App app = new App();
* GlobalTable.Builder.create(app, "globdynamodb")
* .partitionKey(Attribute.builder().name("hashKey").type(AttributeType.STRING).build())
* .tableName("GlobalTable")
* .regions(List.of("us-east-1", "us-east-2", "us-west-2"))
* .build();
* app.synth();
*
*
* @deprecated use `@aws-cdk/aws-dynamodb.Table.replicationRegions` instead
*/
@javax.annotation.Generated(value = "jsii-pacmak/1.52.1 (build 5ccc8f6)", date = "2022-02-08T19:43:54.378Z")
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Deprecated)
@Deprecated
@software.amazon.jsii.Jsii(module = software.amazon.awscdk.services.dynamodb.global.$Module.class, fqn = "@aws-cdk/aws-dynamodb-global.GlobalTable")
public class GlobalTable extends software.amazon.awscdk.core.Construct {
protected GlobalTable(final software.amazon.jsii.JsiiObjectRef objRef) {
super(objRef);
}
protected GlobalTable(final software.amazon.jsii.JsiiObject.InitializationMode initializationMode) {
super(initializationMode);
}
/**
* @param scope This parameter is required.
* @param id This parameter is required.
* @param props This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Deprecated)
@Deprecated
public GlobalTable(final @org.jetbrains.annotations.NotNull software.amazon.awscdk.core.Construct scope, final @org.jetbrains.annotations.NotNull java.lang.String id, final @org.jetbrains.annotations.NotNull software.amazon.awscdk.services.dynamodb.global.GlobalTableProps props) {
super(software.amazon.jsii.JsiiObject.InitializationMode.JSII);
software.amazon.jsii.JsiiEngine.getInstance().createNewObject(this, new Object[] { java.util.Objects.requireNonNull(scope, "scope is required"), java.util.Objects.requireNonNull(id, "id is required"), java.util.Objects.requireNonNull(props, "props is required") });
}
/**
* (deprecated) Obtain tables deployed in other each region.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Deprecated)
@Deprecated
public @org.jetbrains.annotations.NotNull java.util.List getRegionalTables() {
return java.util.Collections.unmodifiableList(software.amazon.jsii.Kernel.get(this, "regionalTables", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.dynamodb.Table.class))));
}
/**
* (deprecated) A fluent builder for {@link software.amazon.awscdk.services.dynamodb.global.GlobalTable}.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Deprecated)
@Deprecated
public static final class Builder implements software.amazon.jsii.Builder {
/**
* @return a new instance of {@link Builder}.
* @param scope This parameter is required.
* @param id This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Deprecated)
@Deprecated
public static Builder create(final software.amazon.awscdk.core.Construct scope, final java.lang.String id) {
return new Builder(scope, id);
}
private final software.amazon.awscdk.core.Construct scope;
private final java.lang.String id;
private final software.amazon.awscdk.services.dynamodb.global.GlobalTableProps.Builder props;
private Builder(final software.amazon.awscdk.core.Construct scope, final java.lang.String id) {
this.scope = scope;
this.id = id;
this.props = new software.amazon.awscdk.services.dynamodb.global.GlobalTableProps.Builder();
}
/**
* Include runtime versioning information in this Stack.
*
* Default: `analyticsReporting` setting of containing `App`, or value of
* 'aws:cdk:version-reporting' context key
*
* @return {@code this}
* @param analyticsReporting Include runtime versioning information in this Stack. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder analyticsReporting(final java.lang.Boolean analyticsReporting) {
this.props.analyticsReporting(analyticsReporting);
return this;
}
/**
* A description of the stack.
*
* Default: - No description.
*
* @return {@code this}
* @param description A description of the stack. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder description(final java.lang.String description) {
this.props.description(description);
return this;
}
/**
* The AWS environment (account/region) where this stack will be deployed.
*
* Set the region
/account
fields of env
to either a concrete value to
* select the indicated environment (recommended for production stacks), or to
* the values of environment variables
* CDK_DEFAULT_REGION
/CDK_DEFAULT_ACCOUNT
to let the target environment
* depend on the AWS credentials/configuration that the CDK CLI is executed
* under (recommended for development stacks).
*
* If the Stack
is instantiated inside a Stage
, any undefined
* region
/account
fields from env
will default to the same field on the
* encompassing Stage
, if configured there.
*
* If either region
or account
are not set nor inherited from Stage
, the
* Stack will be considered "environment-agnostic"". Environment-agnostic
* stacks can be deployed to any environment but may not be able to take
* advantage of all features of the CDK. For example, they will not be able to
* use environmental context lookups such as ec2.Vpc.fromLookup
and will not
* automatically translate Service Principals to the right format based on the
* environment's AWS partition, and other such enhancements.
*
* Default: - The environment of the containing `Stage` if available,
* otherwise create the stack will be environment-agnostic.
*
* Example:
*
*
* // Use a concrete account and region to deploy this stack to:
* // `.account` and `.region` will simply return these values.
* // Use a concrete account and region to deploy this stack to:
* // `.account` and `.region` will simply return these values.
* Stack.Builder.create(app, "Stack1")
* .env(Environment.builder()
* .account("123456789012")
* .region("us-east-1")
* .build())
* .build();
* // Use the CLI's current credentials to determine the target environment:
* // `.account` and `.region` will reflect the account+region the CLI
* // is configured to use (based on the user CLI credentials)
* // Use the CLI's current credentials to determine the target environment:
* // `.account` and `.region` will reflect the account+region the CLI
* // is configured to use (based on the user CLI credentials)
* Stack.Builder.create(app, "Stack2")
* .env(Environment.builder()
* .account(process.getEnv().getCDK_DEFAULT_ACCOUNT())
* .region(process.getEnv().getCDK_DEFAULT_REGION())
* .build())
* .build();
* // Define multiple stacks stage associated with an environment
* Stage myStage = Stage.Builder.create(app, "MyStage")
* .env(Environment.builder()
* .account("123456789012")
* .region("us-east-1")
* .build())
* .build();
* // both of these stacks will use the stage's account/region:
* // `.account` and `.region` will resolve to the concrete values as above
* // both of these stacks will use the stage's account/region:
* // `.account` and `.region` will resolve to the concrete values as above
* new MyStack(myStage, "Stack1");
* new YourStack(myStage, "Stack2");
* // Define an environment-agnostic stack:
* // `.account` and `.region` will resolve to `{ "Ref": "AWS::AccountId" }` and `{ "Ref": "AWS::Region" }` respectively.
* // which will only resolve to actual values by CloudFormation during deployment.
* // Define an environment-agnostic stack:
* // `.account` and `.region` will resolve to `{ "Ref": "AWS::AccountId" }` and `{ "Ref": "AWS::Region" }` respectively.
* // which will only resolve to actual values by CloudFormation during deployment.
* new MyStack(app, "Stack1");
*
*
* @return {@code this}
* @param env The AWS environment (account/region) where this stack will be deployed. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder env(final software.amazon.awscdk.core.Environment env) {
this.props.env(env);
return this;
}
/**
* Name to deploy the stack with.
*
* Default: - Derived from construct path.
*
* @return {@code this}
* @param stackName Name to deploy the stack with. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder stackName(final java.lang.String stackName) {
this.props.stackName(stackName);
return this;
}
/**
* Synthesis method to use while deploying this stack.
*
* Default: - `DefaultStackSynthesizer` if the `@aws-cdk/core:newStyleStackSynthesis` feature flag
* is set, `LegacyStackSynthesizer` otherwise.
*
* @return {@code this}
* @param synthesizer Synthesis method to use while deploying this stack. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder synthesizer(final software.amazon.awscdk.core.IStackSynthesizer synthesizer) {
this.props.synthesizer(synthesizer);
return this;
}
/**
* Stack tags that will be applied to all the taggable resources and the stack itself.
*
* Default: {}
*
* @return {@code this}
* @param tags Stack tags that will be applied to all the taggable resources and the stack itself. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder tags(final java.util.Map tags) {
this.props.tags(tags);
return this;
}
/**
* Whether to enable termination protection for this stack.
*
* Default: false
*
* @return {@code this}
* @param terminationProtection Whether to enable termination protection for this stack. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder terminationProtection(final java.lang.Boolean terminationProtection) {
this.props.terminationProtection(terminationProtection);
return this;
}
/**
* Partition key attribute definition.
*
* @return {@code this}
* @param partitionKey Partition key attribute definition. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder partitionKey(final software.amazon.awscdk.services.dynamodb.Attribute partitionKey) {
this.props.partitionKey(partitionKey);
return this;
}
/**
* Sort key attribute definition.
*
* Default: no sort key
*
* @return {@code this}
* @param sortKey Sort key attribute definition. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder sortKey(final software.amazon.awscdk.services.dynamodb.Attribute sortKey) {
this.props.sortKey(sortKey);
return this;
}
/**
* Specify how you are charged for read and write throughput and how you manage capacity.
*
* Default: PROVISIONED if `replicationRegions` is not specified, PAY_PER_REQUEST otherwise
*
* @return {@code this}
* @param billingMode Specify how you are charged for read and write throughput and how you manage capacity. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder billingMode(final software.amazon.awscdk.services.dynamodb.BillingMode billingMode) {
this.props.billingMode(billingMode);
return this;
}
/**
* Whether CloudWatch contributor insights is enabled.
*
* Default: false
*
* @return {@code this}
* @param contributorInsightsEnabled Whether CloudWatch contributor insights is enabled. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder contributorInsightsEnabled(final java.lang.Boolean contributorInsightsEnabled) {
this.props.contributorInsightsEnabled(contributorInsightsEnabled);
return this;
}
/**
* Whether server-side encryption with an AWS managed customer master key is enabled.
*
* This property cannot be set if serverSideEncryption
is set.
*
*
*
* NOTE: if you set this to CUSTOMER_MANAGED
and encryptionKey
is not
* specified, the key that the Tablet generates for you will be created with
* default permissions. If you are using CDKv2, these permissions will be
* sufficient to enable the key for use with DynamoDB tables. If you are
* using CDKv1, make sure the feature flag
* @aws-cdk/aws-kms:defaultKeyPolicies
is set to true
in your cdk.json
.
*
*
*
* Default: - server-side encryption is enabled with an AWS owned customer master key
*
* @return {@code this}
* @param encryption Whether server-side encryption with an AWS managed customer master key is enabled. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder encryption(final software.amazon.awscdk.services.dynamodb.TableEncryption encryption) {
this.props.encryption(encryption);
return this;
}
/**
* External KMS key to use for table encryption.
*
* This property can only be set if encryption
is set to TableEncryption.CUSTOMER_MANAGED
.
*
* Default: - If `encryption` is set to `TableEncryption.CUSTOMER_MANAGED` and this
* property is undefined, a new KMS key will be created and associated with this table.
*
* @return {@code this}
* @param encryptionKey External KMS key to use for table encryption. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder encryptionKey(final software.amazon.awscdk.services.kms.IKey encryptionKey) {
this.props.encryptionKey(encryptionKey);
return this;
}
/**
* Whether point-in-time recovery is enabled.
*
* Default: - point-in-time recovery is disabled
*
* @return {@code this}
* @param pointInTimeRecovery Whether point-in-time recovery is enabled. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder pointInTimeRecovery(final java.lang.Boolean pointInTimeRecovery) {
this.props.pointInTimeRecovery(pointInTimeRecovery);
return this;
}
/**
* The read capacity for the table.
*
* Careful if you add Global Secondary Indexes, as
* those will share the table's provisioned throughput.
*
* Can only be provided if billingMode is Provisioned.
*
* Default: 5
*
* @return {@code this}
* @param readCapacity The read capacity for the table. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder readCapacity(final java.lang.Number readCapacity) {
this.props.readCapacity(readCapacity);
return this;
}
/**
* The removal policy to apply to the DynamoDB Table.
*
* Default: RemovalPolicy.RETAIN
*
* @return {@code this}
* @param removalPolicy The removal policy to apply to the DynamoDB Table. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder removalPolicy(final software.amazon.awscdk.core.RemovalPolicy removalPolicy) {
this.props.removalPolicy(removalPolicy);
return this;
}
/**
* Regions where replica tables will be created.
*
* Default: - no replica tables are created
*
* @return {@code this}
* @param replicationRegions Regions where replica tables will be created. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder replicationRegions(final java.util.List replicationRegions) {
this.props.replicationRegions(replicationRegions);
return this;
}
/**
* The timeout for a table replication operation in a single region.
*
* Default: Duration.minutes(30)
*
* @return {@code this}
* @param replicationTimeout The timeout for a table replication operation in a single region. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder replicationTimeout(final software.amazon.awscdk.core.Duration replicationTimeout) {
this.props.replicationTimeout(replicationTimeout);
return this;
}
/**
* (deprecated) Whether server-side encryption with an AWS managed customer master key is enabled.
*
* This property cannot be set if encryption
and/or encryptionKey
is set.
*
* Default: - server-side encryption is enabled with an AWS owned customer master key
*
* @return {@code this}
* @deprecated This property is deprecated. In order to obtain the same behavior as
* enabling this, set the `encryption` property to `TableEncryption.AWS_MANAGED` instead.
* @param serverSideEncryption Whether server-side encryption with an AWS managed customer master key is enabled. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Deprecated)
@Deprecated
public Builder serverSideEncryption(final java.lang.Boolean serverSideEncryption) {
this.props.serverSideEncryption(serverSideEncryption);
return this;
}
/**
* When an item in the table is modified, StreamViewType determines what information is written to the stream for this table.
*
* Default: - streams are disabled unless `replicationRegions` is specified
*
* @return {@code this}
* @param stream When an item in the table is modified, StreamViewType determines what information is written to the stream for this table. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder stream(final software.amazon.awscdk.services.dynamodb.StreamViewType stream) {
this.props.stream(stream);
return this;
}
/**
* Specify the table class.
*
* Default: STANDARD
*
* @return {@code this}
* @param tableClass Specify the table class. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder tableClass(final software.amazon.awscdk.services.dynamodb.TableClass tableClass) {
this.props.tableClass(tableClass);
return this;
}
/**
* The name of TTL attribute.
*
* Default: - TTL is disabled
*
* @return {@code this}
* @param timeToLiveAttribute The name of TTL attribute. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder timeToLiveAttribute(final java.lang.String timeToLiveAttribute) {
this.props.timeToLiveAttribute(timeToLiveAttribute);
return this;
}
/**
* Indicates whether CloudFormation stack waits for replication to finish.
*
* If set to false, the CloudFormation resource will mark the resource as
* created and replication will be completed asynchronously. This property is
* ignored if replicationRegions property is not set.
*
* DO NOT UNSET this property if adding/removing multiple replicationRegions
* in one deployment, as CloudFormation only supports one region replication
* at a time. CDK overcomes this limitation by waiting for replication to
* finish before starting new replicationRegion.
*
* Default: true
*
* @return {@code this}
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-globaltable.html#cfn-dynamodb-globaltable-replicas
* @param waitForReplicationToFinish Indicates whether CloudFormation stack waits for replication to finish. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder waitForReplicationToFinish(final java.lang.Boolean waitForReplicationToFinish) {
this.props.waitForReplicationToFinish(waitForReplicationToFinish);
return this;
}
/**
* The write capacity for the table.
*
* Careful if you add Global Secondary Indexes, as
* those will share the table's provisioned throughput.
*
* Can only be provided if billingMode is Provisioned.
*
* Default: 5
*
* @return {@code this}
* @param writeCapacity The write capacity for the table. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder writeCapacity(final java.lang.Number writeCapacity) {
this.props.writeCapacity(writeCapacity);
return this;
}
/**
* (deprecated) Array of environments to create DynamoDB tables in.
*
* The tables will all be created in the same account.
*
* @return {@code this}
* @param regions Array of environments to create DynamoDB tables in. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Deprecated)
@Deprecated
public Builder regions(final java.util.List regions) {
this.props.regions(regions);
return this;
}
/**
* (deprecated) Name of the DynamoDB table to use across all regional tables.
*
* This is required for global tables.
*
* @return {@code this}
* @param tableName Name of the DynamoDB table to use across all regional tables. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Deprecated)
@Deprecated
public Builder tableName(final java.lang.String tableName) {
this.props.tableName(tableName);
return this;
}
/**
* @returns a newly built instance of {@link software.amazon.awscdk.services.dynamodb.global.GlobalTable}.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Deprecated)
@Deprecated
@Override
public software.amazon.awscdk.services.dynamodb.global.GlobalTable build() {
return new software.amazon.awscdk.services.dynamodb.global.GlobalTable(
this.scope,
this.id,
this.props.build()
);
}
}
}