@aws-cdk/aws-bedrock-agentcore-alpha 2.226.0-alpha.0 → 2.228.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 +14021 -5792
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +343 -1
- package/README.md +880 -19
- package/agentcore/gateway/gateway-base.d.ts +292 -0
- package/agentcore/gateway/gateway-base.js +171 -0
- package/agentcore/gateway/gateway.d.ts +383 -0
- package/agentcore/gateway/gateway.js +521 -0
- package/agentcore/gateway/inbound-auth/authorizer.d.ts +121 -0
- package/agentcore/gateway/inbound-auth/authorizer.js +133 -0
- package/agentcore/gateway/outbound-auth/api-key.d.ts +117 -0
- package/agentcore/gateway/outbound-auth/api-key.js +141 -0
- package/agentcore/gateway/outbound-auth/credential-provider.d.ts +70 -0
- package/agentcore/gateway/outbound-auth/credential-provider.js +80 -0
- package/agentcore/gateway/outbound-auth/iam-role.d.ts +28 -0
- package/agentcore/gateway/outbound-auth/iam-role.js +40 -0
- package/agentcore/gateway/outbound-auth/oauth.d.ts +80 -0
- package/agentcore/gateway/outbound-auth/oauth.js +76 -0
- package/agentcore/gateway/perms.d.ts +75 -0
- package/agentcore/gateway/perms.js +112 -0
- package/agentcore/gateway/protocol.d.ts +121 -0
- package/agentcore/gateway/protocol.js +120 -0
- package/agentcore/gateway/targets/schema/api-schema.d.ts +110 -0
- package/agentcore/gateway/targets/schema/api-schema.js +207 -0
- package/agentcore/gateway/targets/schema/base-schema.d.ts +24 -0
- package/agentcore/gateway/targets/schema/base-schema.js +12 -0
- package/agentcore/gateway/targets/schema/tool-schema.d.ts +198 -0
- package/agentcore/gateway/targets/schema/tool-schema.js +213 -0
- package/agentcore/gateway/targets/target-base.d.ts +153 -0
- package/agentcore/gateway/targets/target-base.js +81 -0
- package/agentcore/gateway/targets/target-configuration.d.ts +230 -0
- package/agentcore/gateway/targets/target-configuration.js +407 -0
- package/agentcore/gateway/targets/target.d.ts +345 -0
- package/agentcore/gateway/targets/target.js +444 -0
- package/agentcore/gateway/validation-helpers.d.ts +65 -0
- package/agentcore/gateway/validation-helpers.js +333 -0
- package/agentcore/index.d.ts +15 -0
- package/agentcore/index.js +32 -1
- package/agentcore/memory/memory-strategy.js +1 -1
- package/agentcore/memory/memory.js +6 -3
- package/agentcore/memory/strategies/managed-strategy.js +1 -1
- package/agentcore/memory/strategies/self-managed-strategy.js +1 -1
- package/agentcore/network/network-configuration.js +4 -4
- package/agentcore/runtime/runtime-artifact.js +1 -1
- package/agentcore/runtime/runtime-authorizer-configuration.d.ts +1 -1
- package/agentcore/runtime/runtime-authorizer-configuration.js +6 -5
- package/agentcore/runtime/runtime-base.js +1 -1
- package/agentcore/runtime/runtime-endpoint-base.js +1 -1
- package/agentcore/runtime/runtime-endpoint.js +1 -1
- package/agentcore/runtime/runtime.js +1 -1
- package/agentcore/tools/browser.js +2 -2
- package/agentcore/tools/code-interpreter.js +2 -2
- package/package.json +9 -9
- package/rosetta/default.ts-fixture +15 -6
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { IUserPoolClient, IUserPool } from 'aws-cdk-lib/aws-cognito';
|
|
2
|
+
/******************************************************************************
|
|
3
|
+
* Authorizer Configuration
|
|
4
|
+
*****************************************************************************/
|
|
5
|
+
/**
|
|
6
|
+
* Gateway authorizer type
|
|
7
|
+
*/
|
|
8
|
+
export declare enum GatewayAuthorizerType {
|
|
9
|
+
/** Custom JWT authorizer type */
|
|
10
|
+
CUSTOM_JWT = "CUSTOM_JWT",
|
|
11
|
+
/** AWS IAM authorizer type */
|
|
12
|
+
AWS_IAM = "AWS_IAM"
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Abstract interface for gateway authorizer configuration
|
|
16
|
+
*/
|
|
17
|
+
export interface IGatewayAuthorizerConfig {
|
|
18
|
+
/**
|
|
19
|
+
* The authorizer type
|
|
20
|
+
*/
|
|
21
|
+
readonly authorizerType: GatewayAuthorizerType;
|
|
22
|
+
/**
|
|
23
|
+
* The authorizer configuration in CFN format
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
_render(): any;
|
|
27
|
+
}
|
|
28
|
+
/******************************************************************************
|
|
29
|
+
* Custom JWT
|
|
30
|
+
*****************************************************************************/
|
|
31
|
+
/**
|
|
32
|
+
* Custom JWT authorizer configuration
|
|
33
|
+
*/
|
|
34
|
+
export interface CustomJwtConfiguration {
|
|
35
|
+
/**
|
|
36
|
+
* This URL is used to fetch OpenID Connect configuration or authorization server metadata
|
|
37
|
+
* for validating incoming tokens.
|
|
38
|
+
*
|
|
39
|
+
* Pattern: .+/\.well-known/openid-configuration
|
|
40
|
+
* Required: Yes
|
|
41
|
+
*/
|
|
42
|
+
readonly discoveryUrl: string;
|
|
43
|
+
/**
|
|
44
|
+
* Represents individual audience values that are validated in the incoming JWT token validation process.
|
|
45
|
+
* @default - No audience validation
|
|
46
|
+
*/
|
|
47
|
+
readonly allowedAudience?: string[];
|
|
48
|
+
/**
|
|
49
|
+
* Represents individual client IDs that are validated in the incoming JWT token validation process.
|
|
50
|
+
* @default - No client ID validation
|
|
51
|
+
*/
|
|
52
|
+
readonly allowedClients?: string[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Custom JWT authorizer configuration implementation
|
|
56
|
+
*/
|
|
57
|
+
export declare class CustomJwtAuthorizer implements IGatewayAuthorizerConfig {
|
|
58
|
+
readonly authorizerType = GatewayAuthorizerType.CUSTOM_JWT;
|
|
59
|
+
private readonly discoveryUrl;
|
|
60
|
+
private readonly allowedAudience?;
|
|
61
|
+
private readonly allowedClients?;
|
|
62
|
+
constructor(config: CustomJwtConfiguration);
|
|
63
|
+
/**
|
|
64
|
+
* @internal
|
|
65
|
+
*/
|
|
66
|
+
_render(): any;
|
|
67
|
+
}
|
|
68
|
+
/******************************************************************************
|
|
69
|
+
* AWS IAM
|
|
70
|
+
*****************************************************************************/
|
|
71
|
+
/**
|
|
72
|
+
* AWS IAM authorizer configuration implementation
|
|
73
|
+
*
|
|
74
|
+
*/
|
|
75
|
+
export declare class IamAuthorizer implements IGatewayAuthorizerConfig {
|
|
76
|
+
readonly authorizerType = GatewayAuthorizerType.AWS_IAM;
|
|
77
|
+
/**
|
|
78
|
+
* @internal
|
|
79
|
+
*/
|
|
80
|
+
_render(): any;
|
|
81
|
+
}
|
|
82
|
+
/******************************************************************************
|
|
83
|
+
* Factory
|
|
84
|
+
*****************************************************************************/
|
|
85
|
+
export interface CognitoAuthorizerProps {
|
|
86
|
+
/**
|
|
87
|
+
* The Cognito User Pool to use for authentication
|
|
88
|
+
*/
|
|
89
|
+
readonly userPool: IUserPool;
|
|
90
|
+
/**
|
|
91
|
+
* The allowed User Pool clients
|
|
92
|
+
* @default - All clients are allowed
|
|
93
|
+
*/
|
|
94
|
+
readonly allowedClients?: IUserPoolClient[];
|
|
95
|
+
/**
|
|
96
|
+
* The allowed audiences for JWT validation
|
|
97
|
+
* @default - No audience validation
|
|
98
|
+
*/
|
|
99
|
+
readonly allowedAudiences?: string[];
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Factory class for creating Gateway Authorizers
|
|
103
|
+
*/
|
|
104
|
+
export declare abstract class GatewayAuthorizer {
|
|
105
|
+
/**
|
|
106
|
+
* AWS IAM authorizer instance
|
|
107
|
+
*/
|
|
108
|
+
static usingAwsIam(): IGatewayAuthorizerConfig;
|
|
109
|
+
/**
|
|
110
|
+
* Create a custom JWT authorizer
|
|
111
|
+
* @param configuration - The JWT configuration
|
|
112
|
+
* @returns IGatewayAuthorizerConfig configured for custom JWT
|
|
113
|
+
*/
|
|
114
|
+
static usingCustomJwt(configuration: CustomJwtConfiguration): IGatewayAuthorizerConfig;
|
|
115
|
+
/**
|
|
116
|
+
* Create a JWT authorizer from Cognito User Pool
|
|
117
|
+
* @param props - The Cognito configuration
|
|
118
|
+
* @returns CustomJwtAuthorizer configured for Cognito
|
|
119
|
+
*/
|
|
120
|
+
static usingCognito(props: CognitoAuthorizerProps): IGatewayAuthorizerConfig;
|
|
121
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GatewayAuthorizer = exports.IamAuthorizer = exports.CustomJwtAuthorizer = exports.GatewayAuthorizerType = void 0;
|
|
4
|
+
const jsiiDeprecationWarnings = require("../../../.warnings.jsii.js");
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const validation_helpers_1 = require("../validation-helpers");
|
|
7
|
+
/******************************************************************************
|
|
8
|
+
* Authorizer Configuration
|
|
9
|
+
*****************************************************************************/
|
|
10
|
+
/**
|
|
11
|
+
* Gateway authorizer type
|
|
12
|
+
*/
|
|
13
|
+
var GatewayAuthorizerType;
|
|
14
|
+
(function (GatewayAuthorizerType) {
|
|
15
|
+
/** Custom JWT authorizer type */
|
|
16
|
+
GatewayAuthorizerType["CUSTOM_JWT"] = "CUSTOM_JWT";
|
|
17
|
+
/** AWS IAM authorizer type */
|
|
18
|
+
GatewayAuthorizerType["AWS_IAM"] = "AWS_IAM";
|
|
19
|
+
})(GatewayAuthorizerType || (exports.GatewayAuthorizerType = GatewayAuthorizerType = {}));
|
|
20
|
+
/**
|
|
21
|
+
* Custom JWT authorizer configuration implementation
|
|
22
|
+
*/
|
|
23
|
+
class CustomJwtAuthorizer {
|
|
24
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CustomJwtAuthorizer", version: "2.228.0-alpha.0" };
|
|
25
|
+
authorizerType = GatewayAuthorizerType.CUSTOM_JWT;
|
|
26
|
+
discoveryUrl;
|
|
27
|
+
allowedAudience;
|
|
28
|
+
allowedClients;
|
|
29
|
+
constructor(config) {
|
|
30
|
+
try {
|
|
31
|
+
jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_CustomJwtConfiguration(config);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
35
|
+
Error.captureStackTrace(error, CustomJwtAuthorizer);
|
|
36
|
+
}
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
this.discoveryUrl = config.discoveryUrl;
|
|
40
|
+
this.allowedAudience = config.allowedAudience;
|
|
41
|
+
this.allowedClients = config.allowedClients;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
_render() {
|
|
47
|
+
return {
|
|
48
|
+
customJwtAuthorizer: {
|
|
49
|
+
discoveryUrl: this.discoveryUrl,
|
|
50
|
+
...(this.allowedAudience && { allowedAudience: this.allowedAudience }),
|
|
51
|
+
...(this.allowedClients && { allowedClients: this.allowedClients }),
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.CustomJwtAuthorizer = CustomJwtAuthorizer;
|
|
57
|
+
/******************************************************************************
|
|
58
|
+
* AWS IAM
|
|
59
|
+
*****************************************************************************/
|
|
60
|
+
/**
|
|
61
|
+
* AWS IAM authorizer configuration implementation
|
|
62
|
+
*
|
|
63
|
+
*/
|
|
64
|
+
class IamAuthorizer {
|
|
65
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.IamAuthorizer", version: "2.228.0-alpha.0" };
|
|
66
|
+
authorizerType = GatewayAuthorizerType.AWS_IAM;
|
|
67
|
+
/**
|
|
68
|
+
* @internal
|
|
69
|
+
*/
|
|
70
|
+
_render() {
|
|
71
|
+
// AWS IAM authorizer doesn't need additional configuration
|
|
72
|
+
// Return null or undefined to indicate no configuration needed
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.IamAuthorizer = IamAuthorizer;
|
|
77
|
+
/**
|
|
78
|
+
* Factory class for creating Gateway Authorizers
|
|
79
|
+
*/
|
|
80
|
+
class GatewayAuthorizer {
|
|
81
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayAuthorizer", version: "2.228.0-alpha.0" };
|
|
82
|
+
/**
|
|
83
|
+
* AWS IAM authorizer instance
|
|
84
|
+
*/
|
|
85
|
+
static usingAwsIam() {
|
|
86
|
+
return new IamAuthorizer();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Create a custom JWT authorizer
|
|
90
|
+
* @param configuration - The JWT configuration
|
|
91
|
+
* @returns IGatewayAuthorizerConfig configured for custom JWT
|
|
92
|
+
*/
|
|
93
|
+
static usingCustomJwt(configuration) {
|
|
94
|
+
try {
|
|
95
|
+
jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_CustomJwtConfiguration(configuration);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
99
|
+
Error.captureStackTrace(error, this.usingCustomJwt);
|
|
100
|
+
}
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
// At least one of allowedAudience or allowedClients must be defined for CUSTOM_JWT authorizer
|
|
104
|
+
if (!configuration.allowedAudience && !configuration.allowedClients) {
|
|
105
|
+
throw new validation_helpers_1.ValidationError('At least one of allowedAudience or allowedClients must be defined for CUSTOM_JWT authorizer');
|
|
106
|
+
}
|
|
107
|
+
return new CustomJwtAuthorizer(configuration);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Create a JWT authorizer from Cognito User Pool
|
|
111
|
+
* @param props - The Cognito configuration
|
|
112
|
+
* @returns CustomJwtAuthorizer configured for Cognito
|
|
113
|
+
*/
|
|
114
|
+
static usingCognito(props) {
|
|
115
|
+
try {
|
|
116
|
+
jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_CognitoAuthorizerProps(props);
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
120
|
+
Error.captureStackTrace(error, this.usingCognito);
|
|
121
|
+
}
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
const discoveryUrl = `https://cognito-idp.${props.userPool.env.region}.amazonaws.com/${props.userPool.userPoolId}/.well-known/openid-configuration`;
|
|
125
|
+
return new CustomJwtAuthorizer({
|
|
126
|
+
discoveryUrl: discoveryUrl,
|
|
127
|
+
allowedClients: props.allowedClients?.flatMap((client) => client.userPoolClientId),
|
|
128
|
+
allowedAudience: props.allowedAudiences,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.GatewayAuthorizer = GatewayAuthorizer;
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF1dGhvcml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSw4REFBd0Q7QUFFeEQ7OytFQUUrRTtBQUUvRTs7R0FFRztBQUNILElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQixpQ0FBaUM7SUFDakMsa0RBQXlCLENBQUE7SUFDekIsOEJBQThCO0lBQzlCLDRDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQUtoQztBQStDRDs7R0FFRztBQUNILE1BQWEsbUJBQW1COztJQUNkLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxVQUFVLENBQUM7SUFDakQsWUFBWSxDQUFTO0lBQ3JCLGVBQWUsQ0FBWTtJQUMzQixjQUFjLENBQVk7SUFFM0MsWUFBWSxNQUE4Qjs7Ozs7OytDQU4vQixtQkFBbUI7Ozs7UUFPNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7S0FDN0M7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixPQUFPO1lBQ0wsbUJBQW1CLEVBQUU7Z0JBQ25CLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN0RSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDcEU7U0FDRixDQUFDO0tBQ0g7O0FBdkJILGtEQXdCQztBQUVEOzsrRUFFK0U7QUFFL0U7OztHQUdHO0FBQ0gsTUFBYSxhQUFhOztJQUNSLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7SUFFL0Q7O09BRUc7SUFDSCxPQUFPO1FBQ0wsMkRBQTJEO1FBQzNELCtEQUErRDtRQUMvRCxPQUFPLFNBQVMsQ0FBQztLQUNsQjs7QUFWSCxzQ0FXQztBQXNCRDs7R0FFRztBQUNILE1BQXNCLGlCQUFpQjs7SUFDckM7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVztRQUN2QixPQUFPLElBQUksYUFBYSxFQUFFLENBQUM7S0FDNUI7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFxQzs7Ozs7Ozs7OztRQUNoRSw4RkFBOEY7UUFDOUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEUsTUFBTSxJQUFJLG9DQUFlLENBQUMsNkZBQTZGLENBQUMsQ0FBQztRQUMzSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQy9DO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBNkI7Ozs7Ozs7Ozs7UUFDdEQsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sa0JBQWtCLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxtQ0FBbUMsQ0FBQztRQUVwSixPQUFPLElBQUksbUJBQW1CLENBQUM7WUFDN0IsWUFBWSxFQUFFLFlBQVk7WUFDMUIsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7WUFDbEYsZUFBZSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7U0FDeEMsQ0FBQyxDQUFDO0tBQ0o7O0FBbENILDhDQW1DQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElVc2VyUG9vbENsaWVudCwgSVVzZXJQb29sIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZ25pdG8nO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi1oZWxwZXJzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6ZXIgQ29uZmlndXJhdGlvblxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEdhdGV3YXkgYXV0aG9yaXplciB0eXBlXG4gKi9cbmV4cG9ydCBlbnVtIEdhdGV3YXlBdXRob3JpemVyVHlwZSB7XG4gIC8qKiBDdXN0b20gSldUIGF1dGhvcml6ZXIgdHlwZSAqL1xuICBDVVNUT01fSldUID0gJ0NVU1RPTV9KV1QnLFxuICAvKiogQVdTIElBTSBhdXRob3JpemVyIHR5cGUgKi9cbiAgQVdTX0lBTSA9ICdBV1NfSUFNJyxcbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBpbnRlcmZhY2UgZm9yIGdhdGV3YXkgYXV0aG9yaXplciBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemVyIHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvcml6ZXJUeXBlOiBHYXRld2F5QXV0aG9yaXplclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb24gaW4gQ0ZOIGZvcm1hdFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9yZW5kZXIoKTogYW55O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b20gSldUXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEN1c3RvbSBKV1QgYXV0aG9yaXplciBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tSnd0Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGlzIFVSTCBpcyB1c2VkIHRvIGZldGNoIE9wZW5JRCBDb25uZWN0IGNvbmZpZ3VyYXRpb24gb3IgYXV0aG9yaXphdGlvbiBzZXJ2ZXIgbWV0YWRhdGFcbiAgICogZm9yIHZhbGlkYXRpbmcgaW5jb21pbmcgdG9rZW5zLlxuICAgKlxuICAgKiBQYXR0ZXJuOiAuKy9cXC53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uXG4gICAqIFJlcXVpcmVkOiBZZXNcbiAgICovXG4gIHJlYWRvbmx5IGRpc2NvdmVyeVVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGluZGl2aWR1YWwgYXVkaWVuY2UgdmFsdWVzIHRoYXQgYXJlIHZhbGlkYXRlZCBpbiB0aGUgaW5jb21pbmcgSldUIHRva2VuIHZhbGlkYXRpb24gcHJvY2Vzcy5cbiAgICogQGRlZmF1bHQgLSBObyBhdWRpZW5jZSB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkQXVkaWVuY2U/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmVwcmVzZW50cyBpbmRpdmlkdWFsIGNsaWVudCBJRHMgdGhhdCBhcmUgdmFsaWRhdGVkIGluIHRoZSBpbmNvbWluZyBKV1QgdG9rZW4gdmFsaWRhdGlvbiBwcm9jZXNzLlxuICAgKiBAZGVmYXVsdCAtIE5vIGNsaWVudCBJRCB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkQ2xpZW50cz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEN1c3RvbSBKV1QgYXV0aG9yaXplciBjb25maWd1cmF0aW9uIGltcGxlbWVudGF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBDdXN0b21Kd3RBdXRob3JpemVyIGltcGxlbWVudHMgSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIHtcbiAgcHVibGljIHJlYWRvbmx5IGF1dGhvcml6ZXJUeXBlID0gR2F0ZXdheUF1dGhvcml6ZXJUeXBlLkNVU1RPTV9KV1Q7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzY292ZXJ5VXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZEF1ZGllbmNlPzogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZENsaWVudHM/OiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEN1c3RvbUp3dENvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLmRpc2NvdmVyeVVybCA9IGNvbmZpZy5kaXNjb3ZlcnlVcmw7XG4gICAgdGhpcy5hbGxvd2VkQXVkaWVuY2UgPSBjb25maWcuYWxsb3dlZEF1ZGllbmNlO1xuICAgIHRoaXMuYWxsb3dlZENsaWVudHMgPSBjb25maWcuYWxsb3dlZENsaWVudHM7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3JlbmRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjdXN0b21Kd3RBdXRob3JpemVyOiB7XG4gICAgICAgIGRpc2NvdmVyeVVybDogdGhpcy5kaXNjb3ZlcnlVcmwsXG4gICAgICAgIC4uLih0aGlzLmFsbG93ZWRBdWRpZW5jZSAmJiB7IGFsbG93ZWRBdWRpZW5jZTogdGhpcy5hbGxvd2VkQXVkaWVuY2UgfSksXG4gICAgICAgIC4uLih0aGlzLmFsbG93ZWRDbGllbnRzICYmIHsgYWxsb3dlZENsaWVudHM6IHRoaXMuYWxsb3dlZENsaWVudHMgfSksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVdTIElBTVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEFXUyBJQU0gYXV0aG9yaXplciBjb25maWd1cmF0aW9uIGltcGxlbWVudGF0aW9uXG4gKlxuICovXG5leHBvcnQgY2xhc3MgSWFtQXV0aG9yaXplciBpbXBsZW1lbnRzIElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB7XG4gIHB1YmxpYyByZWFkb25seSBhdXRob3JpemVyVHlwZSA9IEdhdGV3YXlBdXRob3JpemVyVHlwZS5BV1NfSUFNO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9yZW5kZXIoKTogYW55IHtcbiAgICAvLyBBV1MgSUFNIGF1dGhvcml6ZXIgZG9lc24ndCBuZWVkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvblxuICAgIC8vIFJldHVybiBudWxsIG9yIHVuZGVmaW5lZCB0byBpbmRpY2F0ZSBubyBjb25maWd1cmF0aW9uIG5lZWRlZFxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFjdG9yeVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9BdXRob3JpemVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIENvZ25pdG8gVXNlciBQb29sIHRvIHVzZSBmb3IgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJQb29sOiBJVXNlclBvb2w7XG4gIC8qKlxuICAgKiBUaGUgYWxsb3dlZCBVc2VyIFBvb2wgY2xpZW50c1xuICAgKiBAZGVmYXVsdCAtIEFsbCBjbGllbnRzIGFyZSBhbGxvd2VkXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkQ2xpZW50cz86IElVc2VyUG9vbENsaWVudFtdO1xuICAvKipcbiAgICogVGhlIGFsbG93ZWQgYXVkaWVuY2VzIGZvciBKV1QgdmFsaWRhdGlvblxuICAgKiBAZGVmYXVsdCAtIE5vIGF1ZGllbmNlIHZhbGlkYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRBdWRpZW5jZXM/OiBzdHJpbmdbXTtcbn1cbi8qKlxuICogRmFjdG9yeSBjbGFzcyBmb3IgY3JlYXRpbmcgR2F0ZXdheSBBdXRob3JpemVyc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2F0ZXdheUF1dGhvcml6ZXIge1xuICAvKipcbiAgICogQVdTIElBTSBhdXRob3JpemVyIGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nQXdzSWFtKCk6IElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB7XG4gICAgcmV0dXJuIG5ldyBJYW1BdXRob3JpemVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY3VzdG9tIEpXVCBhdXRob3JpemVyXG4gICAqIEBwYXJhbSBjb25maWd1cmF0aW9uIC0gVGhlIEpXVCBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm5zIElHYXRld2F5QXV0aG9yaXplckNvbmZpZyBjb25maWd1cmVkIGZvciBjdXN0b20gSldUXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nQ3VzdG9tSnd0KGNvbmZpZ3VyYXRpb246IEN1c3RvbUp3dENvbmZpZ3VyYXRpb24pOiBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWcge1xuICAgIC8vIEF0IGxlYXN0IG9uZSBvZiBhbGxvd2VkQXVkaWVuY2Ugb3IgYWxsb3dlZENsaWVudHMgbXVzdCBiZSBkZWZpbmVkIGZvciBDVVNUT01fSldUIGF1dGhvcml6ZXJcbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24uYWxsb3dlZEF1ZGllbmNlICYmICFjb25maWd1cmF0aW9uLmFsbG93ZWRDbGllbnRzKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdBdCBsZWFzdCBvbmUgb2YgYWxsb3dlZEF1ZGllbmNlIG9yIGFsbG93ZWRDbGllbnRzIG11c3QgYmUgZGVmaW5lZCBmb3IgQ1VTVE9NX0pXVCBhdXRob3JpemVyJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQ3VzdG9tSnd0QXV0aG9yaXplcihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBKV1QgYXV0aG9yaXplciBmcm9tIENvZ25pdG8gVXNlciBQb29sXG4gICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBDb2duaXRvIGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgQ3VzdG9tSnd0QXV0aG9yaXplciBjb25maWd1cmVkIGZvciBDb2duaXRvXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nQ29nbml0byhwcm9wczogQ29nbml0b0F1dGhvcml6ZXJQcm9wcyk6IElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB7XG4gICAgY29uc3QgZGlzY292ZXJ5VXJsID0gYGh0dHBzOi8vY29nbml0by1pZHAuJHtwcm9wcy51c2VyUG9vbC5lbnYucmVnaW9ufS5hbWF6b25hd3MuY29tLyR7cHJvcHMudXNlclBvb2wudXNlclBvb2xJZH0vLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb25gO1xuXG4gICAgcmV0dXJuIG5ldyBDdXN0b21Kd3RBdXRob3JpemVyKHtcbiAgICAgIGRpc2NvdmVyeVVybDogZGlzY292ZXJ5VXJsLFxuICAgICAgYWxsb3dlZENsaWVudHM6IHByb3BzLmFsbG93ZWRDbGllbnRzPy5mbGF0TWFwKChjbGllbnQpID0+IGNsaWVudC51c2VyUG9vbENsaWVudElkKSxcbiAgICAgIGFsbG93ZWRBdWRpZW5jZTogcHJvcHMuYWxsb3dlZEF1ZGllbmNlcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { Grant, IRole } from 'aws-cdk-lib/aws-iam';
|
|
2
|
+
import { CredentialProviderType, ICredentialProviderConfig } from './credential-provider';
|
|
3
|
+
/******************************************************************************
|
|
4
|
+
* API KEY
|
|
5
|
+
*****************************************************************************/
|
|
6
|
+
/**
|
|
7
|
+
* API Key additional configuration
|
|
8
|
+
*/
|
|
9
|
+
export interface ApiKeyAdditionalConfiguration {
|
|
10
|
+
/**
|
|
11
|
+
* The name of the credential parameter for the API key.
|
|
12
|
+
* This parameter name is used when sending the API key to the target endpoint.
|
|
13
|
+
*
|
|
14
|
+
* Length Constraints: Minimum length of 1. Maximum length of 64.
|
|
15
|
+
* @default - 'Authorization' for HEADER, 'api_key' for QUERY_PARAMETER
|
|
16
|
+
*/
|
|
17
|
+
readonly credentialParameterName?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The prefix for the API key credential.
|
|
20
|
+
* This prefix is added to the API key when sending it to the target endpoint.
|
|
21
|
+
*
|
|
22
|
+
* Length Constraints: Minimum length of 1. Maximum length of 64.
|
|
23
|
+
* @default - 'Bearer ' for HEADER, no prefix for QUERY_PARAMETER
|
|
24
|
+
*/
|
|
25
|
+
readonly credentialPrefix?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* API Key credential location type
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
export declare enum ApiKeyCredentialLocationType {
|
|
32
|
+
HEADER = "HEADER",
|
|
33
|
+
QUERY_PARAMETER = "QUERY_PARAMETER"
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* API Key location within the request
|
|
37
|
+
*/
|
|
38
|
+
export declare class ApiKeyCredentialLocation {
|
|
39
|
+
/**
|
|
40
|
+
* Create a header-based API key credential location
|
|
41
|
+
* @param config - Optional configuration for the credential location
|
|
42
|
+
* @returns ApiKeyCredentialLocation configured for header placement
|
|
43
|
+
*/
|
|
44
|
+
static header(config?: ApiKeyAdditionalConfiguration): ApiKeyCredentialLocation;
|
|
45
|
+
/**
|
|
46
|
+
* Create a query parameter-based API key credential location
|
|
47
|
+
* @param config - Optional configuration for the credential location
|
|
48
|
+
* @returns ApiKeyCredentialLocation configured for query parameter placement
|
|
49
|
+
*/
|
|
50
|
+
static queryParameter(config?: ApiKeyAdditionalConfiguration): ApiKeyCredentialLocation;
|
|
51
|
+
/**
|
|
52
|
+
* The name of the credential parameter
|
|
53
|
+
*/
|
|
54
|
+
readonly credentialParameterName: string;
|
|
55
|
+
/**
|
|
56
|
+
* The prefix for the credential value
|
|
57
|
+
*/
|
|
58
|
+
readonly credentialPrefix?: string;
|
|
59
|
+
/**
|
|
60
|
+
* The type of credential location (HEADER or QUERY_PARAMETER)
|
|
61
|
+
*/
|
|
62
|
+
readonly credentialLocationType: string;
|
|
63
|
+
private constructor();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* API Key configuration
|
|
67
|
+
*/
|
|
68
|
+
export interface ApiKeyCredentialProviderProps {
|
|
69
|
+
/**
|
|
70
|
+
* The API key credential provider ARN.
|
|
71
|
+
* This is returned when creating the API key credential provider via Console or API.
|
|
72
|
+
* Format: arn:aws:bedrock-agentcore:region:account:token-vault/id/apikeycredentialprovider/name
|
|
73
|
+
*/
|
|
74
|
+
readonly providerArn: string;
|
|
75
|
+
/**
|
|
76
|
+
* The ARN of the Secrets Manager secret containing the API key.
|
|
77
|
+
* This is returned when creating the API key credential provider via Console or API.
|
|
78
|
+
* Format: arn:aws:secretsmanager:region:account:secret:name
|
|
79
|
+
*/
|
|
80
|
+
readonly secretArn: string;
|
|
81
|
+
/**
|
|
82
|
+
* The location of the API key credential.
|
|
83
|
+
* This field specifies where in the request the API key should be placed.
|
|
84
|
+
*
|
|
85
|
+
* @default - HEADER
|
|
86
|
+
*/
|
|
87
|
+
readonly credentialLocation?: ApiKeyCredentialLocation;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* API Key credential provider configuration implementation
|
|
91
|
+
* Can be used with OpenAPI targets
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
export declare class ApiKeyCredentialProviderConfiguration implements ICredentialProviderConfig {
|
|
95
|
+
readonly credentialProviderType = CredentialProviderType.API_KEY;
|
|
96
|
+
/**
|
|
97
|
+
* The ARN of the API key provider
|
|
98
|
+
*/
|
|
99
|
+
readonly providerArn: string;
|
|
100
|
+
/**
|
|
101
|
+
* The ARN of the Secrets Manager secret
|
|
102
|
+
*/
|
|
103
|
+
readonly secretArn: string;
|
|
104
|
+
/**
|
|
105
|
+
* The location configuration for the API key credential
|
|
106
|
+
*/
|
|
107
|
+
readonly credentialLocation: ApiKeyCredentialLocation;
|
|
108
|
+
constructor(configuration: ApiKeyCredentialProviderProps);
|
|
109
|
+
/**
|
|
110
|
+
* Grant the needed permissions to the role for API key authentication
|
|
111
|
+
*/
|
|
112
|
+
grantNeededPermissionsToRole(role: IRole): Grant | undefined;
|
|
113
|
+
/**
|
|
114
|
+
* @internal
|
|
115
|
+
*/
|
|
116
|
+
_render(): any;
|
|
117
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiKeyCredentialProviderConfiguration = exports.ApiKeyCredentialLocation = exports.ApiKeyCredentialLocationType = void 0;
|
|
4
|
+
const jsiiDeprecationWarnings = require("../../../.warnings.jsii.js");
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
7
|
+
const credential_provider_1 = require("./credential-provider");
|
|
8
|
+
const perms_1 = require("../perms");
|
|
9
|
+
/**
|
|
10
|
+
* API Key credential location type
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
var ApiKeyCredentialLocationType;
|
|
14
|
+
(function (ApiKeyCredentialLocationType) {
|
|
15
|
+
ApiKeyCredentialLocationType["HEADER"] = "HEADER";
|
|
16
|
+
ApiKeyCredentialLocationType["QUERY_PARAMETER"] = "QUERY_PARAMETER";
|
|
17
|
+
})(ApiKeyCredentialLocationType || (exports.ApiKeyCredentialLocationType = ApiKeyCredentialLocationType = {}));
|
|
18
|
+
/**
|
|
19
|
+
* API Key location within the request
|
|
20
|
+
*/
|
|
21
|
+
class ApiKeyCredentialLocation {
|
|
22
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ApiKeyCredentialLocation", version: "2.228.0-alpha.0" };
|
|
23
|
+
/**
|
|
24
|
+
* Create a header-based API key credential location
|
|
25
|
+
* @param config - Optional configuration for the credential location
|
|
26
|
+
* @returns ApiKeyCredentialLocation configured for header placement
|
|
27
|
+
*/
|
|
28
|
+
static header(config) {
|
|
29
|
+
try {
|
|
30
|
+
jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_ApiKeyAdditionalConfiguration(config);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
34
|
+
Error.captureStackTrace(error, this.header);
|
|
35
|
+
}
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
return new ApiKeyCredentialLocation(ApiKeyCredentialLocationType.HEADER, config?.credentialParameterName ?? 'Authorization', config?.credentialPrefix ?? 'Bearer ');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create a query parameter-based API key credential location
|
|
42
|
+
* @param config - Optional configuration for the credential location
|
|
43
|
+
* @returns ApiKeyCredentialLocation configured for query parameter placement
|
|
44
|
+
*/
|
|
45
|
+
static queryParameter(config) {
|
|
46
|
+
try {
|
|
47
|
+
jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_ApiKeyAdditionalConfiguration(config);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
51
|
+
Error.captureStackTrace(error, this.queryParameter);
|
|
52
|
+
}
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
return new ApiKeyCredentialLocation(ApiKeyCredentialLocationType.QUERY_PARAMETER, config?.credentialParameterName ?? 'api_key', config?.credentialPrefix);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The name of the credential parameter
|
|
59
|
+
*/
|
|
60
|
+
credentialParameterName;
|
|
61
|
+
/**
|
|
62
|
+
* The prefix for the credential value
|
|
63
|
+
*/
|
|
64
|
+
credentialPrefix;
|
|
65
|
+
/**
|
|
66
|
+
* The type of credential location (HEADER or QUERY_PARAMETER)
|
|
67
|
+
*/
|
|
68
|
+
credentialLocationType;
|
|
69
|
+
constructor(credentialLocationType, credentialParameterName, credentialPrefix) {
|
|
70
|
+
this.credentialLocationType = credentialLocationType;
|
|
71
|
+
this.credentialParameterName = credentialParameterName;
|
|
72
|
+
this.credentialPrefix = credentialPrefix;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.ApiKeyCredentialLocation = ApiKeyCredentialLocation;
|
|
76
|
+
/**
|
|
77
|
+
* API Key credential provider configuration implementation
|
|
78
|
+
* Can be used with OpenAPI targets
|
|
79
|
+
* @internal
|
|
80
|
+
*/
|
|
81
|
+
class ApiKeyCredentialProviderConfiguration {
|
|
82
|
+
credentialProviderType = credential_provider_1.CredentialProviderType.API_KEY;
|
|
83
|
+
/**
|
|
84
|
+
* The ARN of the API key provider
|
|
85
|
+
*/
|
|
86
|
+
providerArn;
|
|
87
|
+
/**
|
|
88
|
+
* The ARN of the Secrets Manager secret
|
|
89
|
+
*/
|
|
90
|
+
secretArn;
|
|
91
|
+
/**
|
|
92
|
+
* The location configuration for the API key credential
|
|
93
|
+
*/
|
|
94
|
+
credentialLocation;
|
|
95
|
+
constructor(configuration) {
|
|
96
|
+
this.providerArn = configuration.providerArn;
|
|
97
|
+
this.secretArn = configuration.secretArn;
|
|
98
|
+
this.credentialLocation = configuration.credentialLocation ?? ApiKeyCredentialLocation.header();
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Grant the needed permissions to the role for API key authentication
|
|
102
|
+
*/
|
|
103
|
+
grantNeededPermissionsToRole(role) {
|
|
104
|
+
const statements = [
|
|
105
|
+
new aws_iam_1.PolicyStatement({
|
|
106
|
+
actions: [
|
|
107
|
+
...perms_1.GatewayPerms.GATEWAY_API_KEY_PERMS,
|
|
108
|
+
...perms_1.GatewayPerms.GATEWAY_WORKLOAD_IDENTITY_PERMS,
|
|
109
|
+
],
|
|
110
|
+
resources: [this.providerArn],
|
|
111
|
+
}),
|
|
112
|
+
new aws_iam_1.PolicyStatement({
|
|
113
|
+
actions: perms_1.GatewayPerms.SECRETS_PERMS,
|
|
114
|
+
resources: [this.secretArn],
|
|
115
|
+
}),
|
|
116
|
+
];
|
|
117
|
+
return aws_iam_1.Grant.addToPrincipal({
|
|
118
|
+
grantee: role,
|
|
119
|
+
actions: statements.flatMap(s => s.actions),
|
|
120
|
+
resourceArns: statements.flatMap(s => s.resources),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* @internal
|
|
125
|
+
*/
|
|
126
|
+
_render() {
|
|
127
|
+
return {
|
|
128
|
+
credentialProviderType: this.credentialProviderType,
|
|
129
|
+
credentialProvider: {
|
|
130
|
+
apiKeyCredentialProvider: {
|
|
131
|
+
providerArn: this.providerArn,
|
|
132
|
+
credentialLocation: this.credentialLocation.credentialLocationType,
|
|
133
|
+
credentialParameterName: this.credentialLocation.credentialParameterName,
|
|
134
|
+
credentialPrefix: this.credentialLocation.credentialPrefix,
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.ApiKeyCredentialProviderConfiguration = ApiKeyCredentialProviderConfiguration;
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwaS1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpREFBb0U7QUFDcEUsK0RBQTBGO0FBQzFGLG9DQUF3QztBQTZCeEM7OztHQUdHO0FBQ0gsSUFBWSw0QkFHWDtBQUhELFdBQVksNEJBQTRCO0lBQ3RDLGlEQUFpQixDQUFBO0lBQ2pCLG1FQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUFIVyw0QkFBNEIsNENBQTVCLDRCQUE0QixRQUd2QztBQUVEOztHQUVHO0FBQ0gsTUFBYSx3QkFBd0I7O0lBQ25DOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQXNDOzs7Ozs7Ozs7O1FBQ3pELE9BQU8sSUFBSSx3QkFBd0IsQ0FDakMsNEJBQTRCLENBQUMsTUFBTSxFQUNuQyxNQUFNLEVBQUUsdUJBQXVCLElBQUksZUFBZSxFQUNsRCxNQUFNLEVBQUUsZ0JBQWdCLElBQUksU0FBUyxDQUN0QyxDQUFDO0tBQ0g7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFzQzs7Ozs7Ozs7OztRQUNqRSxPQUFPLElBQUksd0JBQXdCLENBQ2pDLDRCQUE0QixDQUFDLGVBQWUsRUFDNUMsTUFBTSxFQUFFLHVCQUF1QixJQUFJLFNBQVMsRUFDNUMsTUFBTSxFQUFFLGdCQUFnQixDQUN6QixDQUFDO0tBQ0g7SUFFRDs7T0FFRztJQUNhLHVCQUF1QixDQUFTO0lBQ2hEOztPQUVHO0lBQ2EsZ0JBQWdCLENBQVU7SUFDMUM7O09BRUc7SUFDYSxzQkFBc0IsQ0FBUztJQUUvQyxZQUNFLHNCQUE4QixFQUM5Qix1QkFBK0IsRUFDL0IsZ0JBQXlCO1FBRXpCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0tBQzFDOztBQWhESCw0REFpREM7QUE2QkQ7Ozs7R0FJRztBQUNILE1BQWEscUNBQXFDO0lBQ2hDLHNCQUFzQixHQUFHLDRDQUFzQixDQUFDLE9BQU8sQ0FBQztJQUN4RTs7T0FFRztJQUNhLFdBQVcsQ0FBUztJQUNwQzs7T0FFRztJQUNhLFNBQVMsQ0FBUztJQUNsQzs7T0FFRztJQUNhLGtCQUFrQixDQUEyQjtJQUU3RCxZQUFZLGFBQTRDO1FBQ3RELElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxrQkFBa0IsSUFBSSx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUNqRztJQUVEOztPQUVHO0lBQ0gsNEJBQTRCLENBQUMsSUFBVztRQUN0QyxNQUFNLFVBQVUsR0FBRztZQUNqQixJQUFJLHlCQUFlLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRTtvQkFDUCxHQUFHLG9CQUFZLENBQUMscUJBQXFCO29CQUNyQyxHQUFHLG9CQUFZLENBQUMsK0JBQStCO2lCQUNoRDtnQkFDRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQzlCLENBQUM7WUFDRixJQUFJLHlCQUFlLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRSxvQkFBWSxDQUFDLGFBQWE7Z0JBQ25DLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDNUIsQ0FBQztTQUNILENBQUM7UUFFRixPQUFPLGVBQUssQ0FBQyxjQUFjLENBQUM7WUFDMUIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDM0MsWUFBWSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ25ELENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsT0FBTztZQUNMLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDbkQsa0JBQWtCLEVBQUU7Z0JBQ2xCLHdCQUF3QixFQUFFO29CQUN4QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7b0JBQzdCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0I7b0JBQ2xFLHVCQUF1QixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx1QkFBdUI7b0JBQ3hFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0I7aUJBQzNEO2FBQ0Y7U0FDRixDQUFDO0tBQ0g7Q0FDRjtBQTlERCxzRkE4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFudCwgSVJvbGUsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ3JlZGVudGlhbFByb3ZpZGVyVHlwZSwgSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZyB9IGZyb20gJy4vY3JlZGVudGlhbC1wcm92aWRlcic7XG5pbXBvcnQgeyBHYXRld2F5UGVybXMgfSBmcm9tICcuLi9wZXJtcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIEtFWVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBBUEkgS2V5IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaUtleUFkZGl0aW9uYWxDb25maWd1cmF0aW9uIHtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNyZWRlbnRpYWwgcGFyYW1ldGVyIGZvciB0aGUgQVBJIGtleS5cbiAgICogVGhpcyBwYXJhbWV0ZXIgbmFtZSBpcyB1c2VkIHdoZW4gc2VuZGluZyB0aGUgQVBJIGtleSB0byB0aGUgdGFyZ2V0IGVuZHBvaW50LlxuICAgKlxuICAgKiBMZW5ndGggQ29uc3RyYWludHM6IE1pbmltdW0gbGVuZ3RoIG9mIDEuIE1heGltdW0gbGVuZ3RoIG9mIDY0LlxuICAgKiBAZGVmYXVsdCAtICdBdXRob3JpemF0aW9uJyBmb3IgSEVBREVSLCAnYXBpX2tleScgZm9yIFFVRVJZX1BBUkFNRVRFUlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFBhcmFtZXRlck5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggZm9yIHRoZSBBUEkga2V5IGNyZWRlbnRpYWwuXG4gICAqIFRoaXMgcHJlZml4IGlzIGFkZGVkIHRvIHRoZSBBUEkga2V5IHdoZW4gc2VuZGluZyBpdCB0byB0aGUgdGFyZ2V0IGVuZHBvaW50LlxuICAgKlxuICAgKiBMZW5ndGggQ29uc3RyYWludHM6IE1pbmltdW0gbGVuZ3RoIG9mIDEuIE1heGltdW0gbGVuZ3RoIG9mIDY0LlxuICAgKiBAZGVmYXVsdCAtICdCZWFyZXIgJyBmb3IgSEVBREVSLCBubyBwcmVmaXggZm9yIFFVRVJZX1BBUkFNRVRFUlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByZWZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBUEkgS2V5IGNyZWRlbnRpYWwgbG9jYXRpb24gdHlwZVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBlbnVtIEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvblR5cGUge1xuICBIRUFERVIgPSAnSEVBREVSJyxcbiAgUVVFUllfUEFSQU1FVEVSID0gJ1FVRVJZX1BBUkFNRVRFUicsXG59XG5cbi8qKlxuICogQVBJIEtleSBsb2NhdGlvbiB3aXRoaW4gdGhlIHJlcXVlc3RcbiAqL1xuZXhwb3J0IGNsYXNzIEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvbiB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBoZWFkZXItYmFzZWQgQVBJIGtleSBjcmVkZW50aWFsIGxvY2F0aW9uXG4gICAqIEBwYXJhbSBjb25maWcgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgY3JlZGVudGlhbCBsb2NhdGlvblxuICAgKiBAcmV0dXJucyBBcGlLZXlDcmVkZW50aWFsTG9jYXRpb24gY29uZmlndXJlZCBmb3IgaGVhZGVyIHBsYWNlbWVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBoZWFkZXIoY29uZmlnPzogQXBpS2V5QWRkaXRpb25hbENvbmZpZ3VyYXRpb24pIHtcbiAgICByZXR1cm4gbmV3IEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvbihcbiAgICAgIEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvblR5cGUuSEVBREVSLFxuICAgICAgY29uZmlnPy5jcmVkZW50aWFsUGFyYW1ldGVyTmFtZSA/PyAnQXV0aG9yaXphdGlvbicsXG4gICAgICBjb25maWc/LmNyZWRlbnRpYWxQcmVmaXggPz8gJ0JlYXJlciAnLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgcXVlcnkgcGFyYW1ldGVyLWJhc2VkIEFQSSBrZXkgY3JlZGVudGlhbCBsb2NhdGlvblxuICAgKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNyZWRlbnRpYWwgbG9jYXRpb25cbiAgICogQHJldHVybnMgQXBpS2V5Q3JlZGVudGlhbExvY2F0aW9uIGNvbmZpZ3VyZWQgZm9yIHF1ZXJ5IHBhcmFtZXRlciBwbGFjZW1lbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcXVlcnlQYXJhbWV0ZXIoY29uZmlnPzogQXBpS2V5QWRkaXRpb25hbENvbmZpZ3VyYXRpb24pIHtcbiAgICByZXR1cm4gbmV3IEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvbihcbiAgICAgIEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvblR5cGUuUVVFUllfUEFSQU1FVEVSLFxuICAgICAgY29uZmlnPy5jcmVkZW50aWFsUGFyYW1ldGVyTmFtZSA/PyAnYXBpX2tleScsXG4gICAgICBjb25maWc/LmNyZWRlbnRpYWxQcmVmaXgsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY3JlZGVudGlhbCBwYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsUGFyYW1ldGVyTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHByZWZpeCBmb3IgdGhlIGNyZWRlbnRpYWwgdmFsdWVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsUHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgY3JlZGVudGlhbCBsb2NhdGlvbiAoSEVBREVSIG9yIFFVRVJZX1BBUkFNRVRFUilcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsTG9jYXRpb25UeXBlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBjcmVkZW50aWFsTG9jYXRpb25UeXBlOiBzdHJpbmcsXG4gICAgY3JlZGVudGlhbFBhcmFtZXRlck5hbWU6IHN0cmluZyxcbiAgICBjcmVkZW50aWFsUHJlZml4Pzogc3RyaW5nLFxuICApIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxMb2NhdGlvblR5cGUgPSBjcmVkZW50aWFsTG9jYXRpb25UeXBlO1xuICAgIHRoaXMuY3JlZGVudGlhbFBhcmFtZXRlck5hbWUgPSBjcmVkZW50aWFsUGFyYW1ldGVyTmFtZTtcbiAgICB0aGlzLmNyZWRlbnRpYWxQcmVmaXggPSBjcmVkZW50aWFsUHJlZml4O1xuICB9XG59XG5cbi8qKlxuICogQVBJIEtleSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpS2V5Q3JlZGVudGlhbFByb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIEFQSSBrZXkgY3JlZGVudGlhbCBwcm92aWRlciBBUk4uXG4gICAqIFRoaXMgaXMgcmV0dXJuZWQgd2hlbiBjcmVhdGluZyB0aGUgQVBJIGtleSBjcmVkZW50aWFsIHByb3ZpZGVyIHZpYSBDb25zb2xlIG9yIEFQSS5cbiAgICogRm9ybWF0OiBhcm46YXdzOmJlZHJvY2stYWdlbnRjb3JlOnJlZ2lvbjphY2NvdW50OnRva2VuLXZhdWx0L2lkL2FwaWtleWNyZWRlbnRpYWxwcm92aWRlci9uYW1lXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlckFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGNvbnRhaW5pbmcgdGhlIEFQSSBrZXkuXG4gICAqIFRoaXMgaXMgcmV0dXJuZWQgd2hlbiBjcmVhdGluZyB0aGUgQVBJIGtleSBjcmVkZW50aWFsIHByb3ZpZGVyIHZpYSBDb25zb2xlIG9yIEFQSS5cbiAgICogRm9ybWF0OiBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnJlZ2lvbjphY2NvdW50OnNlY3JldDpuYW1lXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBBUEkga2V5IGNyZWRlbnRpYWwuXG4gICAqIFRoaXMgZmllbGQgc3BlY2lmaWVzIHdoZXJlIGluIHRoZSByZXF1ZXN0IHRoZSBBUEkga2V5IHNob3VsZCBiZSBwbGFjZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSEVBREVSXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsTG9jYXRpb24/OiBBcGlLZXlDcmVkZW50aWFsTG9jYXRpb247XG59XG5cbi8qKlxuICogQVBJIEtleSBjcmVkZW50aWFsIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb25cbiAqIENhbiBiZSB1c2VkIHdpdGggT3BlbkFQSSB0YXJnZXRzXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIEFwaUtleUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb24gaW1wbGVtZW50cyBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIHtcbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlclR5cGUgPSBDcmVkZW50aWFsUHJvdmlkZXJUeXBlLkFQSV9LRVk7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBBUEkga2V5IHByb3ZpZGVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvdmlkZXJBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIFNlY3JldHMgTWFuYWdlciBzZWNyZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZWNyZXRBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgQVBJIGtleSBjcmVkZW50aWFsXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbExvY2F0aW9uOiBBcGlLZXlDcmVkZW50aWFsTG9jYXRpb247XG5cbiAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbjogQXBpS2V5Q3JlZGVudGlhbFByb3ZpZGVyUHJvcHMpIHtcbiAgICB0aGlzLnByb3ZpZGVyQXJuID0gY29uZmlndXJhdGlvbi5wcm92aWRlckFybjtcbiAgICB0aGlzLnNlY3JldEFybiA9IGNvbmZpZ3VyYXRpb24uc2VjcmV0QXJuO1xuICAgIHRoaXMuY3JlZGVudGlhbExvY2F0aW9uID0gY29uZmlndXJhdGlvbi5jcmVkZW50aWFsTG9jYXRpb24gPz8gQXBpS2V5Q3JlZGVudGlhbExvY2F0aW9uLmhlYWRlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBuZWVkZWQgcGVybWlzc2lvbnMgdG8gdGhlIHJvbGUgZm9yIEFQSSBrZXkgYXV0aGVudGljYXRpb25cbiAgICovXG4gIGdyYW50TmVlZGVkUGVybWlzc2lvbnNUb1JvbGUocm9sZTogSVJvbGUpOiBHcmFudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc3RhdGVtZW50cyA9IFtcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgLi4uR2F0ZXdheVBlcm1zLkdBVEVXQVlfQVBJX0tFWV9QRVJNUyxcbiAgICAgICAgICAuLi5HYXRld2F5UGVybXMuR0FURVdBWV9XT1JLTE9BRF9JREVOVElUWV9QRVJNUyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5wcm92aWRlckFybl0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBHYXRld2F5UGVybXMuU0VDUkVUU19QRVJNUyxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5zZWNyZXRBcm5dLFxuICAgICAgfSksXG4gICAgXTtcblxuICAgIHJldHVybiBHcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiByb2xlLFxuICAgICAgYWN0aW9uczogc3RhdGVtZW50cy5mbGF0TWFwKHMgPT4gcy5hY3Rpb25zKSxcbiAgICAgIHJlc291cmNlQXJuczogc3RhdGVtZW50cy5mbGF0TWFwKHMgPT4gcy5yZXNvdXJjZXMpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3JlbmRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJUeXBlOiB0aGlzLmNyZWRlbnRpYWxQcm92aWRlclR5cGUsXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXI6IHtcbiAgICAgICAgYXBpS2V5Q3JlZGVudGlhbFByb3ZpZGVyOiB7XG4gICAgICAgICAgcHJvdmlkZXJBcm46IHRoaXMucHJvdmlkZXJBcm4sXG4gICAgICAgICAgY3JlZGVudGlhbExvY2F0aW9uOiB0aGlzLmNyZWRlbnRpYWxMb2NhdGlvbi5jcmVkZW50aWFsTG9jYXRpb25UeXBlLFxuICAgICAgICAgIGNyZWRlbnRpYWxQYXJhbWV0ZXJOYW1lOiB0aGlzLmNyZWRlbnRpYWxMb2NhdGlvbi5jcmVkZW50aWFsUGFyYW1ldGVyTmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsUHJlZml4OiB0aGlzLmNyZWRlbnRpYWxMb2NhdGlvbi5jcmVkZW50aWFsUHJlZml4LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { IResolvable } from 'aws-cdk-lib';
|
|
2
|
+
import { CfnGatewayTarget } from 'aws-cdk-lib/aws-bedrockagentcore';
|
|
3
|
+
import { ApiKeyCredentialProviderProps } from './api-key';
|
|
4
|
+
import { OAuthConfiguration } from './oauth';
|
|
5
|
+
import { Grant, IRole } from 'aws-cdk-lib/aws-iam';
|
|
6
|
+
/******************************************************************************
|
|
7
|
+
* Enums
|
|
8
|
+
*****************************************************************************/
|
|
9
|
+
/**
|
|
10
|
+
* Credential provider types supported by gateway target
|
|
11
|
+
*/
|
|
12
|
+
export declare enum CredentialProviderType {
|
|
13
|
+
/**
|
|
14
|
+
* API Key authentication
|
|
15
|
+
*/
|
|
16
|
+
API_KEY = "API_KEY",
|
|
17
|
+
/**
|
|
18
|
+
* OAuth authentication
|
|
19
|
+
*/
|
|
20
|
+
OAUTH = "OAUTH",
|
|
21
|
+
/**
|
|
22
|
+
* IAM role authentication
|
|
23
|
+
*/
|
|
24
|
+
GATEWAY_IAM_ROLE = "GATEWAY_IAM_ROLE"
|
|
25
|
+
}
|
|
26
|
+
/******************************************************************************
|
|
27
|
+
* Credential Provider
|
|
28
|
+
*****************************************************************************/
|
|
29
|
+
/**
|
|
30
|
+
* Abstract interface for gateway credential provider configuration
|
|
31
|
+
*/
|
|
32
|
+
export interface ICredentialProviderConfig {
|
|
33
|
+
/**
|
|
34
|
+
* The credential provider type
|
|
35
|
+
*/
|
|
36
|
+
readonly credentialProviderType: CredentialProviderType;
|
|
37
|
+
/**
|
|
38
|
+
* Renders as CFN Property
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
_render(): CfnGatewayTarget.CredentialProviderConfigurationProperty | IResolvable;
|
|
42
|
+
/**
|
|
43
|
+
* Grant the role the permissions
|
|
44
|
+
*/
|
|
45
|
+
grantNeededPermissionsToRole(role: IRole): Grant | undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Factory class for creating different Gateway Credential Providers
|
|
49
|
+
*/
|
|
50
|
+
export declare abstract class GatewayCredentialProvider {
|
|
51
|
+
/**
|
|
52
|
+
* Create an API key credential provider from Identity ARN
|
|
53
|
+
* Use this method when you have the Identity ARN as a string
|
|
54
|
+
* @param props - The configuration properties for the API key credential provider
|
|
55
|
+
* @returns ICredentialProviderConfig configured for API key authentication
|
|
56
|
+
*/
|
|
57
|
+
static fromApiKeyIdentityArn(props: ApiKeyCredentialProviderProps): ICredentialProviderConfig;
|
|
58
|
+
/**
|
|
59
|
+
* Create an OAuth credential provider from Identity ARN
|
|
60
|
+
* Use this method when you have the Identity ARN as a string
|
|
61
|
+
* @param props - The configuration properties for the OAuth credential provider
|
|
62
|
+
* @returns ICredentialProviderConfig configured for OAuth authentication
|
|
63
|
+
*/
|
|
64
|
+
static fromOauthIdentityArn(props: OAuthConfiguration): ICredentialProviderConfig;
|
|
65
|
+
/**
|
|
66
|
+
* Create an IAM role credential provider
|
|
67
|
+
* @returns IIamRoleCredentialProvider configured for IAM role authentication
|
|
68
|
+
*/
|
|
69
|
+
static fromIamRole(): ICredentialProviderConfig;
|
|
70
|
+
}
|