output - 如何将 Pulumi Output<t> 转换为字符串?

标签 output pulumi

我正在处理创建 AWS API 网关。我正在尝试创建 CloudWatch Log 组并将其命名 API-Gateway-Execution-Logs_${restApiId}/${stageName} .我在 Rest API 创建方面没有问题。
我的问题是将类型为 pulumi.Outout 的 restApi.id 转换为字符串。
我已经尝试了在他们的 PR#2496 中提出的这两个版本

  • const restApiId = apiGatewayToSqsQueueRestApi.id.apply((v) => `${v}`);
  • const restApiId = pulumi.interpolate `${apiGatewayToSqsQueueRestApi.id}`

  • 这是使用它的代码
    const cloudWatchLogGroup = new aws.cloudwatch.LogGroup(
      `API-Gateway-Execution-Logs_${restApiId}/${stageName}`,
      {},
    );
    
    stageName只是一个字符串。
    我也试过apply再次喜欢const restApiIdStrign = restApiId.apply((v) => v);我总是从 pulumi up 得到这个错误aws:cloudwatch:LogGroup API-Gateway-Execution-Logs_Calling [toString] on an [Output<T>] is not supported.请帮我将输出转换为字符串

    最佳答案

    @Cameron 回答了命名问题,我想在标题中回答您的问题。
    无法转换 Output<string>string ,或任何 Output<T>T .Output<T>是 future 值的容器 T即使在程序执行结束后也可能无法解决。也许,你的 restApiId由 AWS 在部署时生成,因此如果您在预览中运行您的程序,则 restApiId 没有值(value)。 .Output<T>就像一个 Promise<T>这将最终得到解决,可能是在云中创建了一些资源之后。
    因此,唯一的操作与 Output<T>是:

  • 将其转换为另一个 Output<U>apply(f) ,其中 f :T -> U
  • 将其分配给 Input<T>将其传递给另一个资源构造函数
  • 从堆栈中导出

  • 任何值操作都必须在 apply 内发生称呼。

    关于output - 如何将 Pulumi Output<t> 转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62561660/

    相关文章:

    azure - Pulumi Azure API 支持是否太旧/新 API 版本的实现速度有多快?

    python - 如何应用 Pulumi Azure Function App 运行时

    string - 如何将StrLn 放入Data.ByteString.Internal.ByteString?

    具有静态和指针的 C 代码

    c++ - 了解如何在 C++ 中使用简单对象

    gradle - 如何抑制 gradle 的所有输出?

    ubuntu - 无法在 pulumi 中加载语言插件 ${language}

    azure - 如何在 Pulumi 上使用 "GetComponnectOutput"访问 Azure App Insights 输出

    docker - Pulumi 推送 docker 镜像到 GCR

    c中的计算器输出