微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 Pulumi const 输出保存到 aws s3 存储桶打字稿

如何解决如何将 Pulumi const 输出保存到 aws s3 存储桶打字稿

我正在编写 IaC 以在 Amazon EKS + Pulumi 中部署 typescript。我使用 GitHub Actions 作为我的 CI/CD。

目前我可以通过我的管道使用 pulumi 创建 EKS 集群,没有问题,但我还没有想出一种干净的方法获取生成的 kubeconfig

我可以通过 frequently documented example 通过导出 cluster.kubeconfig 值然后执行堆栈输出 kubeconfig 子命令来获取 kubeconfig

# code snippet
export const kubeconfig = cluster.kubeconfig;

# command
pulumi stack output kubeconfig > kubeconfig.yml

作为当前的解决方法,我使用此方法在 github 操作中创建 kubeconfig 文件,然后使用 aws s3 cli 命令将文件上传到 s3。

我已经在我的 pulumi iac 中创建了一个带有 kms 加密的私有 s3 存储桶,并在我的 iac 中定义了 kubeconfig 输出。有没有办法编写我的 pulumi 打字稿代码,将输出直接推送到我的 s3 存储桶,而无需这些中间步骤?

UPDATE1:目前的最大努力使我:

const keksAdminBucket = new aws.s3.Bucket("keksAdminBucket",{acl: "private"});
const keksAdminBucketobject = new aws.s3.Bucketobject("keksAdminBucketobject",{
    key: "kubeconfig",bucket: keksAdminBucket.id,source: new pulumi.asset.StringAsset(String(cluster.kubeconfig)),serverSideEncryption: "aws:kms",});

这个和主题的变化会导致如下错误

    index.ts(45,42): error TS2345: Argument of type 'Output<any>' is not assignable to parameter of type 'string | Promise<string>'.
      Type 'OutputInstance<any>' is not assignable to type 'string | Promise<string>'.
        Type 'OutputInstance<any>' is missing the following properties from type 'Promise<string>': then,catch,[Symbol.toStringTag],finally

解决方法

您应该使用 apply 方法,因为 kubeconfig 是一个 Output<string>(或 Output<any>?),而不仅仅是一个 string

const keksAdminBucketObject = new aws.s3.BucketObject("keksAdminBucketObject",{
    key: "kubeconfig",bucket: keksAdminBucket.id,source: cluster.kubeconfig.apply(s => new pulumi.asset.StringAsset(JSON.stringify(s))),serverSideEncryption: "aws:kms",});

了解有关输出的更多信息并在 docs 中应用。

,

答案是:

const keksAdminBucket = new aws.s3.Bucket("keksAdminBucket",{acl: "private"});
const keksAdminBucketObject = cluster.kubeconfig.apply(
  (config) =>
    new aws.s3.BucketObject("keksAdminBucketObject",{
      key: "kubeconfig",source: new pulumi.asset.StringAsset(JSON.stringify(config)),})
)

而且我对它的理解还不够充分,无法解释原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。