[英]CDK: How to use/import s3 defined in one stack to another stack (in a different file)?
[英]Get all the resources defined in one stack to another stack using aws cdk
我正在創建兩個堆棧,並想將第一個堆棧資源(如 Lambda、API Gateway、DyanamoDb)引用到第二個堆棧中,或者使用對第一個堆棧的引用名稱 object。 注意:我不想使用 Stack Props 將所有資源硬編碼到第二個堆棧中。 例如文件 1
export class StackOne extends cdk.Stack {
constructor(scope: Construct, id: string, props: StackOneProps) {
super(scope, id, { env: props.env });
const lambda1 = new lambda.Function();
const lambda2 = new lambda.Function();
const api = new apigateway.RestApi()
new apigateway.LambdaIntegration(
lambda1
);
new apigateway.LambdaIntegration(
lambda2
);
}
}
文件 2
export class StackTwo extends cdk.Stack {
constructor(scope: Construct, id: string, props: StackTwoProps) {
super(scope, id, { env: props.env });
const StackOne = //Get the StackOne Reference
StackOne.Resourcs.forEach(rsourcs ==> {} )
}
}
如果將資源分配為公共只讀屬性,則可以迭代堆棧 object 的屬性並檢測IResource
(或您感興趣的其他)類型的屬性。
export class StackOne extends cdk.Stack {
public readonly lambda1: Function;
public readonly lambda2: Function;
// etc.
constructor(scope: Construct, id: string, props: StackOneProps) {
super(scope, id, { env: props.env });
this.lambda1 = new lambda.Function();
this.lambda2 = new lambda.Function();
// etc.
}
}
export interface StackTwoProps {
stackOne: Stack
}
export class StackTwo extends cdk.Stack {
constructor(scope: Construct, id: string, props: StackTwoProps) {
super(scope, id, { env: props.env });
const getResource = (r: any) => r instanceof IResource
? r
: undefined;
const keys = Object.keys(props.stackOne);
const resources = keys
.map(x => getResource(props.stackOne[x]))
.filter(x => x !== undefined) as IResource);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.