访问 CDK 堆栈资源
Accessing CDK Stack Resources
使用以下代码创建基本s3资源时
export class Test1Stack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new s3.Bucket(this, 'sampleBucket', {
versioned: true,
removalPolicy: cdk.RemovalPolicy.DESTROY,
autoDeleteObjects: true
});
}
}
Cdk 创建以下资源:
- AWS::S3::Bucket
- AWS::S3::Bucket政策
- 自定义::S3AutoDeleteObjects
- AWS::IAM::Role
- AWS::Lambda::Function
- AWS::CDK::Metadata
我可以使用 AWS::S3::Bucket AWS::S3::Bucket策略属性
const s3 = new s3.Bucket(.......)
什么对象可以让我访问其余资源,例如,如果我想覆盖 AWS::IAM::Role 的逻辑 ID。
我想我可以创建自己的 AWS::IAM::Role、AWS::Lambda::Function、AWS::CDK::Metadata,这样我就可以使用与 s3 相同的机制来操作和覆盖属性,但这不是我要找的。
我只想在 运行 时间访问其他资源。
我尝试了构造函数中的属性,但没有成功。
我也明白 CDK 不建议覆盖资源。
您可以访问存储桶策略,假设它是自动创建的,并像这样更改其逻辑 ID:
const policy = bucket.policy!;
(policy.node.defaultChild as CfnBucketPolicy).overrideLogicalId("MyBucketPolicy")
至于autoDeleteObjects
相关的IAM Role,也是可以的,但是比较脆弱。使用了自定义资源提供程序迷你框架。这意味着 labmda 在使用 autoDeleteObjects
.
的给定堆栈中的所有 Buckets
之间共享
不过,仍然可以像这样获取 lambda 本身:
const provider = this.node.findChild('Custom::S3AutoDeleteObjectsCustomResourceProvider') as CustomResourceProvider
const lambda = provider.node.findChild('Handler') as CfnResource
使用以下代码创建基本s3资源时
export class Test1Stack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new s3.Bucket(this, 'sampleBucket', {
versioned: true,
removalPolicy: cdk.RemovalPolicy.DESTROY,
autoDeleteObjects: true
});
}
}
Cdk 创建以下资源:
- AWS::S3::Bucket
- AWS::S3::Bucket政策
- 自定义::S3AutoDeleteObjects
- AWS::IAM::Role
- AWS::Lambda::Function
- AWS::CDK::Metadata
我可以使用 AWS::S3::Bucket AWS::S3::Bucket策略属性
const s3 = new s3.Bucket(.......)
什么对象可以让我访问其余资源,例如,如果我想覆盖 AWS::IAM::Role 的逻辑 ID。
我想我可以创建自己的 AWS::IAM::Role、AWS::Lambda::Function、AWS::CDK::Metadata,这样我就可以使用与 s3 相同的机制来操作和覆盖属性,但这不是我要找的。
我只想在 运行 时间访问其他资源。
我尝试了构造函数中的属性,但没有成功。
我也明白 CDK 不建议覆盖资源。
您可以访问存储桶策略,假设它是自动创建的,并像这样更改其逻辑 ID:
const policy = bucket.policy!;
(policy.node.defaultChild as CfnBucketPolicy).overrideLogicalId("MyBucketPolicy")
至于autoDeleteObjects
相关的IAM Role,也是可以的,但是比较脆弱。使用了自定义资源提供程序迷你框架。这意味着 labmda 在使用 autoDeleteObjects
.
Buckets
之间共享
不过,仍然可以像这样获取 lambda 本身:
const provider = this.node.findChild('Custom::S3AutoDeleteObjectsCustomResourceProvider') as CustomResourceProvider
const lambda = provider.node.findChild('Handler') as CfnResource