首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用具有解析URL属性的AWS CDK绑定程序

使用具有解析URL属性的AWS CDK绑定程序
EN

Stack Overflow用户
提问于 2021-11-29 15:53:07
回答 1查看 260关注 0票数 0

我正在使用CDK构建我的静态文件(HTML,JavaScript),并将它们上传到S3桶中,这是我部署的一部分。但是,我的源文件需要知道它们将被部署到的最终URL,因为这将影响内部URL。因此,我尝试传递一个从API网关的URL派生的环境变量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const api = new apigateway.RestApi(this, 'restApi');
const staticRoute = api.root.addResource('static');
new s3deploy.BucketDeployment(this, 'DeployWebsite', {
    sources: [s3deploy.Source.asset("./path/to/source/files", {
        bundling: {
            image: cdk.DockerImage.fromRegistry("node:latest"),
            command: [
                'bash', '-c', `
            cd /asset-input \
            && npm install \
            && npm run build \
            && mv build/* /asset-output
    `,
            ],
            environment: {
                'PUBLIC_URL': api.urlForPath(staticRoute.path)
            }
        },
    })],
    destinationBucket: this.websiteBucket,
});

但是,在实践中,这段代码不起作用,因为它只是将CloudFormation标记插入到PUBLIC_URL变量中,我得到了类似于'https://${Token[TOKEN.380]}.execute-api.us-east-1.${Token[AWS.URLSuffix.10]}/${Token[TOKEN.399]}/static/'的内容,这显然是行不通的。在编译静态内容时,如何在构建时将这些令牌解析为实际的字符串组件

EN

回答 1

Stack Overflow用户

发布于 2021-11-30 01:38:54

如果您说的是构建时间,您是指在堆栈执行之前吗?因为这不可能。CDK使用这些标记,因为在实际部署堆栈之前不可能有这些值。

有几个选项可以解决这个问题,例如,您可以拆分堆栈,使用API部署堆栈,并在第二个堆栈中使用API的URL作为参数。您可以将URL作为参数传递,也可以将CDK与aws组合起来,以便检索必要的参数。您可以从服务本身检索它,也可以将它定义为第一个堆栈中的输出并以这种方式检索它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70162670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文