问题描述
我是AWS CDK的新手,但实际上我在lambda和api网关中有一个UI服务,在ECS中有另一个服务。两种服务都有自己的CDK,但需要使用相同的Dynamo表。是否可以在2个CDK之间共享相同的dynamodb资源?有这方面的最佳实践吗?我们应该从堆栈中排除Dynamo吗?
解决方法
我有一个类似的用例,我只是使用Cloudformation输出来共享表ARN。
例如
在StackA中,我有Dynamodb表
import * as cdk from '@aws-cdk/core';
import { Table,AttributeType,BillingMode } from '@aws-cdk/aws-dynamodb';
export class StackA extends cdk.Stack {
constructor(scope: cdk.Construct,id: string,props?: cdk.StackProps) {
super(scope,id,props);
const table = new Table(this,'my-table',{
partitionKey: { name: 'id',type: AttributeType.STRING },billingMode: BillingMode.PAY_PER_REQUEST,tableName: 'mytable'
});
new cdk.CfnOutput(this,'my-table-output',{
value: table.tableArn,description: 'Data Storage',exportName: this.stackName + '-tablearn'
});
}
}
在StackB
import * as cdk from '@aws-cdk/core';
import { Table } from '@aws-cdk/aws-dynamodb';
export class StackB extends cdk.Stack {
constructor(scope: cdk.Construct,props);
const stackATable = Table.fromTableArn(this,"stackA-table",cdk.Fn.importValue("StackA-tablearn"));
}
}