0

我想知道在我的应用程序代码中使用 Pulumi 部署结果的最佳方式是什么。举一个具体的例子,假设我的 Pulumi 堆栈为 API Gateway 端点生成以下 url

    [Output]
    public Output<string> APIEndpoint { get; set; }

此 URL 将由存储在 S3 存储桶中的 JavaScript 代码使用。JavaScript 在构建期间由 webpack 捆绑,然后在部署期间也由 Pulumi 存储到 S3 存储桶中。

将此 url 传递给前端 JavaScript 捆绑代码的最佳方法是什么?

4

1 回答 1

0

经过一番研究,我决定采用这个解决方案

部署时间 url 被注入到 window 对象中,如下所示

window['runtime-config'] = {
    apiUrl: 'http://localhost:8080/api'
}

它被前端应用程序使用

    var value = document.getElementById("my_input").value;
    const url = window["runtime-config"].apiUrl;

并且 runtime-config.js 文件在部署时被覆盖,然后被复制到 S3 存储桶

    Func<string, Output<string>?> overwriteFiles = fileName => fileName == "runtime-config.js"? url.Apply(x=>$@"window['runtime-config'] = {{apiUrl: '${x}'}}") : null;  
    var objects = bucket.BucketName.Apply(bucketName => LoadFilesToS3(@"./public", bucketName, overwriteFiles));
于 2020-10-08T10:44:37.607 回答