@aws-cdk/aws-elasticache-alpha 2.232.1-alpha.0 → 2.233.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +17 -17
- package/.jsii.tabl.json.gz +0 -0
- package/README.md +2 -0
- package/lib/iam-user.js +1 -1
- package/lib/no-password-user.js +8 -4
- package/lib/password-user.js +1 -1
- package/lib/serverless-cache-base.js +1 -1
- package/lib/serverless-cache.js +1 -1
- package/lib/user-base.d.ts +1 -1
- package/lib/user-base.js +3 -3
- package/lib/user-group.js +2 -2
- package/package.json +6 -6
package/.jsii
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"url": "https://aws.amazon.com"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"aws-cdk-lib": "^2.
|
|
11
|
+
"aws-cdk-lib": "^2.233.0",
|
|
12
12
|
"constructs": "^10.0.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencyClosure": {
|
|
@@ -8441,7 +8441,7 @@
|
|
|
8441
8441
|
"stability": "experimental"
|
|
8442
8442
|
},
|
|
8443
8443
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
8444
|
-
"jsiiVersion": "5.9.
|
|
8444
|
+
"jsiiVersion": "5.9.18 (build 9d58cab)",
|
|
8445
8445
|
"keywords": [
|
|
8446
8446
|
"aws",
|
|
8447
8447
|
"cdk",
|
|
@@ -8463,7 +8463,7 @@
|
|
|
8463
8463
|
},
|
|
8464
8464
|
"name": "@aws-cdk/aws-elasticache-alpha",
|
|
8465
8465
|
"readme": {
|
|
8466
|
-
"markdown": "# ElastiCache CDK Construct Library\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n<!--END STABILITY BANNER-->\n\nThis module has constructs for [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/WhatIs.html).\n\n* The `ServerlessCache` construct facilitates the creation and management of serverless cache.\n* The `User` and `UserGroup` constructs facilitate the creation and management of users for the cache.\n\n## Serverless Cache\n\nAmazon ElastiCache Serverless is a serverless option that automatically scales cache capacity based on application traffic patterns. You can create a serverless cache using the `ServerlessCache` construct:\n\n```ts\nconst vpc = new ec2.Vpc(this, 'VPC');\n\nconst cache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n vpc,\n});\n```\n\n### Connecting to serverless cache\n\nTo control who can access the serverless cache by the security groups, use the `.connections` attribute.\n\nThe serverless cache has a default port `6379`.\n\nThis example allows an EC2 instance to connect to the serverless cache:\n\n```ts\ndeclare const serverlessCache: elasticache.ServerlessCache;\ndeclare const instance: ec2.Instance;\n\n// allow the EC2 instance to connect to serverless cache on default port 6379\nserverlessCache.connections.allowDefaultPortFrom(instance);\n```\n\n### Cache usage limits\n\nYou can configure usage limits on both cache data storage and ECPU/second for your cache to control costs and ensure predictable performance.\n\n**Configuration options:**\n\n* **Maximum limits**: Ensure your cache usage never exceeds the configured maximum\n* **Minimum limits**: Reserve a baseline level of resources for consistent performance\n* **Both**: Define a range where your cache usage will operate\n\nFor more infomation, see [Setting scaling limits to manage costs](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Scaling.html#Pre-Scaling).\n\n```ts\ndeclare const vpc: ec2.Vpc;\n\nconst serverlessCache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n engine: elasticache.CacheEngine.VALKEY_LATEST,\n vpc,\n cacheUsageLimits: {\n // cache data storage limits (GB)\n dataStorageMinimumSize: Size.gibibytes(2), // minimum: 1GB\n dataStorageMaximumSize: Size.gibibytes(3), // maximum: 5000GB\n // rate limits (ECPU/second)\n requestRateLimitMinimum: 1000, // minimum: 1000\n requestRateLimitMaximum: 10000, // maximum: 15000000\n },\n});\n```\n\n### Backups and restore\n\nYou can enable automatic backups for serverless cache.\nWhen automatic backups are enabled, ElastiCache creates a backup of the cache on a daily basis.\n\nAlso you can set the backup window for any time when it's most convenient.\nIf you don't specify a backup window, ElastiCache assigns one automatically.\n\nFor more information, see [Scheduling automatic backups](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/backups-automatic.html).\n\nTo enable automatic backups, set the `backupRetentionLimit` property. You can also specify the snapshot creation time by setting `backupTime` property:\n\n```ts\ndeclare const vpc: ec2.Vpc;\n\nconst serverlessCache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n backup: {\n // enable automatic backups and set the retention period to 6 days\n backupRetentionLimit: 6,\n // set the backup window to 9:00 AM UTC\n backupTime: events.Schedule.cron({\n hour: '9',\n minute: '0',\n }),\n },\n vpc,\n});\n```\n\nYou can create a final backup by setting `backupNameBeforeDeletion` property.\n\n```ts\ndeclare const vpc: ec2.Vpc;\n\nconst serverlessCache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n engine: elasticache.CacheEngine.VALKEY_LATEST,\n backup: {\n // set a backup name before deleting a cache\n backupNameBeforeDeletion: \"my-final-backup-name\",\n },\n vpc,\n});\n```\n\nYou can restore from backups by setting snapshot ARNs to `backupArnsToRestore` property:\n\n```ts\ndeclare const vpc: ec2.Vpc;\n\nconst serverlessCache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n engine: elasticache.CacheEngine.VALKEY_LATEST,\n backup: {\n // set the backup(s) to restore\n backupArnsToRestore: ['arn:aws:elasticache:us-east-1:123456789012:serverlesscachesnapshot:my-final-backup-name'],\n },\n vpc,\n});\n```\n\n### Encryption at rest\n\nAt-rest encryption is always enabled for Serverless Cache. There are two encryption options:\n\n* **Default**: When no `kmsKey` is specified (left as `undefined`), AWS owned KMS keys are used automatically\n* **Customer Managed Key**: Create a KMS key first, then pass it to the cache via the `kmsKey` property\n\n### Customer Managed Key for encryption at rest\n\nElastiCache supports symmetric Customer Managed key (CMK) for encryption at rest.\n\nFor more information, see [Using customer managed keys from AWS KMS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/at-rest-encryption.html#using-customer-managed-keys-for-elasticache-security).\n\nTo use CMK, set your CMK to the `kmsKey` property:\n\n```ts\nimport { Key } from 'aws-cdk-lib/aws-kms';\n\ndeclare const kmsKey: Key;\ndeclare const vpc: ec2.Vpc;\n\nconst serverlessCache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n engine: elasticache.CacheEngine.VALKEY_LATEST,\n serverlessCacheName: 'my-serverless-cache',\n vpc,\n // set Customer Managed Key\n kmsKey,\n});\n```\n\n### Metrics and monitoring\n\nYou can monitor your serverless cache using CloudWatch Metrics via the `metric` method.\n\nFor more information about serverless cache metrics, see [Serverless metrics and events for Valkey and Redis OSS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/serverless-metrics-events-redis.html) and [Serverless metrics and events for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/serverless-metrics-events.memcached.html).\n\n```ts\ndeclare const serverlessCache: elasticache.ServerlessCache;\n\n// The 5 minutes average of the total number of successful read-only key lookups in the cache.\nconst cacheHits = serverlessCache.metricCacheHitCount();\n\n// The 5 minutes average of the total number of bytes used by the data stored in the cache.\nconst bytesUsedForCache = serverlessCache.metricDataStored();\n\n// The 5 minutes average of the total number of ElastiCacheProcessingUnits (ECPUs) consumed by the requests executed on the cache.\nconst elastiCacheProcessingUnits = serverlessCache.metricProcessingUnitsConsumed();\n\n// Create an alarm for ECPUs.\nelastiCacheProcessingUnits.createAlarm(this, 'ElastiCacheProcessingUnitsAlarm', {\n threshold: 50,\n evaluationPeriods: 1,\n});\n```\n\n### Import an existing serverless cache\n\nTo import an existing ServerlessCache, use the `ServerlessCache.fromServerlessCacheAttributes` method:\n\n```ts\ndeclare const securityGroup: ec2.SecurityGroup;\n\nconst importedServerlessCache = elasticache.ServerlessCache.fromServerlessCacheAttributes(this, 'ImportedServerlessCache', {\n serverlessCacheName: 'my-serverless-cache',\n securityGroups: [securityGroup],\n});\n```\n\n## User and User Group\n\nSetup required properties and create:\n\n```ts\nconst newDefaultUser = new elasticache.NoPasswordUser(this, 'NoPasswordUser', {\n userId: 'default',\n accessControl: elasticache.AccessControl.fromAccessString(\"on ~* +@all\"),\n})\n\nconst userGroup = new elasticache.UserGroup(this, 'UserGroup', {\n users: [newDefaultUser],\n});\n```\n\n### RBAC\n\nIn Valkey 7.2 and onward and Redis OSS 6.0 onward you can use a feature called Role-Based Access Control (RBAC). RBAC is also the only way to control access to serverless caches.\n\nRBAC enables you to control cache access through user groups. These user groups are designed as a way to organize access to caches.\n\nFor more information, see [Role-Based Access Control (RBAC)](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Clusters.RBAC.html).\n\nTo enable RBAC for ElastiCache with Valkey or Redis OSS, you take the following steps:\n\n* Create users.\n* Create a user group and add users to the user group.\n* Assign the user group to a cache.\n\n### Create users\n\nFirst, you need to create users by using `IamUser`, `PasswordUser` or `NoPasswordUser` construct.\n\nWith RBAC, you create users and assign them specific permissions by using `accessString` property.\n\nFor more information, see [Specifying Permissions Using an Access String](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Clusters.RBAC.html#Access-string).\n\nYou can create an IAM-enabled user by using `IamUser` construct:\n\n```ts\nconst user = new elasticache.IamUser(this, 'User', {\n // set user engine\n engine: elasticache.UserEngine.REDIS,\n\n // set user id\n userId: 'my-user',\n\n // set username\n userName: 'my-user',\n\n // set access string\n accessControl: elasticache.AccessControl.fromAccessString(\"on ~* +@all\"),\n});\n```\n\n> NOTE: IAM-enabled users must have matching user id and username. For more information, see [Limitations](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/auth-iam.html). The construct can set automatically the username to be the same as the user id.\n\nIf you want to create a password authenticated user, use `PasswordUser` construct:\n\n```ts\nconst user = new elasticache.PasswordUser(this, 'User', {\n // set user engine\n engine: elasticache.UserEngine.VALKEY,\n\n // set user id\n userId: 'my-user-id',\n\n // set access string\n accessControl: elasticache.AccessControl.fromAccessString(\"on ~* +@all\"),\n\n // set username\n userName: 'my-user-name',\n\n // set up to two passwords\n passwords: [\n // \"SecretIdForPassword\" is the secret id for the password\n SecretValue.secretsManager('SecretIdForPassword'),\n // \"AnotherSecretIdForPassword\" is the secret id for the password\n SecretValue.secretsManager('AnotherSecretIdForPassword'),\n ],\n});\n```\n\nYou can also create a no password required user by using `NoPasswordUser` construct:\n\n```ts\nconst user = new elasticache.NoPasswordUser(this, 'User', {\n // set user engine\n engine: elasticache.UserEngine.REDIS,\n\n // set user id\n userId: 'my-user-id',\n\n // set access string\n accessControl: elasticache.AccessControl.fromAccessString(\"on ~* +@all\"),\n\n // set username\n userName: 'my-user-name',\n});\n```\n\n### Default user\n\nElastiCache automatically creates a default user with both a user ID and username set to `default`. This default user cannot be modified or deleted. The user is created as a no password authentication user.\n\nThis user is intended for compatibility with the default behavior of previous Redis OSS versions and has an access string that permits it to call all commands and access all keys.\n\nTo use this automatically created default user in CDK, you can import it using `NoPasswordUser.fromUserAttributes` method. For more information on import methods, see the [Import an existing user and user group](#import-an-existing-user-and-user-group) section.\n\nTo add proper access control to a cache, replace the default user with a new one that is either disabled by setting the `accessString` to `off -@all` or secured with a strong password.\n\nTo change the default user, create a new default user with the username set to `default`. You can then swap it with the original default user.\n\nFor more information, see [Applying RBAC to a Cache for ElastiCache with Valkey or Redis OSS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Clusters.RBAC.html#rbac-using).\n\nIf you want to create a new default user, `userName` must be `default` and `userId` must not be `default` by using `NoPasswordUser` or `PasswordUser`:\n\n```ts\n// use the original `default` user by using import method\nconst defaultUser = elasticache.NoPasswordUser.fromUserAttributes(this, 'DefaultUser', {\n // userId and userName must be 'default'\n userId: 'default',\n});\n\n// create a new default user\nconst newDefaultUser = new elasticache.NoPasswordUser(this, 'NewDefaultUser', {\n // new default user id must not be 'default'\n userId: 'new-default',\n // new default username must be 'default'\n userName: 'default',\n // set access string\n accessControl: elasticache.AccessControl.fromAccessString(\"on ~* +@all\"),\n});\n```\n\n> NOTE: You can't create a new default user using `IamUser` because an IAM-enabled user's username and user ID cannot be different.\n\n### Add users to the user group\n\nNext, use the `UserGroup` construct to create a user group and add users to it.\nEnsure that you include either the original default user or a new default user:\n\n```ts\ndeclare const newDefaultUser: elasticache.IUser;\ndeclare const user: elasticache.IUser;\ndeclare const anotherUser: elasticache.IUser;\n\nconst userGroup = new elasticache.UserGroup(this, 'UserGroup', {\n // add users including default user\n users: [newDefaultUser, user],\n});\n\n// you can also add a user by using addUser method\nuserGroup.addUser(anotherUser);\n```\n\n### Assign user group\n\nFinally, assign a user group to cache:\n\n```ts\ndeclare const vpc: ec2.Vpc;\ndeclare const userGroup: elasticache.UserGroup;\n\nconst serverlessCache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n engine: elasticache.CacheEngine.VALKEY_LATEST,\n serverlessCacheName: 'my-serverless-cache',\n vpc,\n // assign User Group\n userGroup,\n});\n\n```\n\n### Grant permissions to IAM-enabled users\n\nIf you create IAM-enabled users, `\"elasticache:Connect\"` action must be allowed for the users and cache.\n\n> NOTE: You don't need grant permissions to no password required users or password authentication users.\n\nFor more information, see [Authenticating with IAM](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/auth-iam.html).\n\nTo grant permissions, you can use the `grantConnect` method in `IamUser` and `ServerlessCache` constructs:\n\n```ts\ndeclare const user: elasticache.IamUser;\ndeclare const serverlessCache: elasticache.ServerlessCache;\ndeclare const role: iam.Role;\n\n// grant \"elasticache:Connect\" action permissions to role\nuser.grantConnect(role);\nserverlessCache.grantConnect(role);\n```\n\n### Import an existing user and user group\n\nYou can import an existing user and user group by using import methods:\n\n```ts\nconst stack = new Stack();\n\nconst importedIamUser = elasticache.IamUser.fromUserId(this, 'ImportedIamUser', 'my-iam-user-id');\n\nconst importedPasswordUser = elasticache.PasswordUser.fromUserAttributes(stack, 'ImportedPasswordUser', {\n userId: 'my-password-user-id',\n});\n\nconst importedNoPasswordUser = elasticache.NoPasswordUser.fromUserAttributes(stack, 'ImportedNoPasswordUser', {\n userId: 'my-no-password-user-id',\n});\n\nconst importedUserGroup = elasticache.UserGroup.fromUserGroupAttributes(this, 'ImportedUserGroup', {\n userGroupName: 'my-user-group-name'\n});\n```\n"
|
|
8466
|
+
"markdown": "# ElastiCache CDK Construct Library\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n<!--END STABILITY BANNER-->\n\nThis module has constructs for [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/WhatIs.html).\n\n* The `ServerlessCache` construct facilitates the creation and management of serverless cache.\n* The `User` and `UserGroup` constructs facilitate the creation and management of users for the cache.\n\n## Serverless Cache\n\nAmazon ElastiCache Serverless is a serverless option that automatically scales cache capacity based on application traffic patterns. You can create a serverless cache using the `ServerlessCache` construct:\n\n```ts\nconst vpc = new ec2.Vpc(this, 'VPC');\n\nconst cache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n vpc,\n});\n```\n\n### Connecting to serverless cache\n\nTo control who can access the serverless cache by the security groups, use the `.connections` attribute.\n\nThe serverless cache has a default port `6379`.\n\nThis example allows an EC2 instance to connect to the serverless cache:\n\n```ts\ndeclare const serverlessCache: elasticache.ServerlessCache;\ndeclare const instance: ec2.Instance;\n\n// allow the EC2 instance to connect to serverless cache on default port 6379\nserverlessCache.connections.allowDefaultPortFrom(instance);\n```\n\n### Cache usage limits\n\nYou can configure usage limits on both cache data storage and ECPU/second for your cache to control costs and ensure predictable performance.\n\n**Configuration options:**\n\n* **Maximum limits**: Ensure your cache usage never exceeds the configured maximum\n* **Minimum limits**: Reserve a baseline level of resources for consistent performance\n* **Both**: Define a range where your cache usage will operate\n\nFor more infomation, see [Setting scaling limits to manage costs](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Scaling.html#Pre-Scaling).\n\n```ts\ndeclare const vpc: ec2.Vpc;\n\nconst serverlessCache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n engine: elasticache.CacheEngine.VALKEY_LATEST,\n vpc,\n cacheUsageLimits: {\n // cache data storage limits (GB)\n dataStorageMinimumSize: Size.gibibytes(2), // minimum: 1GB\n dataStorageMaximumSize: Size.gibibytes(3), // maximum: 5000GB\n // rate limits (ECPU/second)\n requestRateLimitMinimum: 1000, // minimum: 1000\n requestRateLimitMaximum: 10000, // maximum: 15000000\n },\n});\n```\n\n### Backups and restore\n\nYou can enable automatic backups for serverless cache.\nWhen automatic backups are enabled, ElastiCache creates a backup of the cache on a daily basis.\n\nAlso you can set the backup window for any time when it's most convenient.\nIf you don't specify a backup window, ElastiCache assigns one automatically.\n\nFor more information, see [Scheduling automatic backups](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/backups-automatic.html).\n\nTo enable automatic backups, set the `backupRetentionLimit` property. You can also specify the snapshot creation time by setting `backupTime` property:\n\n```ts\ndeclare const vpc: ec2.Vpc;\n\nconst serverlessCache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n backup: {\n // enable automatic backups and set the retention period to 6 days\n backupRetentionLimit: 6,\n // set the backup window to 9:00 AM UTC\n backupTime: events.Schedule.cron({\n hour: '9',\n minute: '0',\n }),\n },\n vpc,\n});\n```\n\nYou can create a final backup by setting `backupNameBeforeDeletion` property.\n\n```ts\ndeclare const vpc: ec2.Vpc;\n\nconst serverlessCache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n engine: elasticache.CacheEngine.VALKEY_LATEST,\n backup: {\n // set a backup name before deleting a cache\n backupNameBeforeDeletion: \"my-final-backup-name\",\n },\n vpc,\n});\n```\n\nYou can restore from backups by setting snapshot ARNs to `backupArnsToRestore` property:\n\n```ts\ndeclare const vpc: ec2.Vpc;\n\nconst serverlessCache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n engine: elasticache.CacheEngine.VALKEY_LATEST,\n backup: {\n // set the backup(s) to restore\n backupArnsToRestore: ['arn:aws:elasticache:us-east-1:123456789012:serverlesscachesnapshot:my-final-backup-name'],\n },\n vpc,\n});\n```\n\n### Encryption at rest\n\nAt-rest encryption is always enabled for Serverless Cache. There are two encryption options:\n\n* **Default**: When no `kmsKey` is specified (left as `undefined`), AWS owned KMS keys are used automatically\n* **Customer Managed Key**: Create a KMS key first, then pass it to the cache via the `kmsKey` property\n\n### Customer Managed Key for encryption at rest\n\nElastiCache supports symmetric Customer Managed key (CMK) for encryption at rest.\n\nFor more information, see [Using customer managed keys from AWS KMS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/at-rest-encryption.html#using-customer-managed-keys-for-elasticache-security).\n\nTo use CMK, set your CMK to the `kmsKey` property:\n\n```ts\nimport { Key } from 'aws-cdk-lib/aws-kms';\n\ndeclare const kmsKey: Key;\ndeclare const vpc: ec2.Vpc;\n\nconst serverlessCache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n engine: elasticache.CacheEngine.VALKEY_LATEST,\n serverlessCacheName: 'my-serverless-cache',\n vpc,\n // set Customer Managed Key\n kmsKey,\n});\n```\n\n### Metrics and monitoring\n\nYou can monitor your serverless cache using CloudWatch Metrics via the `metric` method.\n\nFor more information about serverless cache metrics, see [Serverless metrics and events for Valkey and Redis OSS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/serverless-metrics-events-redis.html) and [Serverless metrics and events for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/serverless-metrics-events.memcached.html).\n\n```ts\ndeclare const serverlessCache: elasticache.ServerlessCache;\n\n// The 5 minutes average of the total number of successful read-only key lookups in the cache.\nconst cacheHits = serverlessCache.metricCacheHitCount();\n\n// The 5 minutes average of the total number of bytes used by the data stored in the cache.\nconst bytesUsedForCache = serverlessCache.metricDataStored();\n\n// The 5 minutes average of the total number of ElastiCacheProcessingUnits (ECPUs) consumed by the requests executed on the cache.\nconst elastiCacheProcessingUnits = serverlessCache.metricProcessingUnitsConsumed();\n\n// Create an alarm for ECPUs.\nelastiCacheProcessingUnits.createAlarm(this, 'ElastiCacheProcessingUnitsAlarm', {\n threshold: 50,\n evaluationPeriods: 1,\n});\n```\n\n### Import an existing serverless cache\n\nTo import an existing ServerlessCache, use the `ServerlessCache.fromServerlessCacheAttributes` method:\n\n```ts\ndeclare const securityGroup: ec2.SecurityGroup;\n\nconst importedServerlessCache = elasticache.ServerlessCache.fromServerlessCacheAttributes(this, 'ImportedServerlessCache', {\n serverlessCacheName: 'my-serverless-cache',\n securityGroups: [securityGroup],\n});\n```\n\n## User and User Group\n\nSetup required properties and create:\n\n```ts\nconst newDefaultUser = new elasticache.NoPasswordUser(this, 'NoPasswordUser', {\n userId: 'default',\n accessControl: elasticache.AccessControl.fromAccessString(\"on ~* +@all\"),\n})\n\nconst userGroup = new elasticache.UserGroup(this, 'UserGroup', {\n users: [newDefaultUser],\n});\n```\n\n### RBAC\n\nIn Valkey 7.2 and onward and Redis OSS 6.0 onward you can use a feature called Role-Based Access Control (RBAC). RBAC is also the only way to control access to serverless caches.\n\nRBAC enables you to control cache access through user groups. These user groups are designed as a way to organize access to caches.\n\nFor more information, see [Role-Based Access Control (RBAC)](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Clusters.RBAC.html).\n\nTo enable RBAC for ElastiCache with Valkey or Redis OSS, you take the following steps:\n\n* Create users.\n* Create a user group and add users to the user group.\n* Assign the user group to a cache.\n\n### Create users\n\nFirst, you need to create users by using `IamUser`, `PasswordUser` or `NoPasswordUser` construct.\n\nWith RBAC, you create users and assign them specific permissions by using `accessString` property.\n\nFor more information, see [Specifying Permissions Using an Access String](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Clusters.RBAC.html#Access-string).\n\nYou can create an IAM-enabled user by using `IamUser` construct:\n\n```ts\nconst user = new elasticache.IamUser(this, 'User', {\n // set user engine\n engine: elasticache.UserEngine.REDIS,\n\n // set user id\n userId: 'my-user',\n\n // set username\n userName: 'my-user',\n\n // set access string\n accessControl: elasticache.AccessControl.fromAccessString(\"on ~* +@all\"),\n});\n```\n\n> NOTE: IAM-enabled users must have matching user id and username. For more information, see [Limitations](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/auth-iam.html). The construct can set automatically the username to be the same as the user id.\n\nIf you want to create a password authenticated user, use `PasswordUser` construct:\n\n```ts\nconst user = new elasticache.PasswordUser(this, 'User', {\n // set user engine\n engine: elasticache.UserEngine.VALKEY,\n\n // set user id\n userId: 'my-user-id',\n\n // set access string\n accessControl: elasticache.AccessControl.fromAccessString(\"on ~* +@all\"),\n\n // set username\n userName: 'my-user-name',\n\n // set up to two passwords\n passwords: [\n // \"SecretIdForPassword\" is the secret id for the password\n SecretValue.secretsManager('SecretIdForPassword'),\n // \"AnotherSecretIdForPassword\" is the secret id for the password\n SecretValue.secretsManager('AnotherSecretIdForPassword'),\n ],\n});\n```\n\nYou can also create a no password required user by using `NoPasswordUser` construct:\n\n```ts\nconst user = new elasticache.NoPasswordUser(this, 'User', {\n // set user engine\n engine: elasticache.UserEngine.REDIS,\n\n // set user id\n userId: 'my-user-id',\n\n // set access string\n accessControl: elasticache.AccessControl.fromAccessString(\"on ~* +@all\"),\n\n // set username\n userName: 'my-user-name',\n});\n```\n\n> NOTE: `NoPasswordUser` is only available for Redis Cache.\n\n### Default user\n\nElastiCache automatically creates a default user with both a user ID and username set to `default`. This default user cannot be modified or deleted. The user is created as a no password authentication user.\n\nThis user is intended for compatibility with the default behavior of previous Redis OSS versions and has an access string that permits it to call all commands and access all keys.\n\nTo use this automatically created default user in CDK, you can import it using `NoPasswordUser.fromUserAttributes` method. For more information on import methods, see the [Import an existing user and user group](#import-an-existing-user-and-user-group) section.\n\nTo add proper access control to a cache, replace the default user with a new one that is either disabled by setting the `accessString` to `off -@all` or secured with a strong password.\n\nTo change the default user, create a new default user with the username set to `default`. You can then swap it with the original default user.\n\nFor more information, see [Applying RBAC to a Cache for ElastiCache with Valkey or Redis OSS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Clusters.RBAC.html#rbac-using).\n\nIf you want to create a new default user, `userName` must be `default` and `userId` must not be `default` by using `NoPasswordUser` or `PasswordUser`:\n\n```ts\n// use the original `default` user by using import method\nconst defaultUser = elasticache.NoPasswordUser.fromUserAttributes(this, 'DefaultUser', {\n // userId and userName must be 'default'\n userId: 'default',\n});\n\n// create a new default user\nconst newDefaultUser = new elasticache.NoPasswordUser(this, 'NewDefaultUser', {\n // new default user id must not be 'default'\n userId: 'new-default',\n // new default username must be 'default'\n userName: 'default',\n // set access string\n accessControl: elasticache.AccessControl.fromAccessString(\"on ~* +@all\"),\n});\n```\n\n> NOTE: You can't create a new default user using `IamUser` because an IAM-enabled user's username and user ID cannot be different.\n\n### Add users to the user group\n\nNext, use the `UserGroup` construct to create a user group and add users to it.\nEnsure that you include either the original default user or a new default user:\n\n```ts\ndeclare const newDefaultUser: elasticache.IUser;\ndeclare const user: elasticache.IUser;\ndeclare const anotherUser: elasticache.IUser;\n\nconst userGroup = new elasticache.UserGroup(this, 'UserGroup', {\n // add users including default user\n users: [newDefaultUser, user],\n});\n\n// you can also add a user by using addUser method\nuserGroup.addUser(anotherUser);\n```\n\n### Assign user group\n\nFinally, assign a user group to cache:\n\n```ts\ndeclare const vpc: ec2.Vpc;\ndeclare const userGroup: elasticache.UserGroup;\n\nconst serverlessCache = new elasticache.ServerlessCache(this, 'ServerlessCache', {\n engine: elasticache.CacheEngine.VALKEY_LATEST,\n serverlessCacheName: 'my-serverless-cache',\n vpc,\n // assign User Group\n userGroup,\n});\n\n```\n\n### Grant permissions to IAM-enabled users\n\nIf you create IAM-enabled users, `\"elasticache:Connect\"` action must be allowed for the users and cache.\n\n> NOTE: You don't need grant permissions to no password required users or password authentication users.\n\nFor more information, see [Authenticating with IAM](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/auth-iam.html).\n\nTo grant permissions, you can use the `grantConnect` method in `IamUser` and `ServerlessCache` constructs:\n\n```ts\ndeclare const user: elasticache.IamUser;\ndeclare const serverlessCache: elasticache.ServerlessCache;\ndeclare const role: iam.Role;\n\n// grant \"elasticache:Connect\" action permissions to role\nuser.grantConnect(role);\nserverlessCache.grantConnect(role);\n```\n\n### Import an existing user and user group\n\nYou can import an existing user and user group by using import methods:\n\n```ts\nconst stack = new Stack();\n\nconst importedIamUser = elasticache.IamUser.fromUserId(this, 'ImportedIamUser', 'my-iam-user-id');\n\nconst importedPasswordUser = elasticache.PasswordUser.fromUserAttributes(stack, 'ImportedPasswordUser', {\n userId: 'my-password-user-id',\n});\n\nconst importedNoPasswordUser = elasticache.NoPasswordUser.fromUserAttributes(stack, 'ImportedNoPasswordUser', {\n userId: 'my-no-password-user-id',\n});\n\nconst importedUserGroup = elasticache.UserGroup.fromUserGroupAttributes(this, 'ImportedUserGroup', {\n userGroupName: 'my-user-group-name'\n});\n```\n"
|
|
8467
8467
|
},
|
|
8468
8468
|
"repository": {
|
|
8469
8469
|
"directory": "packages/@aws-cdk/aws-elasticache-alpha",
|
|
@@ -9925,7 +9925,7 @@
|
|
|
9925
9925
|
},
|
|
9926
9926
|
"locationInModule": {
|
|
9927
9927
|
"filename": "lib/no-password-user.ts",
|
|
9928
|
-
"line":
|
|
9928
|
+
"line": 83
|
|
9929
9929
|
},
|
|
9930
9930
|
"parameters": [
|
|
9931
9931
|
{
|
|
@@ -9951,7 +9951,7 @@
|
|
|
9951
9951
|
"kind": "class",
|
|
9952
9952
|
"locationInModule": {
|
|
9953
9953
|
"filename": "lib/no-password-user.ts",
|
|
9954
|
-
"line":
|
|
9954
|
+
"line": 33
|
|
9955
9955
|
},
|
|
9956
9956
|
"methods": [
|
|
9957
9957
|
{
|
|
@@ -9961,7 +9961,7 @@
|
|
|
9961
9961
|
},
|
|
9962
9962
|
"locationInModule": {
|
|
9963
9963
|
"filename": "lib/no-password-user.ts",
|
|
9964
|
-
"line":
|
|
9964
|
+
"line": 43
|
|
9965
9965
|
},
|
|
9966
9966
|
"name": "isNoPasswordUser",
|
|
9967
9967
|
"parameters": [
|
|
@@ -9991,7 +9991,7 @@
|
|
|
9991
9991
|
"immutable": true,
|
|
9992
9992
|
"locationInModule": {
|
|
9993
9993
|
"filename": "lib/no-password-user.ts",
|
|
9994
|
-
"line":
|
|
9994
|
+
"line": 38
|
|
9995
9995
|
},
|
|
9996
9996
|
"name": "PROPERTY_INJECTION_ID",
|
|
9997
9997
|
"static": true,
|
|
@@ -10007,7 +10007,7 @@
|
|
|
10007
10007
|
"immutable": true,
|
|
10008
10008
|
"locationInModule": {
|
|
10009
10009
|
"filename": "lib/no-password-user.ts",
|
|
10010
|
-
"line":
|
|
10010
|
+
"line": 66
|
|
10011
10011
|
},
|
|
10012
10012
|
"name": "accessString",
|
|
10013
10013
|
"type": {
|
|
@@ -10025,7 +10025,7 @@
|
|
|
10025
10025
|
"immutable": true,
|
|
10026
10026
|
"locationInModule": {
|
|
10027
10027
|
"filename": "lib/no-password-user.ts",
|
|
10028
|
-
"line":
|
|
10028
|
+
"line": 72
|
|
10029
10029
|
},
|
|
10030
10030
|
"name": "userArn",
|
|
10031
10031
|
"overrides": "@aws-cdk/aws-elasticache-alpha.UserBase",
|
|
@@ -10044,7 +10044,7 @@
|
|
|
10044
10044
|
"immutable": true,
|
|
10045
10045
|
"locationInModule": {
|
|
10046
10046
|
"filename": "lib/no-password-user.ts",
|
|
10047
|
-
"line":
|
|
10047
|
+
"line": 56
|
|
10048
10048
|
},
|
|
10049
10049
|
"name": "userId",
|
|
10050
10050
|
"overrides": "@aws-cdk/aws-elasticache-alpha.UserBase",
|
|
@@ -10064,7 +10064,7 @@
|
|
|
10064
10064
|
"immutable": true,
|
|
10065
10065
|
"locationInModule": {
|
|
10066
10066
|
"filename": "lib/no-password-user.ts",
|
|
10067
|
-
"line":
|
|
10067
|
+
"line": 79
|
|
10068
10068
|
},
|
|
10069
10069
|
"name": "userStatus",
|
|
10070
10070
|
"type": {
|
|
@@ -10079,7 +10079,7 @@
|
|
|
10079
10079
|
"immutable": true,
|
|
10080
10080
|
"locationInModule": {
|
|
10081
10081
|
"filename": "lib/no-password-user.ts",
|
|
10082
|
-
"line":
|
|
10082
|
+
"line": 50
|
|
10083
10083
|
},
|
|
10084
10084
|
"name": "engine",
|
|
10085
10085
|
"optional": true,
|
|
@@ -10099,7 +10099,7 @@
|
|
|
10099
10099
|
"immutable": true,
|
|
10100
10100
|
"locationInModule": {
|
|
10101
10101
|
"filename": "lib/no-password-user.ts",
|
|
10102
|
-
"line":
|
|
10102
|
+
"line": 62
|
|
10103
10103
|
},
|
|
10104
10104
|
"name": "userName",
|
|
10105
10105
|
"optional": true,
|
|
@@ -10129,7 +10129,7 @@
|
|
|
10129
10129
|
"kind": "interface",
|
|
10130
10130
|
"locationInModule": {
|
|
10131
10131
|
"filename": "lib/no-password-user.ts",
|
|
10132
|
-
"line":
|
|
10132
|
+
"line": 19
|
|
10133
10133
|
},
|
|
10134
10134
|
"name": "NoPasswordUserProps",
|
|
10135
10135
|
"properties": [
|
|
@@ -10143,7 +10143,7 @@
|
|
|
10143
10143
|
"immutable": true,
|
|
10144
10144
|
"locationInModule": {
|
|
10145
10145
|
"filename": "lib/no-password-user.ts",
|
|
10146
|
-
"line":
|
|
10146
|
+
"line": 25
|
|
10147
10147
|
},
|
|
10148
10148
|
"name": "userName",
|
|
10149
10149
|
"optional": true,
|
|
@@ -12416,7 +12416,7 @@
|
|
|
12416
12416
|
{
|
|
12417
12417
|
"abstract": true,
|
|
12418
12418
|
"docs": {
|
|
12419
|
-
"default": "UserEngine.VALKEY.",
|
|
12419
|
+
"default": "- UserEngine.REDIS for NoPasswordUser, UserEngine.VALKEY for all other user types.",
|
|
12420
12420
|
"remarks": "Enum options: UserEngine.VALKEY, UserEngine.REDIS.",
|
|
12421
12421
|
"stability": "experimental",
|
|
12422
12422
|
"summary": "The engine type for the user."
|
|
@@ -13162,6 +13162,6 @@
|
|
|
13162
13162
|
"symbolId": "lib/user-group:UserGroupProps"
|
|
13163
13163
|
}
|
|
13164
13164
|
},
|
|
13165
|
-
"version": "2.
|
|
13165
|
+
"version": "2.233.0-alpha.0",
|
|
13166
13166
|
"fingerprint": "**********"
|
|
13167
13167
|
}
|
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
package/README.md
CHANGED
|
@@ -305,6 +305,8 @@ const user = new elasticache.NoPasswordUser(this, 'User', {
|
|
|
305
305
|
});
|
|
306
306
|
```
|
|
307
307
|
|
|
308
|
+
> NOTE: `NoPasswordUser` is only available for Redis Cache.
|
|
309
|
+
|
|
308
310
|
### Default user
|
|
309
311
|
|
|
310
312
|
ElastiCache automatically creates a default user with both a user ID and username set to `default`. This default user cannot be modified or deleted. The user is created as a no password authentication user.
|
package/lib/iam-user.js
CHANGED
|
@@ -71,7 +71,7 @@ let IamUser = (() => {
|
|
|
71
71
|
IamUser = _classThis = _classDescriptor.value;
|
|
72
72
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
73
73
|
}
|
|
74
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.IamUser", version: "2.
|
|
74
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.IamUser", version: "2.233.0-alpha.0" };
|
|
75
75
|
/**
|
|
76
76
|
* Uniquely identifies this class.
|
|
77
77
|
*/
|
package/lib/no-password-user.js
CHANGED
|
@@ -44,6 +44,10 @@ const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
|
44
44
|
const common_1 = require("./common");
|
|
45
45
|
const user_base_1 = require("./user-base");
|
|
46
46
|
const ELASTICACHE_NOPASSWORDUSER_SYMBOL = Symbol.for('@aws-cdk/aws-elasticache.NoPasswordUser');
|
|
47
|
+
/**
|
|
48
|
+
* List of engines that support no-password authentication.
|
|
49
|
+
*/
|
|
50
|
+
const SUPPORTED_NO_PASSWORD_ENGINES = [common_1.UserEngine.REDIS];
|
|
47
51
|
/**
|
|
48
52
|
* Define an ElastiCache user with no password authentication.
|
|
49
53
|
*
|
|
@@ -63,7 +67,7 @@ let NoPasswordUser = (() => {
|
|
|
63
67
|
NoPasswordUser = _classThis = _classDescriptor.value;
|
|
64
68
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
65
69
|
}
|
|
66
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.NoPasswordUser", version: "2.
|
|
70
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.NoPasswordUser", version: "2.233.0-alpha.0" };
|
|
67
71
|
/**
|
|
68
72
|
* Uniquely identifies this class.
|
|
69
73
|
*/
|
|
@@ -125,8 +129,8 @@ let NoPasswordUser = (() => {
|
|
|
125
129
|
this.userId = props.userId;
|
|
126
130
|
this.userName = props.userName ?? props.userId;
|
|
127
131
|
this.accessString = props.accessControl.accessString;
|
|
128
|
-
if (this.engine
|
|
129
|
-
throw new core_1.ValidationError('
|
|
132
|
+
if (!SUPPORTED_NO_PASSWORD_ENGINES.includes(this.engine)) {
|
|
133
|
+
throw new core_1.ValidationError(`Engine '${this.engine}' does not support no-password authentication. Supported engines: ${SUPPORTED_NO_PASSWORD_ENGINES.join(', ')}.`, this);
|
|
130
134
|
}
|
|
131
135
|
this.resource = new aws_elasticache_1.CfnUser(this, 'Resource', {
|
|
132
136
|
engine: this.engine,
|
|
@@ -150,4 +154,4 @@ let NoPasswordUser = (() => {
|
|
|
150
154
|
return NoPasswordUser = _classThis;
|
|
151
155
|
})();
|
|
152
156
|
exports.NoPasswordUser = NoPasswordUser;
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcGFzc3dvcmQtdXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm5vLXBhc3N3b3JkLXVzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUVBQXNEO0FBQ3RELDJDQUFtRDtBQUNuRCw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBRTFFLHFDQUFzQztBQUN0QywyQ0FBc0Q7QUFFdEQsTUFBTSxpQ0FBaUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7QUFFaEc7O0dBRUc7QUFDSCxNQUFNLDZCQUE2QixHQUFHLENBQUMsbUJBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQWN6RDs7OztHQUlHO0lBRVUsY0FBYzs0QkFEMUIsb0NBQWtCOzs7O3NCQUNpQixvQkFBUTs4QkFBaEIsU0FBUSxXQUFROzs7O1lBQTVDLDZLQWlGQzs7Ozs7UUFoRkM7O1dBRUc7UUFDSSxNQUFNLENBQVUscUJBQXFCLEdBQVcsNENBQTRDLENBQUM7UUFFcEc7O1dBRUc7UUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBTTtZQUNuQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxpQ0FBaUMsSUFBSSxDQUFDLENBQUM7U0FDeEY7UUFFRDs7V0FFRztRQUNhLE1BQU0sQ0FBYztRQUNwQzs7OztXQUlHO1FBQ2EsTUFBTSxDQUFTO1FBQy9COzs7O1dBSUc7UUFDYSxRQUFRLENBQVU7UUFDbEM7O1dBRUc7UUFDYSxZQUFZLENBQVM7UUFDckM7Ozs7V0FJRztRQUNhLE9BQU8sQ0FBUztRQUNoQzs7Ozs7V0FLRztRQUNhLFVBQVUsQ0FBUztRQUVsQixRQUFRLENBQVU7UUFFbkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtZQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7bURBbERSLGNBQWM7Ozs7WUFvRHZCLG1DQUFtQztZQUNuQyxJQUFBLHdDQUFvQixFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksbUJBQVUsQ0FBQyxLQUFLLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7WUFFckQsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxJQUFJLHNCQUFlLENBQUMsV0FBVyxJQUFJLENBQUMsTUFBTSxxRUFBcUUsNkJBQTZCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUssQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx5QkFBTyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQzVDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0Isa0JBQWtCLEVBQUU7b0JBQ2xCLElBQUksRUFBRSxzQkFBc0I7aUJBQzdCO2dCQUNELGtCQUFrQixFQUFFLElBQUk7Z0JBQ3hCLFNBQVMsRUFBRSxTQUFTO2FBQ3JCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUUzQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxpQ0FBaUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2pGOztZQWhGVSx1REFBYzs7Ozs7QUFBZCx3Q0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmblVzZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGUnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFVzZXJFbmdpbmUgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBVc2VyQmFzZSwgVXNlckJhc2VQcm9wcyB9IGZyb20gJy4vdXNlci1iYXNlJztcblxuY29uc3QgRUxBU1RJQ0FDSEVfTk9QQVNTV09SRFVTRVJfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWVsYXN0aWNhY2hlLk5vUGFzc3dvcmRVc2VyJyk7XG5cbi8qKlxuICogTGlzdCBvZiBlbmdpbmVzIHRoYXQgc3VwcG9ydCBuby1wYXNzd29yZCBhdXRoZW50aWNhdGlvbi5cbiAqL1xuY29uc3QgU1VQUE9SVEVEX05PX1BBU1NXT1JEX0VOR0lORVMgPSBbVXNlckVuZ2luZS5SRURJU107XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgYW4gRWxhc3RpQ2FjaGUgdXNlciB3aXRoIG5vIHBhc3N3b3JkIGF1dGhlbnRpY2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vUGFzc3dvcmRVc2VyUHJvcHMgZXh0ZW5kcyBVc2VyQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNhbWUgYXMgdXNlcklkLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlck5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmaW5lIGFuIEVsYXN0aUNhY2hlIHVzZXIgd2l0aCBubyBwYXNzd29yZCBhdXRoZW50aWNhdGlvbi5cbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpFbGFzdGlDYWNoZTo6VXNlclxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgTm9QYXNzd29yZFVzZXIgZXh0ZW5kcyBVc2VyQmFzZSB7XG4gIC8qKlxuICAgKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ2F3cy1jZGstbGliLmF3cy1lbGFzdGljYWNoZS5Ob1Bhc3N3b3JkVXNlcic7XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBgTm9QYXNzd29yZFVzZXJgLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc05vUGFzc3dvcmRVc2VyKHg6IGFueSk6IHggaXMgTm9QYXNzd29yZFVzZXIge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiAoeCkgPT09ICdvYmplY3QnICYmIEVMQVNUSUNBQ0hFX05PUEFTU1dPUkRVU0VSX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgZm9yIHRoZSB1c2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIElELlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlcklkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIG5hbWUuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VyTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBhY2Nlc3Mgc3RyaW5nIHRoYXQgZGVmaW5lcyB0aGUgdXNlcidzIHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjY2Vzc1N0cmluZzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHVzZXIncyBBUk4uXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VyQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIHN0YXR1cy5cbiAgICogQ2FuIGJlICdhY3RpdmUnLCAnbW9kaWZ5aW5nJywgJ2RlbGV0aW5nJy5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVzZXJTdGF0dXM6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBDZm5Vc2VyO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOb1Bhc3N3b3JkVXNlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgdGhpcy5lbmdpbmUgPSBwcm9wcy5lbmdpbmUgPz8gVXNlckVuZ2luZS5SRURJUztcbiAgICB0aGlzLnVzZXJJZCA9IHByb3BzLnVzZXJJZDtcbiAgICB0aGlzLnVzZXJOYW1lID0gcHJvcHMudXNlck5hbWUgPz8gcHJvcHMudXNlcklkO1xuICAgIHRoaXMuYWNjZXNzU3RyaW5nID0gcHJvcHMuYWNjZXNzQ29udHJvbC5hY2Nlc3NTdHJpbmc7XG5cbiAgICBpZiAoIVNVUFBPUlRFRF9OT19QQVNTV09SRF9FTkdJTkVTLmluY2x1ZGVzKHRoaXMuZW5naW5lKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgRW5naW5lICcke3RoaXMuZW5naW5lfScgZG9lcyBub3Qgc3VwcG9ydCBuby1wYXNzd29yZCBhdXRoZW50aWNhdGlvbi4gU3VwcG9ydGVkIGVuZ2luZXM6ICR7U1VQUE9SVEVEX05PX1BBU1NXT1JEX0VOR0lORVMuam9pbignLCAnKX0uYCwgdGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5Vc2VyKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGVuZ2luZTogdGhpcy5lbmdpbmUsXG4gICAgICB1c2VySWQ6IHByb3BzLnVzZXJJZCxcbiAgICAgIHVzZXJOYW1lOiB0aGlzLnVzZXJOYW1lLFxuICAgICAgYWNjZXNzU3RyaW5nOiB0aGlzLmFjY2Vzc1N0cmluZyxcbiAgICAgIGF1dGhlbnRpY2F0aW9uTW9kZToge1xuICAgICAgICBUeXBlOiAnbm8tcGFzc3dvcmQtcmVxdWlyZWQnLFxuICAgICAgfSxcbiAgICAgIG5vUGFzc3dvcmRSZXF1aXJlZDogdHJ1ZSxcbiAgICAgIHBhc3N3b3JkczogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgdGhpcy51c2VyQXJuID0gdGhpcy5yZXNvdXJjZS5hdHRyQXJuO1xuICAgIHRoaXMudXNlclN0YXR1cyA9IHRoaXMucmVzb3VyY2UuYXR0clN0YXR1cztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBFTEFTVElDQUNIRV9OT1BBU1NXT1JEVVNFUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/password-user.js
CHANGED
|
@@ -63,7 +63,7 @@ let PasswordUser = (() => {
|
|
|
63
63
|
PasswordUser = _classThis = _classDescriptor.value;
|
|
64
64
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
65
65
|
}
|
|
66
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.PasswordUser", version: "2.
|
|
66
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.PasswordUser", version: "2.233.0-alpha.0" };
|
|
67
67
|
/**
|
|
68
68
|
* Uniquely identifies this class.
|
|
69
69
|
*/
|
|
@@ -45,7 +45,7 @@ var CacheEngine;
|
|
|
45
45
|
* Base class for ServerlessCache constructs
|
|
46
46
|
*/
|
|
47
47
|
class ServerlessCacheBase extends core_1.Resource {
|
|
48
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCacheBase", version: "2.
|
|
48
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCacheBase", version: "2.233.0-alpha.0" };
|
|
49
49
|
/**
|
|
50
50
|
* Grant connect permissions to the cache
|
|
51
51
|
*
|
package/lib/serverless-cache.js
CHANGED
|
@@ -90,7 +90,7 @@ let ServerlessCache = (() => {
|
|
|
90
90
|
ServerlessCache = _classThis = _classDescriptor.value;
|
|
91
91
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
92
92
|
}
|
|
93
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCache", version: "2.
|
|
93
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCache", version: "2.233.0-alpha.0" };
|
|
94
94
|
/**
|
|
95
95
|
* Uniquely identifies this class.
|
|
96
96
|
*/
|
package/lib/user-base.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export interface UserBaseProps {
|
|
|
24
24
|
* The engine type for the user.
|
|
25
25
|
* Enum options: UserEngine.VALKEY, UserEngine.REDIS.
|
|
26
26
|
*
|
|
27
|
-
* @default UserEngine.VALKEY.
|
|
27
|
+
* @default - UserEngine.REDIS for NoPasswordUser, UserEngine.VALKEY for all other user types.
|
|
28
28
|
*/
|
|
29
29
|
readonly engine?: UserEngine;
|
|
30
30
|
/**
|
package/lib/user-base.js
CHANGED
|
@@ -8,7 +8,7 @@ const core_1 = require("aws-cdk-lib/core");
|
|
|
8
8
|
* Access control configuration for ElastiCache users.
|
|
9
9
|
*/
|
|
10
10
|
class AccessControl {
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.AccessControl", version: "2.
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.AccessControl", version: "2.233.0-alpha.0" };
|
|
12
12
|
/**
|
|
13
13
|
* Create access control from an access string.
|
|
14
14
|
*
|
|
@@ -36,7 +36,7 @@ class AccessControlString extends AccessControl {
|
|
|
36
36
|
* Base class for ElastiCache users.
|
|
37
37
|
*/
|
|
38
38
|
class UserBase extends core_1.Resource {
|
|
39
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserBase", version: "2.
|
|
39
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserBase", version: "2.233.0-alpha.0" };
|
|
40
40
|
/**
|
|
41
41
|
* Import an existing user by ID.
|
|
42
42
|
*
|
|
@@ -116,4 +116,4 @@ class UserBase extends core_1.Resource {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
exports.UserBase = UserBase;
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXNlci1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkNBQTBGO0FBSTFGOztHQUVHO0FBQ0gsTUFBc0IsYUFBYTs7SUFDakM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFvQjtRQUNqRCxPQUFPLElBQUksbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDOUM7O0FBUkgsc0NBY0M7QUFFRDs7R0FFRztBQUNILE1BQU0sbUJBQW9CLFNBQVEsYUFBYTtJQUM3Qzs7T0FFRztJQUNhLFlBQVksQ0FBUztJQUVyQyxZQUFZLFlBQW9CO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7S0FDbEM7Q0FDRjtBQW9GRDs7R0FFRztBQUNILE1BQXNCLFFBQVMsU0FBUSxlQUFROztJQUM3Qzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE1BQWM7UUFDbkUsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDM0Q7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE9BQWU7UUFDckUsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDNUQ7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7Ozs7Ozs7Ozs7UUFDdEYsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxPQUFlLENBQUM7UUFDcEIsTUFBTSxLQUFLLEdBQUcsWUFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QixJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxzQkFBZSxDQUFDLGdEQUFnRCxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN4QixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsZ0JBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUNsRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sSUFBSSxzQkFBZSxDQUFDLHFDQUFxQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFDRCxNQUFNLEdBQUcsZUFBZSxDQUFDO1FBQzNCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QixNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN0QixPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDeEIsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU07YUFDM0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksc0JBQWUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBRUQsTUFBTSxNQUFPLFNBQVEsZUFBUTtZQUNYLE1BQU0sQ0FBYztZQUNwQixNQUFNLENBQVM7WUFDZixPQUFPLENBQVM7WUFDdkIsUUFBUSxDQUFVO1lBRTNCLFlBQVksUUFBZ0IsRUFBRSxPQUFlO2dCQUMzQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ2pDLENBQUM7U0FDRjtRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3BDOztBQXpFSCw0QkFpR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzb3VyY2UsIFJlc291cmNlLCBBcm5Gb3JtYXQsIFN0YWNrLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVXNlckVuZ2luZSB9IGZyb20gJy4vY29tbW9uJztcblxuLyoqXG4gKiBBY2Nlc3MgY29udHJvbCBjb25maWd1cmF0aW9uIGZvciBFbGFzdGlDYWNoZSB1c2Vycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjY2Vzc0NvbnRyb2wge1xuICAvKipcbiAgICogQ3JlYXRlIGFjY2VzcyBjb250cm9sIGZyb20gYW4gYWNjZXNzIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIGFjY2Vzc1N0cmluZyBUaGUgYWNjZXNzIHN0cmluZyBkZWZpbmluZyB1c2VyIHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQWNjZXNzU3RyaW5nKGFjY2Vzc1N0cmluZzogc3RyaW5nKTogQWNjZXNzQ29udHJvbCB7XG4gICAgcmV0dXJuIG5ldyBBY2Nlc3NDb250cm9sU3RyaW5nKGFjY2Vzc1N0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFjY2VzcyBzdHJpbmcgdGhhdCBkZWZpbmVzIHVzZXIncyBwZXJtaXNzaW9ucy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhY2Nlc3NTdHJpbmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBY2Nlc3MgY29udHJvbCBpbXBsZW1lbnRhdGlvbiB1c2luZyBhIHJhdyBhY2Nlc3Mgc3RyaW5nLlxuICovXG5jbGFzcyBBY2Nlc3NDb250cm9sU3RyaW5nIGV4dGVuZHMgQWNjZXNzQ29udHJvbCB7XG4gIC8qKlxuICAgKiBUaGUgYWNjZXNzIHN0cmluZyB0aGF0IGRlZmluZXMgdXNlcidzIHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjY2Vzc1N0cmluZzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc1N0cmluZzogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFjY2Vzc1N0cmluZyA9IGFjY2Vzc1N0cmluZztcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGFuIEVsYXN0aUNhY2hlIGJhc2UgdXNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIuXG4gICAqIEVudW0gb3B0aW9uczogVXNlckVuZ2luZS5WQUxLRVksIFVzZXJFbmdpbmUuUkVESVMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFVzZXJFbmdpbmUuVkFMS0VZLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgdXNlci5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJJZDogc3RyaW5nO1xuICAvKipcbiAgICogQWNjZXNzIGNvbnRyb2wgY29uZmlndXJhdGlvbiBmb3IgdGhlIHVzZXIuXG4gICAqL1xuICByZWFkb25seSBhY2Nlc3NDb250cm9sOiBBY2Nlc3NDb250cm9sO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gRWxhc3RpQ2FjaGUgYmFzZSB1c2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyIGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgSUQuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZ2luZSBmb3IgdGhlIHVzZXIuXG4gICAqL1xuICByZWFkb25seSBlbmdpbmU/OiBVc2VyRW5naW5lO1xuICAvKipcbiAgICogVGhlIHVzZXIncyBuYW1lLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB1c2VyTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgQVJOLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB1c2VyQXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyBmb3IgaW1wb3J0aW5nIGFuIGV4aXN0aW5nIEVsYXN0aUNhY2hlIHVzZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckJhc2VBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgdXNlci5cbiAgICogT25lIG9mIGB1c2VySWRgIG9yIGB1c2VyQXJuYCBpcyByZXF1aXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gdXNlckFybi5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW5naW5lIHR5cGUgaXMgdW5rbm93bi5cbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbmFtZSBpcyB1bmtub3duLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyLlxuICAgKlxuICAgKiBPbmUgb2YgYHVzZXJJZGAgb3IgYHVzZXJBcm5gIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB1c2VySWQuXG4gICAqL1xuICByZWFkb25seSB1c2VyQXJuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIEVsYXN0aUNhY2hlIHVzZXJzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVXNlckJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElVc2VyIHtcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB1c2VyIGJ5IElELlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKS5cbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lLlxuICAgKiBAcGFyYW0gdXNlcklkIFRoZSBJRCBvZiB0aGUgZXhpc3RpbmcgdXNlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJJZChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IElVc2VyIHtcbiAgICByZXR1cm4gVXNlckJhc2UuZnJvbVVzZXJBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyB1c2VySWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHVzZXIgYnkgQVJOLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKS5cbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lLlxuICAgKiBAcGFyYW0gdXNlckFybiBUaGUgQVJOIG9mIHRoZSBleGlzdGluZyB1c2VyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVXNlckFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCB1c2VyQXJuOiBzdHJpbmcpOiBJVXNlciB7XG4gICAgcmV0dXJuIFVzZXJCYXNlLmZyb21Vc2VyQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgdXNlckFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgdXNlciB1c2luZyBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKS5cbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lLlxuICAgKiBAcGFyYW0gYXR0cnMgQSBgVXNlckJhc2VBdHRyaWJ1dGVzYCBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Vc2VyQXR0cmlidXRlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogVXNlckJhc2VBdHRyaWJ1dGVzKTogSVVzZXIge1xuICAgIGxldCB1c2VySWQ6IHN0cmluZztcbiAgICBsZXQgdXNlckFybjogc3RyaW5nO1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuXG4gICAgaWYgKGF0dHJzLnVzZXJBcm4gJiYgYXR0cnMudXNlcklkKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdPbmx5IG9uZSBvZiB1c2VyQXJuIG9yIHVzZXJJZCBjYW4gYmUgcHJvdmlkZWQuJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGlmIChhdHRycy51c2VyQXJuKSB7XG4gICAgICB1c2VyQXJuID0gYXR0cnMudXNlckFybjtcbiAgICAgIGNvbnN0IGV4dHJhY3RlZFVzZXJJZCA9IHN0YWNrLnNwbGl0QXJuKGF0dHJzLnVzZXJBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWU7XG4gICAgICBpZiAoIWV4dHJhY3RlZFVzZXJJZCkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdVbmFibGUgdG8gZXh0cmFjdCB1c2VyIGlkIGZyb20gQVJOLicsIHNjb3BlKTtcbiAgICAgIH1cbiAgICAgIHVzZXJJZCA9IGV4dHJhY3RlZFVzZXJJZDtcbiAgICB9IGVsc2UgaWYgKGF0dHJzLnVzZXJJZCkge1xuICAgICAgdXNlcklkID0gYXR0cnMudXNlcklkO1xuICAgICAgdXNlckFybiA9IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdlbGFzdGljYWNoZScsXG4gICAgICAgIHJlc291cmNlOiAndXNlcicsXG4gICAgICAgIHJlc291cmNlTmFtZTogYXR0cnMudXNlcklkLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ09uZSBvZiB1c2VySWQgb3IgdXNlckFybiBpcyByZXF1aXJlZC4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVXNlciB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbiAgICAgIHB1YmxpYyByZWFkb25seSB1c2VyQXJuOiBzdHJpbmc7XG4gICAgICByZWFkb25seSB1c2VyTmFtZT86IHN0cmluZztcblxuICAgICAgY29uc3RydWN0b3IoX3VzZXJBcm46IHN0cmluZywgX3VzZXJJZDogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgICAgIHRoaXMudXNlckFybiA9IF91c2VyQXJuO1xuICAgICAgICB0aGlzLnVzZXJJZCA9IF91c2VySWQ7XG4gICAgICAgIHRoaXMuZW5naW5lID0gYXR0cnMuZW5naW5lO1xuICAgICAgICB0aGlzLnVzZXJOYW1lID0gYXR0cnMudXNlck5hbWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQodXNlckFybiwgdXNlcklkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIElELlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlcklkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIGZvciB0aGUgdXNlci5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBlbmdpbmU/OiBVc2VyRW5naW5lO1xuICAvKipcbiAgICogVGhlIHVzZXIncyBuYW1lLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIEFSTi5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHVzZXJBcm46IHN0cmluZztcbn1cbiJdfQ==
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXNlci1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkNBQTBGO0FBSTFGOztHQUVHO0FBQ0gsTUFBc0IsYUFBYTs7SUFDakM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFvQjtRQUNqRCxPQUFPLElBQUksbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDOUM7O0FBUkgsc0NBY0M7QUFFRDs7R0FFRztBQUNILE1BQU0sbUJBQW9CLFNBQVEsYUFBYTtJQUM3Qzs7T0FFRztJQUNhLFlBQVksQ0FBUztJQUVyQyxZQUFZLFlBQW9CO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7S0FDbEM7Q0FDRjtBQW9GRDs7R0FFRztBQUNILE1BQXNCLFFBQVMsU0FBUSxlQUFROztJQUM3Qzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE1BQWM7UUFDbkUsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDM0Q7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE9BQWU7UUFDckUsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDNUQ7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7Ozs7Ozs7Ozs7UUFDdEYsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxPQUFlLENBQUM7UUFDcEIsTUFBTSxLQUFLLEdBQUcsWUFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QixJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxzQkFBZSxDQUFDLGdEQUFnRCxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN4QixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsZ0JBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUNsRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sSUFBSSxzQkFBZSxDQUFDLHFDQUFxQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFDRCxNQUFNLEdBQUcsZUFBZSxDQUFDO1FBQzNCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QixNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN0QixPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDeEIsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU07YUFDM0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksc0JBQWUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBRUQsTUFBTSxNQUFPLFNBQVEsZUFBUTtZQUNYLE1BQU0sQ0FBYztZQUNwQixNQUFNLENBQVM7WUFDZixPQUFPLENBQVM7WUFDdkIsUUFBUSxDQUFVO1lBRTNCLFlBQVksUUFBZ0IsRUFBRSxPQUFlO2dCQUMzQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ2pDLENBQUM7U0FDRjtRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3BDOztBQXpFSCw0QkFpR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzb3VyY2UsIFJlc291cmNlLCBBcm5Gb3JtYXQsIFN0YWNrLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVXNlckVuZ2luZSB9IGZyb20gJy4vY29tbW9uJztcblxuLyoqXG4gKiBBY2Nlc3MgY29udHJvbCBjb25maWd1cmF0aW9uIGZvciBFbGFzdGlDYWNoZSB1c2Vycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjY2Vzc0NvbnRyb2wge1xuICAvKipcbiAgICogQ3JlYXRlIGFjY2VzcyBjb250cm9sIGZyb20gYW4gYWNjZXNzIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIGFjY2Vzc1N0cmluZyBUaGUgYWNjZXNzIHN0cmluZyBkZWZpbmluZyB1c2VyIHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQWNjZXNzU3RyaW5nKGFjY2Vzc1N0cmluZzogc3RyaW5nKTogQWNjZXNzQ29udHJvbCB7XG4gICAgcmV0dXJuIG5ldyBBY2Nlc3NDb250cm9sU3RyaW5nKGFjY2Vzc1N0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFjY2VzcyBzdHJpbmcgdGhhdCBkZWZpbmVzIHVzZXIncyBwZXJtaXNzaW9ucy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhY2Nlc3NTdHJpbmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBY2Nlc3MgY29udHJvbCBpbXBsZW1lbnRhdGlvbiB1c2luZyBhIHJhdyBhY2Nlc3Mgc3RyaW5nLlxuICovXG5jbGFzcyBBY2Nlc3NDb250cm9sU3RyaW5nIGV4dGVuZHMgQWNjZXNzQ29udHJvbCB7XG4gIC8qKlxuICAgKiBUaGUgYWNjZXNzIHN0cmluZyB0aGF0IGRlZmluZXMgdXNlcidzIHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjY2Vzc1N0cmluZzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc1N0cmluZzogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFjY2Vzc1N0cmluZyA9IGFjY2Vzc1N0cmluZztcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGFuIEVsYXN0aUNhY2hlIGJhc2UgdXNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIuXG4gICAqIEVudW0gb3B0aW9uczogVXNlckVuZ2luZS5WQUxLRVksIFVzZXJFbmdpbmUuUkVESVMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVXNlckVuZ2luZS5SRURJUyBmb3IgTm9QYXNzd29yZFVzZXIsIFVzZXJFbmdpbmUuVkFMS0VZIGZvciBhbGwgb3RoZXIgdXNlciB0eXBlcy5cbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHVzZXIuXG4gICAqL1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEFjY2VzcyBjb250cm9sIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB1c2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXNzQ29udHJvbDogQWNjZXNzQ29udHJvbDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVsYXN0aUNhY2hlIGJhc2UgdXNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVXNlciBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIElELlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgZm9yIHRoZSB1c2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgbmFtZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIEFSTi5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgZm9yIGltcG9ydGluZyBhbiBleGlzdGluZyBFbGFzdGlDYWNoZSB1c2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJCYXNlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHVzZXIuXG4gICAqIE9uZSBvZiBgdXNlcklkYCBvciBgdXNlckFybmAgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHVzZXJBcm4uXG4gICAqL1xuICByZWFkb25seSB1c2VySWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGVuZ2luZSB0eXBlIGlzIHVua25vd24uXG4gICAqL1xuICByZWFkb25seSBlbmdpbmU/OiBVc2VyRW5naW5lO1xuICAvKipcbiAgICogVGhlIHVzZXIncyBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5hbWUgaXMgdW5rbm93bi5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgdXNlci5cbiAgICpcbiAgICogT25lIG9mIGB1c2VySWRgIG9yIGB1c2VyQXJuYCBpcyByZXF1aXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gdXNlcklkLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckFybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBFbGFzdGlDYWNoZSB1c2Vycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFVzZXJCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVXNlciB7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgdXNlciBieSBJRC5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIHVzZXJJZCBUaGUgSUQgb2YgdGhlIGV4aXN0aW5nIHVzZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Vc2VySWQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgdXNlcklkOiBzdHJpbmcpOiBJVXNlciB7XG4gICAgcmV0dXJuIFVzZXJCYXNlLmZyb21Vc2VyQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgdXNlcklkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB1c2VyIGJ5IEFSTi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIHVzZXJBcm4gVGhlIEFSTiBvZiB0aGUgZXhpc3RpbmcgdXNlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgdXNlckFybjogc3RyaW5nKTogSVVzZXIge1xuICAgIHJldHVybiBVc2VyQmFzZS5mcm9tVXNlckF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHVzZXJBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHVzZXIgdXNpbmcgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIGF0dHJzIEEgYFVzZXJCYXNlQXR0cmlidXRlc2Agb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVXNlckF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFVzZXJCYXNlQXR0cmlidXRlcyk6IElVc2VyIHtcbiAgICBsZXQgdXNlcklkOiBzdHJpbmc7XG4gICAgbGV0IHVzZXJBcm46IHN0cmluZztcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICAgIGlmIChhdHRycy51c2VyQXJuICYmIGF0dHJzLnVzZXJJZCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignT25seSBvbmUgb2YgdXNlckFybiBvciB1c2VySWQgY2FuIGJlIHByb3ZpZGVkLicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMudXNlckFybikge1xuICAgICAgdXNlckFybiA9IGF0dHJzLnVzZXJBcm47XG4gICAgICBjb25zdCBleHRyYWN0ZWRVc2VySWQgPSBzdGFjay5zcGxpdEFybihhdHRycy51c2VyQXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lO1xuICAgICAgaWYgKCFleHRyYWN0ZWRVc2VySWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignVW5hYmxlIHRvIGV4dHJhY3QgdXNlciBpZCBmcm9tIEFSTi4nLCBzY29wZSk7XG4gICAgICB9XG4gICAgICB1c2VySWQgPSBleHRyYWN0ZWRVc2VySWQ7XG4gICAgfSBlbHNlIGlmIChhdHRycy51c2VySWQpIHtcbiAgICAgIHVzZXJJZCA9IGF0dHJzLnVzZXJJZDtcbiAgICAgIHVzZXJBcm4gPSBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnZWxhc3RpY2FjaGUnLFxuICAgICAgICByZXNvdXJjZTogJ3VzZXInLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGF0dHJzLnVzZXJJZCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdPbmUgb2YgdXNlcklkIG9yIHVzZXJBcm4gaXMgcmVxdWlyZWQuJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVVzZXIge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXNlcklkOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXNlckFybjogc3RyaW5nO1xuICAgICAgcmVhZG9ubHkgdXNlck5hbWU/OiBzdHJpbmc7XG5cbiAgICAgIGNvbnN0cnVjdG9yKF91c2VyQXJuOiBzdHJpbmcsIF91c2VySWQ6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgICAgICB0aGlzLnVzZXJBcm4gPSBfdXNlckFybjtcbiAgICAgICAgdGhpcy51c2VySWQgPSBfdXNlcklkO1xuICAgICAgICB0aGlzLmVuZ2luZSA9IGF0dHJzLmVuZ2luZTtcbiAgICAgICAgdGhpcy51c2VyTmFtZSA9IGF0dHJzLnVzZXJOYW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHVzZXJBcm4sIHVzZXJJZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHVzZXIncyBJRC5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHVzZXJJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZ2luZSBmb3IgdGhlIHVzZXIuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgbmFtZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHVzZXJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHVzZXIncyBBUk4uXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2VyQXJuOiBzdHJpbmc7XG59XG4iXX0=
|
package/lib/user-group.js
CHANGED
|
@@ -47,7 +47,7 @@ const ELASTICACHE_USERGROUP_SYMBOL = Symbol.for('@aws-cdk/aws-elasticache.UserGr
|
|
|
47
47
|
* Base class for UserGroup constructs
|
|
48
48
|
*/
|
|
49
49
|
class UserGroupBase extends core_1.Resource {
|
|
50
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroupBase", version: "2.
|
|
50
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroupBase", version: "2.233.0-alpha.0" };
|
|
51
51
|
/**
|
|
52
52
|
* Add a user to this user group
|
|
53
53
|
*
|
|
@@ -90,7 +90,7 @@ let UserGroup = (() => {
|
|
|
90
90
|
UserGroup = _classThis = _classDescriptor.value;
|
|
91
91
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
92
92
|
}
|
|
93
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroup", version: "2.
|
|
93
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroup", version: "2.233.0-alpha.0" };
|
|
94
94
|
/**
|
|
95
95
|
* Uniquely identifies this class
|
|
96
96
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-elasticache-alpha",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.233.0-alpha.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The CDK Construct Library for AWS::ElastiCache",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -84,18 +84,18 @@
|
|
|
84
84
|
},
|
|
85
85
|
"license": "Apache-2.0",
|
|
86
86
|
"devDependencies": {
|
|
87
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
87
|
+
"@aws-cdk/cdk-build-tools": "2.233.0-alpha.0",
|
|
88
88
|
"@aws-cdk/integ-runner": "^2.192.2",
|
|
89
|
-
"@aws-cdk/pkglint": "2.
|
|
89
|
+
"@aws-cdk/pkglint": "2.233.0-alpha.0",
|
|
90
90
|
"@types/jest": "^29.5.14",
|
|
91
91
|
"jest": "^29.7.0",
|
|
92
|
-
"aws-cdk-lib": "2.
|
|
92
|
+
"aws-cdk-lib": "2.233.0",
|
|
93
93
|
"constructs": "^10.0.0",
|
|
94
|
-
"@aws-cdk/integ-tests-alpha": "2.
|
|
94
|
+
"@aws-cdk/integ-tests-alpha": "2.233.0-alpha.0"
|
|
95
95
|
},
|
|
96
96
|
"dependencies": {},
|
|
97
97
|
"peerDependencies": {
|
|
98
|
-
"aws-cdk-lib": "^2.
|
|
98
|
+
"aws-cdk-lib": "^2.233.0",
|
|
99
99
|
"constructs": "^10.0.0"
|
|
100
100
|
},
|
|
101
101
|
"engines": {
|