如何从 python 的 AWS CDK 中的 Bucket 对象获取存储桶名称

How to get bucket name from Bucket object in AWS CDK for python

我已经创建了一个 S3 存储桶来托管我的网站。为此,我将 AWS CDK 中的以下代码用于 python docs

self.bucket = s3.Bucket(
    self,
    "my-bucket-name",
    bucket_name="my-bucket-name",
    removal_policy=core.RemovalPolicy.DESTROY,
    website_index_document="index.html",
    public_read_access=True
)

出于某种原因,我想将此存储桶对象作为参数发送给另一个对象,并从该参数中获取存储桶名称。所以,我试过了

self.bucket.bucket_name
self.bucket.bucket_arn

似乎没有任何效果,而是对象 returns ${Token[TOKEN.189]}。谁能指导我解决这个问题?

如果存储桶名称像您上面粘贴的示例一样被硬编码,您始终可以将其外部化到 cdk 上下文文件中。如您所见,当您从 Bucket 构造访问存储桶名称时,它会创建对它的引用,如果您在另一个资源中需要它,云的形成将取决于 Bucket 资源的值,方法是使用 Ref/GetAtt CloudFormation 中的功能。那么在下游使用之前会保证bucket真实存在

如果您不关心这个,只想在 cdk 应用程序代码中使用实际的存储桶名称,那么将该值放入 cdk 上下文 json 文件中,并使用 node.try_get_context 在任何地方检索它.