我正在处理创建 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/