All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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





© 2015 - 2025 Weber Informatics LLC | Privacy Policy