读取 CDK 中的 bucket 对象

Read bucket object in CDK

在部署时从 s3 存储桶读取对象的 terraform 我可以使用数据源

data aws_s3_bucket_object { }

CDK中有类似的概念吗?我见过将资产上传到 s3 以及导入现有存储桶但未从存储桶中获取对象的各种方法。我需要从存储桶中读取一个配置文件,这将影响进一步的部署。

重要的是要记住 CDK 本身不是部署选项。它 可以 部署,但是您在 cdk 堆栈中编写的代码是资源的 定义 - 不是部署方法。

所以,您可以做几件事中的一件。

  1. 使用适合您语言的 SDK 调用 s3 存储桶并直接加载数据。这是在部署之前收集所需信息的完全可以接受和理解的方式 - 每次堆栈 Synths(它在每个 cdk deploy 之前执行该代码 运行 并将提取您的数据。

  2. 使用 CodePipeline 设置适当的管道,并为其提供两个源 - 一个是您的版本控制存储库,另一个是您的 s3 存储桶:

https://docs.aws.amazon.com/codebuild/latest/userguide/sample-multi-in-out.html

  1. 首选方式 - 删除 json 文件,然后使用 Parameter Store。 CDK 包含将在 synth 上创建此参数的令牌版本的模块,并且在部署时它将正确引用回 Systems Manager Parameter store

https://docs.aws.amazon.com/cdk/v2/guide/get_ssm_value.html

如果您的参数在 部署后 发生变化,您可以很容易地将其作为 cdk 堆栈的一部分(使用 cfn 输出)。如果它们在 middle/during 部署中发生变化,您确实需要使用 CodePipeline 来管理这些步骤,而不仅仅是 CDK。

因为记住:cdk 部署选项只是为了方便。它会执行一切,没有办法在中间暂停并执行特定步骤。 (除了非常基本的,这取决于这个资源)