@aws-cdk/aws-bedrock-agentcore-alpha 2.250.0-alpha.0 → 2.252.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 +11883 -7285
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +4 -0
- package/README.md +405 -0
- package/lib/gateway/gateway-base.js +1 -1
- package/lib/gateway/gateway.d.ts +58 -0
- package/lib/gateway/gateway.js +46 -3
- package/lib/gateway/inbound-auth/authorizer.d.ts +27 -1
- package/lib/gateway/inbound-auth/authorizer.js +37 -5
- package/lib/gateway/inbound-auth/custom-claim.js +1 -1
- package/lib/gateway/interceptor.js +1 -1
- package/lib/gateway/outbound-auth/api-key.js +1 -1
- package/lib/gateway/outbound-auth/credential-provider.js +1 -1
- package/lib/gateway/protocol.js +2 -2
- package/lib/gateway/targets/schema/api-schema.js +4 -4
- package/lib/gateway/targets/schema/tool-schema.js +4 -4
- package/lib/gateway/targets/target-base.js +1 -1
- package/lib/gateway/targets/target-configuration.js +6 -6
- package/lib/gateway/targets/target.js +1 -1
- package/lib/index.d.ts +8 -0
- package/lib/index.js +13 -1
- package/lib/memory/memory-strategy.js +1 -1
- package/lib/memory/memory.js +2 -2
- package/lib/memory/strategies/managed-strategy.js +1 -1
- package/lib/memory/strategies/self-managed-strategy.js +1 -1
- package/lib/network/network-configuration.js +4 -4
- package/lib/policy/perms.d.ts +50 -0
- package/lib/policy/perms.js +62 -0
- package/lib/policy/policy-base.d.ts +194 -0
- package/lib/policy/policy-base.js +120 -0
- package/lib/policy/policy-engine-base.d.ts +260 -0
- package/lib/policy/policy-engine-base.js +193 -0
- package/lib/policy/policy-engine.d.ts +150 -0
- package/lib/policy/policy-engine.js +290 -0
- package/lib/policy/policy-statement.d.ts +518 -0
- package/lib/policy/policy-statement.js +927 -0
- package/lib/policy/policy-types.d.ts +66 -0
- package/lib/policy/policy-types.js +30 -0
- package/lib/policy/policy.d.ts +127 -0
- package/lib/policy/policy.js +225 -0
- package/lib/policy/validation-helpers.d.ts +139 -0
- package/lib/policy/validation-helpers.js +276 -0
- package/lib/runtime/inbound-auth/custom-claim.js +1 -1
- package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +1 -1
- package/lib/runtime/observability.d.ts +105 -0
- package/lib/runtime/observability.js +317 -0
- package/lib/runtime/runtime-artifact.js +1 -1
- package/lib/runtime/runtime-base.js +1 -1
- package/lib/runtime/runtime-endpoint-base.js +1 -1
- package/lib/runtime/runtime-endpoint.js +1 -1
- package/lib/runtime/runtime.d.ts +17 -0
- package/lib/runtime/runtime.js +10 -2
- package/lib/tools/browser.js +2 -2
- package/lib/tools/code-interpreter.js +2 -2
- package/package.json +9 -9
- package/rosetta/default.ts-fixture +2 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { PolicyStatement } from './policy-statement';
|
|
2
|
+
/**
|
|
3
|
+
* Validation mode for Cedar policy definitions.
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
export declare class PolicyValidationMode {
|
|
7
|
+
/**
|
|
8
|
+
* Fail policy creation if any validation findings are detected.
|
|
9
|
+
* This is the safer default - catches policy errors early.
|
|
10
|
+
*/
|
|
11
|
+
static readonly FAIL_ON_ANY_FINDINGS: PolicyValidationMode;
|
|
12
|
+
/**
|
|
13
|
+
* Ignore all validation findings and create the policy anyway.
|
|
14
|
+
* Use with caution - may result in runtime authorization errors.
|
|
15
|
+
*/
|
|
16
|
+
static readonly IGNORE_ALL_FINDINGS: PolicyValidationMode;
|
|
17
|
+
/**
|
|
18
|
+
* The string value of the validation mode.
|
|
19
|
+
*/
|
|
20
|
+
readonly value: string;
|
|
21
|
+
constructor(value: string);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Options for adding a policy via PolicyEngine.addPolicy()
|
|
25
|
+
*/
|
|
26
|
+
export interface AddPolicyOptions {
|
|
27
|
+
/**
|
|
28
|
+
* Cedar policy statement (35-153,600 characters).
|
|
29
|
+
*
|
|
30
|
+
* You must specify either `definition` or `statement`, but not both.
|
|
31
|
+
*
|
|
32
|
+
* @default - Must provide either definition or statement
|
|
33
|
+
*/
|
|
34
|
+
readonly definition?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Type-safe Cedar policy statement built using PolicyStatement builder.
|
|
37
|
+
*
|
|
38
|
+
* Use this for a type-safe, form-like API to build Cedar policies without
|
|
39
|
+
* writing raw Cedar syntax. The builder validates at synthesis time.
|
|
40
|
+
*
|
|
41
|
+
* You must specify either `definition` or `statement`, but not both.
|
|
42
|
+
*
|
|
43
|
+
* @default - Must provide either definition or statement
|
|
44
|
+
*/
|
|
45
|
+
readonly statement?: PolicyStatement;
|
|
46
|
+
/**
|
|
47
|
+
* The name of the policy.
|
|
48
|
+
* Valid characters: a-z, A-Z, 0-9, _ (underscore)
|
|
49
|
+
* Must start with a letter, 1-48 characters
|
|
50
|
+
*
|
|
51
|
+
* @default - Auto-generated unique name
|
|
52
|
+
*/
|
|
53
|
+
readonly policyName?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Optional description for the policy (max 4,096 characters).
|
|
56
|
+
*
|
|
57
|
+
* @default - No description
|
|
58
|
+
*/
|
|
59
|
+
readonly description?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Validation mode for the policy.
|
|
62
|
+
*
|
|
63
|
+
* @default PolicyValidationMode.FAIL_ON_ANY_FINDINGS
|
|
64
|
+
*/
|
|
65
|
+
readonly validationMode?: PolicyValidationMode;
|
|
66
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PolicyValidationMode = void 0;
|
|
4
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
|
+
/**
|
|
6
|
+
* Validation mode for Cedar policy definitions.
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
class PolicyValidationMode {
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.PolicyValidationMode", version: "2.252.0-alpha.0" };
|
|
11
|
+
/**
|
|
12
|
+
* Fail policy creation if any validation findings are detected.
|
|
13
|
+
* This is the safer default - catches policy errors early.
|
|
14
|
+
*/
|
|
15
|
+
static FAIL_ON_ANY_FINDINGS = new PolicyValidationMode('FAIL_ON_ANY_FINDINGS');
|
|
16
|
+
/**
|
|
17
|
+
* Ignore all validation findings and create the policy anyway.
|
|
18
|
+
* Use with caution - may result in runtime authorization errors.
|
|
19
|
+
*/
|
|
20
|
+
static IGNORE_ALL_FINDINGS = new PolicyValidationMode('IGNORE_ALL_FINDINGS');
|
|
21
|
+
/**
|
|
22
|
+
* The string value of the validation mode.
|
|
23
|
+
*/
|
|
24
|
+
value;
|
|
25
|
+
constructor(value) {
|
|
26
|
+
this.value = value;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.PolicyValidationMode = PolicyValidationMode;
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicG9saWN5LXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQTs7O0dBR0c7QUFDSCxNQUFhLG9CQUFvQjs7SUFDL0I7OztPQUdHO0lBQ0ksTUFBTSxDQUFVLG9CQUFvQixHQUFHLElBQUksb0JBQW9CLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUUvRjs7O09BR0c7SUFDSSxNQUFNLENBQVUsbUJBQW1CLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRTdGOztPQUVHO0lBQ2EsS0FBSyxDQUFTO0lBRTlCLFlBQW1CLEtBQWE7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7O0FBcEJILG9EQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnLi9wb2xpY3ktc3RhdGVtZW50JztcblxuLyoqXG4gKiBWYWxpZGF0aW9uIG1vZGUgZm9yIENlZGFyIHBvbGljeSBkZWZpbml0aW9ucy5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBQb2xpY3lWYWxpZGF0aW9uTW9kZSB7XG4gIC8qKlxuICAgKiBGYWlsIHBvbGljeSBjcmVhdGlvbiBpZiBhbnkgdmFsaWRhdGlvbiBmaW5kaW5ncyBhcmUgZGV0ZWN0ZWQuXG4gICAqIFRoaXMgaXMgdGhlIHNhZmVyIGRlZmF1bHQgLSBjYXRjaGVzIHBvbGljeSBlcnJvcnMgZWFybHkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZBSUxfT05fQU5ZX0ZJTkRJTkdTID0gbmV3IFBvbGljeVZhbGlkYXRpb25Nb2RlKCdGQUlMX09OX0FOWV9GSU5ESU5HUycpO1xuXG4gIC8qKlxuICAgKiBJZ25vcmUgYWxsIHZhbGlkYXRpb24gZmluZGluZ3MgYW5kIGNyZWF0ZSB0aGUgcG9saWN5IGFueXdheS5cbiAgICogVXNlIHdpdGggY2F1dGlvbiAtIG1heSByZXN1bHQgaW4gcnVudGltZSBhdXRob3JpemF0aW9uIGVycm9ycy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSUdOT1JFX0FMTF9GSU5ESU5HUyA9IG5ldyBQb2xpY3lWYWxpZGF0aW9uTW9kZSgnSUdOT1JFX0FMTF9GSU5ESU5HUycpO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIHZhbHVlIG9mIHRoZSB2YWxpZGF0aW9uIG1vZGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFkZGluZyBhIHBvbGljeSB2aWEgUG9saWN5RW5naW5lLmFkZFBvbGljeSgpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkUG9saWN5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDZWRhciBwb2xpY3kgc3RhdGVtZW50ICgzNS0xNTMsNjAwIGNoYXJhY3RlcnMpLlxuICAgKlxuICAgKiBZb3UgbXVzdCBzcGVjaWZ5IGVpdGhlciBgZGVmaW5pdGlvbmAgb3IgYHN0YXRlbWVudGAsIGJ1dCBub3QgYm90aC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBNdXN0IHByb3ZpZGUgZWl0aGVyIGRlZmluaXRpb24gb3Igc3RhdGVtZW50XG4gICAqL1xuICByZWFkb25seSBkZWZpbml0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlLXNhZmUgQ2VkYXIgcG9saWN5IHN0YXRlbWVudCBidWlsdCB1c2luZyBQb2xpY3lTdGF0ZW1lbnQgYnVpbGRlci5cbiAgICpcbiAgICogVXNlIHRoaXMgZm9yIGEgdHlwZS1zYWZlLCBmb3JtLWxpa2UgQVBJIHRvIGJ1aWxkIENlZGFyIHBvbGljaWVzIHdpdGhvdXRcbiAgICogd3JpdGluZyByYXcgQ2VkYXIgc3ludGF4LiBUaGUgYnVpbGRlciB2YWxpZGF0ZXMgYXQgc3ludGhlc2lzIHRpbWUuXG4gICAqXG4gICAqIFlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGBkZWZpbml0aW9uYCBvciBgc3RhdGVtZW50YCwgYnV0IG5vdCBib3RoLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE11c3QgcHJvdmlkZSBlaXRoZXIgZGVmaW5pdGlvbiBvciBzdGF0ZW1lbnRcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRlbWVudD86IFBvbGljeVN0YXRlbWVudDtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBvbGljeS5cbiAgICogVmFsaWQgY2hhcmFjdGVyczogYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSlcbiAgICogTXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyLCAxLTQ4IGNoYXJhY3RlcnNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBdXRvLWdlbmVyYXRlZCB1bmlxdWUgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBwb2xpY3kgKG1heCA0LDA5NiBjaGFyYWN0ZXJzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRpb24gbW9kZSBmb3IgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQGRlZmF1bHQgUG9saWN5VmFsaWRhdGlvbk1vZGUuRkFJTF9PTl9BTllfRklORElOR1NcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRpb25Nb2RlPzogUG9saWN5VmFsaWRhdGlvbk1vZGU7XG59XG4iXX0=
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
2
|
+
import type { Construct } from 'constructs';
|
|
3
|
+
import type { IPolicy, PolicyAttributes } from './policy-base';
|
|
4
|
+
import { PolicyBase } from './policy-base';
|
|
5
|
+
import type { IPolicyEngine } from './policy-engine-base';
|
|
6
|
+
import type { PolicyStatement } from './policy-statement';
|
|
7
|
+
import { PolicyValidationMode } from './policy-types';
|
|
8
|
+
/**
|
|
9
|
+
* Properties for creating a Policy resource
|
|
10
|
+
*/
|
|
11
|
+
export interface PolicyProps {
|
|
12
|
+
/**
|
|
13
|
+
* The name of the policy.
|
|
14
|
+
* Valid characters: a-z, A-Z, 0-9, _ (underscore)
|
|
15
|
+
* Must start with a letter, 1-48 characters
|
|
16
|
+
* Pattern: ^[A-Za-z][A-Za-z0-9_]*$
|
|
17
|
+
*
|
|
18
|
+
* @default - Auto-generated unique name
|
|
19
|
+
*/
|
|
20
|
+
readonly policyName?: string;
|
|
21
|
+
/**
|
|
22
|
+
* The policy engine this policy belongs to.
|
|
23
|
+
* [disable-awslint:prefer-ref-interface]
|
|
24
|
+
*/
|
|
25
|
+
readonly policyEngine: IPolicyEngine;
|
|
26
|
+
/**
|
|
27
|
+
* Cedar policy statement.
|
|
28
|
+
* The authorization policy written in Cedar policy language.
|
|
29
|
+
*
|
|
30
|
+
* Cedar supports permit and forbid rules with conditions.
|
|
31
|
+
* The statement will be wrapped in a PolicyDefinition structure internally.
|
|
32
|
+
*
|
|
33
|
+
* Pass the raw Cedar statement as a string. For example:
|
|
34
|
+
* - "permit(principal, action, resource);"
|
|
35
|
+
* - "permit(principal in Group::\"Admins\", action == Action::\"InvokeModel\", resource) when { context.environment == \"production\" };"
|
|
36
|
+
*
|
|
37
|
+
* You must specify either `definition` or `statement`, but not both.
|
|
38
|
+
*
|
|
39
|
+
* @default - Must provide either definition or statement
|
|
40
|
+
*/
|
|
41
|
+
readonly definition?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Type-safe Cedar policy statement built using PolicyStatement builder.
|
|
44
|
+
*
|
|
45
|
+
* Use this for a type-safe, form-like API to build Cedar policies without
|
|
46
|
+
* writing raw Cedar syntax. The builder validates at synthesis time.
|
|
47
|
+
*
|
|
48
|
+
* You must specify either `definition` or `statement`, but not both.
|
|
49
|
+
*
|
|
50
|
+
* @default - Must provide either definition or statement
|
|
51
|
+
*/
|
|
52
|
+
readonly statement?: PolicyStatement;
|
|
53
|
+
/**
|
|
54
|
+
* Optional description for the policy.
|
|
55
|
+
* Maximum length of 4096.
|
|
56
|
+
* @default - No description
|
|
57
|
+
*/
|
|
58
|
+
readonly description?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Validation mode for the policy.
|
|
61
|
+
* Controls how Cedar analyzer validation findings are handled.
|
|
62
|
+
*
|
|
63
|
+
* @default PolicyValidationMode.FAIL_ON_ANY_FINDINGS
|
|
64
|
+
*/
|
|
65
|
+
readonly validationMode?: PolicyValidationMode;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Individual Cedar policy defining what agents can access.
|
|
69
|
+
* Policies use Cedar language to specify precise access control rules
|
|
70
|
+
* that are evaluated deterministically by the PolicyEngine.
|
|
71
|
+
*
|
|
72
|
+
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/policy.html
|
|
73
|
+
* @resource AWS::BedrockAgentCore::Policy
|
|
74
|
+
*/
|
|
75
|
+
export declare class Policy extends PolicyBase {
|
|
76
|
+
/** Uniquely identifies this class. */
|
|
77
|
+
static readonly PROPERTY_INJECTION_ID: string;
|
|
78
|
+
/**
|
|
79
|
+
* Creates a Policy reference from an existing policy's attributes.
|
|
80
|
+
*
|
|
81
|
+
* @param scope - The construct scope
|
|
82
|
+
* @param id - Identifier of the construct
|
|
83
|
+
* @param attrs - Attributes of the existing policy
|
|
84
|
+
* @returns An IPolicy reference to the existing policy
|
|
85
|
+
*/
|
|
86
|
+
static fromPolicyAttributes(scope: Construct, id: string, attrs: PolicyAttributes): IPolicy;
|
|
87
|
+
/**
|
|
88
|
+
* The ARN of the policy resource.
|
|
89
|
+
* @attribute
|
|
90
|
+
*/
|
|
91
|
+
readonly policyArn: string;
|
|
92
|
+
/**
|
|
93
|
+
* The name of the policy.
|
|
94
|
+
*
|
|
95
|
+
* [disable-awslint:attribute-tag]
|
|
96
|
+
*/
|
|
97
|
+
readonly policyName: string;
|
|
98
|
+
/**
|
|
99
|
+
* The ID of the policy.
|
|
100
|
+
* @attribute
|
|
101
|
+
*/
|
|
102
|
+
readonly policyId: string;
|
|
103
|
+
/**
|
|
104
|
+
* The policy engine this policy belongs to.
|
|
105
|
+
*
|
|
106
|
+
* [disable-awslint:attribute-tag]
|
|
107
|
+
*/
|
|
108
|
+
readonly policyEngine: IPolicyEngine;
|
|
109
|
+
/**
|
|
110
|
+
* The Cedar policy definition.
|
|
111
|
+
*/
|
|
112
|
+
readonly definition: string;
|
|
113
|
+
/**
|
|
114
|
+
* The description of the policy.
|
|
115
|
+
*/
|
|
116
|
+
readonly description?: string;
|
|
117
|
+
/**
|
|
118
|
+
* The validation mode for the policy.
|
|
119
|
+
*/
|
|
120
|
+
readonly validationMode?: PolicyValidationMode;
|
|
121
|
+
/**
|
|
122
|
+
* The principal to grant permissions to.
|
|
123
|
+
*/
|
|
124
|
+
readonly grantPrincipal: iam.IPrincipal;
|
|
125
|
+
private readonly __resource;
|
|
126
|
+
constructor(scope: Construct, id: string, props: PolicyProps);
|
|
127
|
+
}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
3
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
4
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
5
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
6
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
7
|
+
var _, done = false;
|
|
8
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
9
|
+
var context = {};
|
|
10
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
11
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
12
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
13
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
14
|
+
if (kind === "accessor") {
|
|
15
|
+
if (result === void 0) continue;
|
|
16
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
17
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
18
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
19
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
20
|
+
}
|
|
21
|
+
else if (_ = accept(result)) {
|
|
22
|
+
if (kind === "field") initializers.unshift(_);
|
|
23
|
+
else descriptor[key] = _;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
|
+
done = true;
|
|
28
|
+
};
|
|
29
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
30
|
+
var useValue = arguments.length > 2;
|
|
31
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
32
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
33
|
+
}
|
|
34
|
+
return useValue ? value : void 0;
|
|
35
|
+
};
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.Policy = void 0;
|
|
38
|
+
const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
|
|
39
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
40
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
41
|
+
const aws_bedrockagentcore_1 = require("aws-cdk-lib/aws-bedrockagentcore");
|
|
42
|
+
const iam = require("aws-cdk-lib/aws-iam");
|
|
43
|
+
const errors_1 = require("aws-cdk-lib/core/lib/errors");
|
|
44
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
45
|
+
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
46
|
+
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
47
|
+
const policy_base_1 = require("./policy-base");
|
|
48
|
+
const policy_types_1 = require("./policy-types");
|
|
49
|
+
const validation_helpers_1 = require("./validation-helpers");
|
|
50
|
+
/**
|
|
51
|
+
* Individual Cedar policy defining what agents can access.
|
|
52
|
+
* Policies use Cedar language to specify precise access control rules
|
|
53
|
+
* that are evaluated deterministically by the PolicyEngine.
|
|
54
|
+
*
|
|
55
|
+
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/policy.html
|
|
56
|
+
* @resource AWS::BedrockAgentCore::Policy
|
|
57
|
+
*/
|
|
58
|
+
let Policy = (() => {
|
|
59
|
+
let _classDecorators = [prop_injectable_1.propertyInjectable];
|
|
60
|
+
let _classDescriptor;
|
|
61
|
+
let _classExtraInitializers = [];
|
|
62
|
+
let _classThis;
|
|
63
|
+
let _classSuper = policy_base_1.PolicyBase;
|
|
64
|
+
var Policy = class extends _classSuper {
|
|
65
|
+
static { _classThis = this; }
|
|
66
|
+
static {
|
|
67
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
68
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
69
|
+
Policy = _classThis = _classDescriptor.value;
|
|
70
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
71
|
+
}
|
|
72
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Policy", version: "2.252.0-alpha.0" };
|
|
73
|
+
/** Uniquely identifies this class. */
|
|
74
|
+
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.Policy';
|
|
75
|
+
/**
|
|
76
|
+
* Creates a Policy reference from an existing policy's attributes.
|
|
77
|
+
*
|
|
78
|
+
* @param scope - The construct scope
|
|
79
|
+
* @param id - Identifier of the construct
|
|
80
|
+
* @param attrs - Attributes of the existing policy
|
|
81
|
+
* @returns An IPolicy reference to the existing policy
|
|
82
|
+
*/
|
|
83
|
+
static fromPolicyAttributes(scope, id, attrs) {
|
|
84
|
+
try {
|
|
85
|
+
jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_PolicyAttributes(attrs);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
89
|
+
Error.captureStackTrace(error, this.fromPolicyAttributes);
|
|
90
|
+
}
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
class Import extends policy_base_1.PolicyBase {
|
|
94
|
+
policyArn = attrs.policyArn;
|
|
95
|
+
policyId = aws_cdk_lib_1.Arn.split(attrs.policyArn, aws_cdk_lib_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
|
|
96
|
+
policyName = this.policyId;
|
|
97
|
+
description = undefined;
|
|
98
|
+
validationMode = undefined;
|
|
99
|
+
policyEngine = attrs.policyEngine;
|
|
100
|
+
grantPrincipal = new iam.UnknownPrincipal({ resource: this });
|
|
101
|
+
}
|
|
102
|
+
return new Import(scope, id);
|
|
103
|
+
}
|
|
104
|
+
// ------------------------------------------------------
|
|
105
|
+
// Attributes
|
|
106
|
+
// ------------------------------------------------------
|
|
107
|
+
/**
|
|
108
|
+
* The ARN of the policy resource.
|
|
109
|
+
* @attribute
|
|
110
|
+
*/
|
|
111
|
+
policyArn;
|
|
112
|
+
/**
|
|
113
|
+
* The name of the policy.
|
|
114
|
+
*
|
|
115
|
+
* [disable-awslint:attribute-tag]
|
|
116
|
+
*/
|
|
117
|
+
policyName;
|
|
118
|
+
/**
|
|
119
|
+
* The ID of the policy.
|
|
120
|
+
* @attribute
|
|
121
|
+
*/
|
|
122
|
+
policyId;
|
|
123
|
+
/**
|
|
124
|
+
* The policy engine this policy belongs to.
|
|
125
|
+
*
|
|
126
|
+
* [disable-awslint:attribute-tag]
|
|
127
|
+
*/
|
|
128
|
+
policyEngine;
|
|
129
|
+
/**
|
|
130
|
+
* The Cedar policy definition.
|
|
131
|
+
*/
|
|
132
|
+
definition;
|
|
133
|
+
/**
|
|
134
|
+
* The description of the policy.
|
|
135
|
+
*/
|
|
136
|
+
description;
|
|
137
|
+
/**
|
|
138
|
+
* The validation mode for the policy.
|
|
139
|
+
*/
|
|
140
|
+
validationMode;
|
|
141
|
+
/**
|
|
142
|
+
* The principal to grant permissions to.
|
|
143
|
+
*/
|
|
144
|
+
grantPrincipal;
|
|
145
|
+
// ------------------------------------------------------
|
|
146
|
+
// Internal Only
|
|
147
|
+
// ------------------------------------------------------
|
|
148
|
+
__resource;
|
|
149
|
+
// ------------------------------------------------------
|
|
150
|
+
// CONSTRUCTOR
|
|
151
|
+
// ------------------------------------------------------
|
|
152
|
+
constructor(scope, id, props) {
|
|
153
|
+
super(scope, id, {
|
|
154
|
+
// Maximum name length of 48 characters
|
|
155
|
+
physicalName: props?.policyName ??
|
|
156
|
+
aws_cdk_lib_1.Lazy.string({
|
|
157
|
+
produce: () => aws_cdk_lib_1.Names.uniqueResourceName(this, { maxLength: 48 }),
|
|
158
|
+
}),
|
|
159
|
+
});
|
|
160
|
+
try {
|
|
161
|
+
jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_PolicyProps(props);
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
165
|
+
Error.captureStackTrace(error, Policy);
|
|
166
|
+
}
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
// Enhanced CDK Analytics Telemetry
|
|
170
|
+
(0, metadata_resource_1.addConstructMetadata)(this, props);
|
|
171
|
+
// ------------------------------------------------------
|
|
172
|
+
// Validate definition vs statement
|
|
173
|
+
// ------------------------------------------------------
|
|
174
|
+
if (!props.definition && !props.statement) {
|
|
175
|
+
throw new errors_1.ValidationError((0, helpers_internal_1.lit) `PolicyDefinitionRequired`, `Policy '${this.physicalName}' must specify either 'definition' (raw Cedar string) or 'statement' (PolicyStatement builder), but neither was provided.`, this);
|
|
176
|
+
}
|
|
177
|
+
if (props.definition && props.statement) {
|
|
178
|
+
throw new errors_1.ValidationError((0, helpers_internal_1.lit) `PolicyDefinitionConflict`, `Policy '${this.physicalName}' must specify either 'definition' OR 'statement', but not both. ` +
|
|
179
|
+
'Use definition for raw Cedar strings, or statement for the type-safe builder.', this);
|
|
180
|
+
}
|
|
181
|
+
// ------------------------------------------------------
|
|
182
|
+
// Set properties and defaults
|
|
183
|
+
// ------------------------------------------------------
|
|
184
|
+
this.policyName = this.physicalName;
|
|
185
|
+
this.policyEngine = props.policyEngine;
|
|
186
|
+
this.definition = props.statement ? props.statement.toCedar() : props.definition;
|
|
187
|
+
this.description = props.description;
|
|
188
|
+
this.validationMode = props.validationMode ?? policy_types_1.PolicyValidationMode.FAIL_ON_ANY_FINDINGS;
|
|
189
|
+
this.grantPrincipal = new iam.ServicePrincipal('bedrock-agentcore.amazonaws.com');
|
|
190
|
+
// ------------------------------------------------------
|
|
191
|
+
// Validations
|
|
192
|
+
// ------------------------------------------------------
|
|
193
|
+
(0, validation_helpers_1.throwIfInvalidPolicyName)(this.policyName, this);
|
|
194
|
+
(0, validation_helpers_1.throwIfInvalidPolicyDefinition)(this.definition, this);
|
|
195
|
+
if (this.description) {
|
|
196
|
+
(0, validation_helpers_1.throwIfInvalidDescription)(this.description, this);
|
|
197
|
+
}
|
|
198
|
+
// ------------------------------------------------------
|
|
199
|
+
// CFN Props
|
|
200
|
+
// ------------------------------------------------------
|
|
201
|
+
const cfnProps = {
|
|
202
|
+
name: this.policyName,
|
|
203
|
+
policyEngineId: this.policyEngine.policyEngineId,
|
|
204
|
+
definition: {
|
|
205
|
+
cedar: {
|
|
206
|
+
statement: this.definition,
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
description: this.description,
|
|
210
|
+
validationMode: this.validationMode?.value,
|
|
211
|
+
};
|
|
212
|
+
this.__resource = new aws_bedrockagentcore_1.CfnPolicy(this, 'Resource', cfnProps);
|
|
213
|
+
// Create dependency ONLY on the PolicyEngine's CFN resource to avoid circular dependencies with the PolicyEngine construct
|
|
214
|
+
this.__resource.node.addDependency(this.policyEngine.node.defaultChild);
|
|
215
|
+
this.policyId = this.__resource.attrPolicyId;
|
|
216
|
+
this.policyArn = this.__resource.attrPolicyArn;
|
|
217
|
+
}
|
|
218
|
+
static {
|
|
219
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
return Policy = _classThis;
|
|
223
|
+
})();
|
|
224
|
+
exports.Policy = Policy;
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEwRDtBQUUxRCwyRUFBNkQ7QUFDN0QsMkNBQTJDO0FBQzNDLHdEQUE4RDtBQUM5RCw0RUFBNEQ7QUFDNUQsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUkxRSwrQ0FBMkM7QUFHM0MsaURBQXNEO0FBQ3RELDZEQUEySDtBQW1FM0g7Ozs7Ozs7R0FPRztJQUVVLE1BQU07NEJBRGxCLG9DQUFrQjs7OztzQkFDUyx3QkFBVTtzQkFBbEIsU0FBUSxXQUFVOzs7O1lBQXRDLDZLQXFLQzs7Ozs7UUFwS0Msc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyw2Q0FBNkMsQ0FBQztRQUVyRzs7Ozs7OztXQU9HO1FBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXVCOzs7Ozs7Ozs7O1lBQ3RGLE1BQU0sTUFBTyxTQUFRLHdCQUFVO2dCQUNiLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUM1QixRQUFRLEdBQUcsaUJBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSx1QkFBUyxDQUFDLG1CQUFtQixDQUFDLENBQUMsWUFBYSxDQUFDO2dCQUNuRixVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDM0IsV0FBVyxHQUFHLFNBQVMsQ0FBQztnQkFDeEIsY0FBYyxHQUFHLFNBQVMsQ0FBQztnQkFDM0IsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7Z0JBQ2xDLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQy9FO1lBRUQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFB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QUMsQ0FBQztZQUNwRCxDQUFDO1lBRUQseURBQXlEO1lBQ3pELFlBQVk7WUFDWix5REFBeUQ7WUFDekQsTUFBTSxRQUFRLEdBQW1CO2dCQUMvQixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQ3JCLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWM7Z0JBQ2hELFVBQVUsRUFBRTtvQkFDVixLQUFLLEVBQUU7d0JBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO3FCQUMzQjtpQkFDRjtnQkFDRCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUs7YUFDM0MsQ0FBQztZQUVGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQ0FBUyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFNUQsMkhBQTJIO1lBQzNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFhLENBQUMsQ0FBQztZQUV6RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7U0FDaEQ7O1lBcEtVLHVEQUFNOzs7OztBQUFOLHdCQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJuLCBBcm5Gb3JtYXQsIExhenksIE5hbWVzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBDZm5Qb2xpY3lQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCB7IENmblBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2Vycm9ycyc7XG5pbXBvcnQgeyBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG4vLyBJbnRlcm5hbCBpbXBvcnRzXG5pbXBvcnQgdHlwZSB7IElQb2xpY3ksIFBvbGljeUF0dHJpYnV0ZXMgfSBmcm9tICcuL3BvbGljeS1iYXNlJztcbmltcG9ydCB7IFBvbGljeUJhc2UgfSBmcm9tICcuL3BvbGljeS1iYXNlJztcbmltcG9ydCB0eXBlIHsgSVBvbGljeUVuZ2luZSB9IGZyb20gJy4vcG9saWN5LWVuZ2luZS1iYXNlJztcbmltcG9ydCB0eXBlIHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnLi9wb2xpY3ktc3RhdGVtZW50JztcbmltcG9ydCB7IFBvbGljeVZhbGlkYXRpb25Nb2RlIH0gZnJvbSAnLi9wb2xpY3ktdHlwZXMnO1xuaW1wb3J0IHsgdGhyb3dJZkludmFsaWRQb2xpY3lOYW1lLCB0aHJvd0lmSW52YWxpZERlc2NyaXB0aW9uLCB0aHJvd0lmSW52YWxpZFBvbGljeURlZmluaXRpb24gfSBmcm9tICcuL3ZhbGlkYXRpb24taGVscGVycyc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBQb2xpY3kgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb2xpY3lQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcG9saWN5LlxuICAgKiBWYWxpZCBjaGFyYWN0ZXJzOiBhLXosIEEtWiwgMC05LCBfICh1bmRlcnNjb3JlKVxuICAgKiBNdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIsIDEtNDggY2hhcmFjdGVyc1xuICAgKiBQYXR0ZXJuOiBeW0EtWmEtel1bQS1aYS16MC05X10qJFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEF1dG8tZ2VuZXJhdGVkIHVuaXF1ZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBwb2xpY3lOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9saWN5IGVuZ2luZSB0aGlzIHBvbGljeSBiZWxvbmdzIHRvLlxuICAgKiBbZGlzYWJsZS1hd3NsaW50OnByZWZlci1yZWYtaW50ZXJmYWNlXVxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5RW5naW5lOiBJUG9saWN5RW5naW5lO1xuXG4gIC8qKlxuICAgKiBDZWRhciBwb2xpY3kgc3RhdGVtZW50LlxuICAgKiBUaGUgYXV0aG9yaXphdGlvbiBwb2xpY3kgd3JpdHRlbiBpbiBDZWRhciBwb2xpY3kgbGFuZ3VhZ2UuXG4gICAqXG4gICAqIENlZGFyIHN1cHBvcnRzIHBlcm1pdCBhbmQgZm9yYmlkIHJ1bGVzIHdpdGggY29uZGl0aW9ucy5cbiAgICogVGhlIHN0YXRlbWVudCB3aWxsIGJlIHdyYXBwZWQgaW4gYSBQb2xpY3lEZWZpbml0aW9uIHN0cnVjdHVyZSBpbnRlcm5hbGx5LlxuICAgKlxuICAgKiBQYXNzIHRoZSByYXcgQ2VkYXIgc3RhdGVtZW50IGFzIGEgc3RyaW5nLiBGb3IgZXhhbXBsZTpcbiAgICogLSBcInBlcm1pdChwcmluY2lwYWwsIGFjdGlvbiwgcmVzb3VyY2UpO1wiXG4gICAqIC0gXCJwZXJtaXQocHJpbmNpcGFsIGluIEdyb3VwOjpcXFwiQWRtaW5zXFxcIiwgYWN0aW9uID09IEFjdGlvbjo6XFxcIkludm9rZU1vZGVsXFxcIiwgcmVzb3VyY2UpIHdoZW4geyBjb250ZXh0LmVudmlyb25tZW50ID09IFxcXCJwcm9kdWN0aW9uXFxcIiB9O1wiXG4gICAqXG4gICAqIFlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGBkZWZpbml0aW9uYCBvciBgc3RhdGVtZW50YCwgYnV0IG5vdCBib3RoLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE11c3QgcHJvdmlkZSBlaXRoZXIgZGVmaW5pdGlvbiBvciBzdGF0ZW1lbnRcbiAgICovXG4gIHJlYWRvbmx5IGRlZmluaXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUtc2FmZSBDZWRhciBwb2xpY3kgc3RhdGVtZW50IGJ1aWx0IHVzaW5nIFBvbGljeVN0YXRlbWVudCBidWlsZGVyLlxuICAgKlxuICAgKiBVc2UgdGhpcyBmb3IgYSB0eXBlLXNhZmUsIGZvcm0tbGlrZSBBUEkgdG8gYnVpbGQgQ2VkYXIgcG9saWNpZXMgd2l0aG91dFxuICAgKiB3cml0aW5nIHJhdyBDZWRhciBzeW50YXguIFRoZSBidWlsZGVyIHZhbGlkYXRlcyBhdCBzeW50aGVzaXMgdGltZS5cbiAgICpcbiAgICogWW91IG11c3Qgc3BlY2lmeSBlaXRoZXIgYGRlZmluaXRpb25gIG9yIGBzdGF0ZW1lbnRgLCBidXQgbm90IGJvdGguXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTXVzdCBwcm92aWRlIGVpdGhlciBkZWZpbml0aW9uIG9yIHN0YXRlbWVudFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVtZW50PzogUG9saWN5U3RhdGVtZW50O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIHBvbGljeS5cbiAgICogTWF4aW11bSBsZW5ndGggb2YgNDA5Ni5cbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRpb24gbW9kZSBmb3IgdGhlIHBvbGljeS5cbiAgICogQ29udHJvbHMgaG93IENlZGFyIGFuYWx5emVyIHZhbGlkYXRpb24gZmluZGluZ3MgYXJlIGhhbmRsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFBvbGljeVZhbGlkYXRpb25Nb2RlLkZBSUxfT05fQU5ZX0ZJTkRJTkdTXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0aW9uTW9kZT86IFBvbGljeVZhbGlkYXRpb25Nb2RlO1xufVxuXG4vKipcbiAqIEluZGl2aWR1YWwgQ2VkYXIgcG9saWN5IGRlZmluaW5nIHdoYXQgYWdlbnRzIGNhbiBhY2Nlc3MuXG4gKiBQb2xpY2llcyB1c2UgQ2VkYXIgbGFuZ3VhZ2UgdG8gc3BlY2lmeSBwcmVjaXNlIGFjY2VzcyBjb250cm9sIHJ1bGVzXG4gKiB0aGF0IGFyZSBldmFsdWF0ZWQgZGV0ZXJtaW5pc3RpY2FsbHkgYnkgdGhlIFBvbGljeUVuZ2luZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvcG9saWN5Lmh0bWxcbiAqIEByZXNvdXJjZSBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OlBvbGljeVxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgUG9saWN5IGV4dGVuZHMgUG9saWN5QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWJlZHJvY2stYWdlbnRjb3JlLWFscGhhLlBvbGljeSc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBQb2xpY3kgcmVmZXJlbmNlIGZyb20gYW4gZXhpc3RpbmcgcG9saWN5J3MgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgLSBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGF0dHJzIC0gQXR0cmlidXRlcyBvZiB0aGUgZXhpc3RpbmcgcG9saWN5XG4gICAqIEByZXR1cm5zIEFuIElQb2xpY3kgcmVmZXJlbmNlIHRvIHRoZSBleGlzdGluZyBwb2xpY3lcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBvbGljeUF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFBvbGljeUF0dHJpYnV0ZXMpOiBJUG9saWN5IHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBQb2xpY3lCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwb2xpY3lBcm4gPSBhdHRycy5wb2xpY3lBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcG9saWN5SWQgPSBBcm4uc3BsaXQoYXR0cnMucG9saWN5QXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lITtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwb2xpY3lOYW1lID0gdGhpcy5wb2xpY3lJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSB2YWxpZGF0aW9uTW9kZSA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwb2xpY3lFbmdpbmUgPSBhdHRycy5wb2xpY3lFbmdpbmU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWwgPSBuZXcgaWFtLlVua25vd25QcmluY2lwYWwoeyByZXNvdXJjZTogdGhpcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEF0dHJpYnV0ZXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHBvbGljeSByZXNvdXJjZS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvbGljeUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50OmF0dHJpYnV0ZS10YWddXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcG9saWN5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHBvbGljeS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvbGljeUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwb2xpY3kgZW5naW5lIHRoaXMgcG9saWN5IGJlbG9uZ3MgdG8uXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6YXR0cmlidXRlLXRhZ11cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwb2xpY3lFbmdpbmU6IElQb2xpY3lFbmdpbmU7XG5cbiAgLyoqXG4gICAqIFRoZSBDZWRhciBwb2xpY3kgZGVmaW5pdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZWZpbml0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcG9saWN5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsaWRhdGlvbiBtb2RlIGZvciB0aGUgcG9saWN5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbGlkYXRpb25Nb2RlPzogUG9saWN5VmFsaWRhdGlvbk1vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmluY2lwYWwgdG8gZ3JhbnQgcGVybWlzc2lvbnMgdG8uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IGlhbS5JUHJpbmNpcGFsO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBJbnRlcm5hbCBPbmx5XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBwcml2YXRlIHJlYWRvbmx5IF9fcmVzb3VyY2U6IENmblBvbGljeTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gQ09OU1RSVUNUT1JcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQb2xpY3lQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLy8gTWF4aW11bSBuYW1lIGxlbmd0aCBvZiA0OCBjaGFyYWN0ZXJzXG4gICAgICBwaHlzaWNhbE5hbWU6XG4gICAgICAgIHByb3BzPy5wb2xpY3lOYW1lID8/XG4gICAgICAgIExhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDQ4IH0pLFxuICAgICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVmFsaWRhdGUgZGVmaW5pdGlvbiB2cyBzdGF0ZW1lbnRcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBpZiAoIXByb3BzLmRlZmluaXRpb24gJiYgIXByb3BzLnN0YXRlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YFBvbGljeURlZmluaXRpb25SZXF1aXJlZGAsXG4gICAgICAgIGBQb2xpY3kgJyR7dGhpcy5waHlzaWNhbE5hbWV9JyBtdXN0IHNwZWNpZnkgZWl0aGVyICdkZWZpbml0aW9uJyAocmF3IENlZGFyIHN0cmluZykgb3IgJ3N0YXRlbWVudCcgKFBvbGljeVN0YXRlbWVudCBidWlsZGVyKSwgYnV0IG5laXRoZXIgd2FzIHByb3ZpZGVkLmAsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5kZWZpbml0aW9uICYmIHByb3BzLnN0YXRlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YFBvbGljeURlZmluaXRpb25Db25mbGljdGAsXG4gICAgICAgIGBQb2xpY3kgJyR7dGhpcy5waHlzaWNhbE5hbWV9JyBtdXN0IHNwZWNpZnkgZWl0aGVyICdkZWZpbml0aW9uJyBPUiAnc3RhdGVtZW50JywgYnV0IG5vdCBib3RoLiBgICtcbiAgICAgICAgJ1VzZSBkZWZpbml0aW9uIGZvciByYXcgQ2VkYXIgc3RyaW5ncywgb3Igc3RhdGVtZW50IGZvciB0aGUgdHlwZS1zYWZlIGJ1aWxkZXIuJyxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gU2V0IHByb3BlcnRpZXMgYW5kIGRlZmF1bHRzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdGhpcy5wb2xpY3lOYW1lID0gdGhpcy5waHlzaWNhbE5hbWU7XG4gICAgdGhpcy5wb2xpY3lFbmdpbmUgPSBwcm9wcy5wb2xpY3lFbmdpbmU7XG5cbiAgICB0aGlzLmRlZmluaXRpb24gPSBwcm9wcy5zdGF0ZW1lbnQgPyBwcm9wcy5zdGF0ZW1lbnQudG9DZWRhcigpIDogcHJvcHMuZGVmaW5pdGlvbiE7XG5cbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gcHJvcHMuZGVzY3JpcHRpb247XG4gICAgdGhpcy52YWxpZGF0aW9uTW9kZSA9IHByb3BzLnZhbGlkYXRpb25Nb2RlID8/IFBvbGljeVZhbGlkYXRpb25Nb2RlLkZBSUxfT05fQU5ZX0ZJTkRJTkdTO1xuXG4gICAgdGhpcy5ncmFudFByaW5jaXBhbCA9IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYmVkcm9jay1hZ2VudGNvcmUuYW1hem9uYXdzLmNvbScpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVmFsaWRhdGlvbnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHRocm93SWZJbnZhbGlkUG9saWN5TmFtZSh0aGlzLnBvbGljeU5hbWUsIHRoaXMpO1xuXG4gICAgdGhyb3dJZkludmFsaWRQb2xpY3lEZWZpbml0aW9uKHRoaXMuZGVmaW5pdGlvbiwgdGhpcyk7XG5cbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgdGhyb3dJZkludmFsaWREZXNjcmlwdGlvbih0aGlzLmRlc2NyaXB0aW9uLCB0aGlzKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBDRk4gUHJvcHNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBjZm5Qcm9wczogQ2ZuUG9saWN5UHJvcHMgPSB7XG4gICAgICBuYW1lOiB0aGlzLnBvbGljeU5hbWUsXG4gICAgICBwb2xpY3lFbmdpbmVJZDogdGhpcy5wb2xpY3lFbmdpbmUucG9saWN5RW5naW5lSWQsXG4gICAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGNlZGFyOiB7XG4gICAgICAgICAgc3RhdGVtZW50OiB0aGlzLmRlZmluaXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICB2YWxpZGF0aW9uTW9kZTogdGhpcy52YWxpZGF0aW9uTW9kZT8udmFsdWUsXG4gICAgfTtcblxuICAgIHRoaXMuX19yZXNvdXJjZSA9IG5ldyBDZm5Qb2xpY3kodGhpcywgJ1Jlc291cmNlJywgY2ZuUHJvcHMpO1xuXG4gICAgLy8gQ3JlYXRlIGRlcGVuZGVuY3kgT05MWSBvbiB0aGUgUG9saWN5RW5naW5lJ3MgQ0ZOIHJlc291cmNlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB3aXRoIHRoZSBQb2xpY3lFbmdpbmUgY29uc3RydWN0XG4gICAgdGhpcy5fX3Jlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLnBvbGljeUVuZ2luZS5ub2RlLmRlZmF1bHRDaGlsZCEpO1xuXG4gICAgdGhpcy5wb2xpY3lJZCA9IHRoaXMuX19yZXNvdXJjZS5hdHRyUG9saWN5SWQ7XG4gICAgdGhpcy5wb2xpY3lBcm4gPSB0aGlzLl9fcmVzb3VyY2UuYXR0clBvbGljeUFybjtcbiAgfVxufVxuXG4iXX0=
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { IConstruct } from 'constructs';
|
|
2
|
+
/**
|
|
3
|
+
* Validation constants for PolicyEngine
|
|
4
|
+
*/
|
|
5
|
+
export declare const POLICY_ENGINE_NAME_MIN_LENGTH = 1;
|
|
6
|
+
export declare const POLICY_ENGINE_NAME_MAX_LENGTH = 48;
|
|
7
|
+
export declare const POLICY_ENGINE_NAME_PATTERN: RegExp;
|
|
8
|
+
/**
|
|
9
|
+
* Validation constants for Policy
|
|
10
|
+
*/
|
|
11
|
+
export declare const POLICY_NAME_MIN_LENGTH = 1;
|
|
12
|
+
export declare const POLICY_NAME_MAX_LENGTH = 48;
|
|
13
|
+
export declare const POLICY_NAME_PATTERN: RegExp;
|
|
14
|
+
/**
|
|
15
|
+
* Validation constants for Cedar policy definitions
|
|
16
|
+
*/
|
|
17
|
+
export declare const POLICY_DEFINITION_MIN_LENGTH = 35;
|
|
18
|
+
export declare const POLICY_DEFINITION_MAX_LENGTH = 153600;
|
|
19
|
+
/**
|
|
20
|
+
* Validation constants for descriptions
|
|
21
|
+
*/
|
|
22
|
+
export declare const DESCRIPTION_MAX_LENGTH = 4096;
|
|
23
|
+
/**
|
|
24
|
+
* Validation constants for tags
|
|
25
|
+
*/
|
|
26
|
+
export declare const MAX_TAGS = 50;
|
|
27
|
+
export declare const TAG_KEY_MIN_LENGTH = 1;
|
|
28
|
+
export declare const TAG_KEY_MAX_LENGTH = 128;
|
|
29
|
+
export declare const TAG_VALUE_MAX_LENGTH = 256;
|
|
30
|
+
export declare const TAG_KEY_PATTERN: RegExp;
|
|
31
|
+
export declare const TAG_VALUE_PATTERN: RegExp;
|
|
32
|
+
/**
|
|
33
|
+
* Validates a policy engine name.
|
|
34
|
+
* Names must:
|
|
35
|
+
* - Start with a letter (a-z, A-Z)
|
|
36
|
+
* - Contain only letters, numbers, and underscores
|
|
37
|
+
* - Be between 1 and 48 characters
|
|
38
|
+
*
|
|
39
|
+
* @param name - The policy engine name to validate
|
|
40
|
+
* @param scope - The construct scope for error reporting (optional)
|
|
41
|
+
* @returns Array of validation error messages, empty if valid
|
|
42
|
+
*/
|
|
43
|
+
export declare function validatePolicyEngineName(name: string, scope?: IConstruct): string[];
|
|
44
|
+
/**
|
|
45
|
+
* Validates a policy name.
|
|
46
|
+
* Names must:
|
|
47
|
+
* - Start with a letter (a-z, A-Z)
|
|
48
|
+
* - Contain only letters, numbers, and underscores
|
|
49
|
+
* - Be between 1 and 48 characters
|
|
50
|
+
*
|
|
51
|
+
* @param name - The policy name to validate
|
|
52
|
+
* @param scope - The construct scope for error reporting (optional)
|
|
53
|
+
* @returns Array of validation error messages, empty if valid
|
|
54
|
+
*/
|
|
55
|
+
export declare function validatePolicyName(name: string, scope?: IConstruct): string[];
|
|
56
|
+
/**
|
|
57
|
+
* Validates a Cedar policy definition string.
|
|
58
|
+
* Definitions must be between 35 and 153,600 characters.
|
|
59
|
+
*
|
|
60
|
+
* @param definition - The Cedar policy definition to validate
|
|
61
|
+
* @param scope - The construct scope for error reporting (optional)
|
|
62
|
+
* @returns Array of validation error messages, empty if valid
|
|
63
|
+
*/
|
|
64
|
+
export declare function validatePolicyDefinition(definition: string, scope?: IConstruct): string[];
|
|
65
|
+
/**
|
|
66
|
+
* Validates a description string.
|
|
67
|
+
* Descriptions must not exceed 4,096 characters.
|
|
68
|
+
*
|
|
69
|
+
* @param description - The description to validate
|
|
70
|
+
* @param scope - The construct scope for error reporting (optional)
|
|
71
|
+
* @returns Array of validation error messages, empty if valid
|
|
72
|
+
*/
|
|
73
|
+
export declare function validateDescription(description: string, scope?: IConstruct): string[];
|
|
74
|
+
/**
|
|
75
|
+
* Validates a policy engine name and throws if invalid.
|
|
76
|
+
*
|
|
77
|
+
* @param name - The policy engine name to validate
|
|
78
|
+
* @param scope - The construct scope for error reporting (optional)
|
|
79
|
+
* @returns The validated name
|
|
80
|
+
* @throws ValidationError if validation fails
|
|
81
|
+
*/
|
|
82
|
+
export declare function throwIfInvalidPolicyEngineName(name: string, scope?: IConstruct): string;
|
|
83
|
+
/**
|
|
84
|
+
* Validates a policy name and throws if invalid.
|
|
85
|
+
*
|
|
86
|
+
* @param name - The policy name to validate
|
|
87
|
+
* @param scope - The construct scope for error reporting (optional)
|
|
88
|
+
* @returns The validated name
|
|
89
|
+
* @throws ValidationError if validation fails
|
|
90
|
+
*/
|
|
91
|
+
export declare function throwIfInvalidPolicyName(name: string, scope?: IConstruct): string;
|
|
92
|
+
/**
|
|
93
|
+
* Validates a policy definition and throws if invalid.
|
|
94
|
+
*
|
|
95
|
+
* @param definition - The Cedar policy definition to validate
|
|
96
|
+
* @param scope - The construct scope for error reporting (optional)
|
|
97
|
+
* @returns The validated definition
|
|
98
|
+
* @throws ValidationError if validation fails
|
|
99
|
+
*/
|
|
100
|
+
export declare function throwIfInvalidPolicyDefinition(definition: string, scope?: IConstruct): string;
|
|
101
|
+
/**
|
|
102
|
+
* Validates a description and throws if invalid.
|
|
103
|
+
*
|
|
104
|
+
* @param description - The description to validate
|
|
105
|
+
* @param scope - The construct scope for error reporting (optional)
|
|
106
|
+
* @returns The validated description
|
|
107
|
+
* @throws ValidationError if validation fails
|
|
108
|
+
*/
|
|
109
|
+
export declare function throwIfInvalidDescription(description: string, scope?: IConstruct): string;
|
|
110
|
+
/**
|
|
111
|
+
* Validates tags for a PolicyEngine.
|
|
112
|
+
* Tags must:
|
|
113
|
+
* - Not exceed 50 tags
|
|
114
|
+
* - Have keys between 1 and 128 characters
|
|
115
|
+
* - Have values between 0 and 256 characters
|
|
116
|
+
* - Match allowed character patterns
|
|
117
|
+
*
|
|
118
|
+
* @param tags - The tags object to validate
|
|
119
|
+
* @param resourceName - The name of the resource being tagged (for error messages)
|
|
120
|
+
* @param scope - The construct scope for error reporting (optional)
|
|
121
|
+
* @returns Array of validation error messages, empty if valid
|
|
122
|
+
*/
|
|
123
|
+
export declare function validateTags(tags: {
|
|
124
|
+
[key: string]: string;
|
|
125
|
+
}, resourceName: string, _scope?: IConstruct): string[];
|
|
126
|
+
/**
|
|
127
|
+
* Validates tags and throws if invalid.
|
|
128
|
+
*
|
|
129
|
+
* @param tags - The tags object to validate
|
|
130
|
+
* @param resourceName - The name of the resource being tagged (for error messages)
|
|
131
|
+
* @param scope - The construct scope for error reporting (optional)
|
|
132
|
+
* @returns The validated tags
|
|
133
|
+
* @throws ValidationError if validation fails
|
|
134
|
+
*/
|
|
135
|
+
export declare function throwIfInvalidTags(tags: {
|
|
136
|
+
[key: string]: string;
|
|
137
|
+
}, resourceName: string, scope?: IConstruct): {
|
|
138
|
+
[key: string]: string;
|
|
139
|
+
};
|