You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在.NET CDK部署中获取AWS::Transfer::WebApp访问端点并配置S3 CORS问题

.NET CDK中如何将AWS::Transfer::WebApp的AccessEndpoint传入S3 CORS策略?

我正尝试在.NET CDK部署期间获取AWS::Transfer::WebApp的Access Endpoint,以便将其传入关联S3存储桶的CORS策略(该策略接受字符串数组)。

部署Web应用的代码如下:

var webApp = new CfnWebApp(this, "MyWebApp", new CfnWebAppProps()
{
    IdentityProviderDetails = new IdentityProviderDetailsProperty()
    {
        InstanceArn = ....
        Role = ...
    }
});

我无法直接访问webApp.AccessEndpoint,因为部署期间该值为NULL——这符合逻辑,毕竟资源还没部署完成。

我知道Token可用于延迟解析属性,于是尝试了以下代码:

var endpoint = webApp.GetAtt("AccessEndpoint").ToString()

但部署时收到错误:"Requested attribute AccessEndpoint must be a readonly property in schema for AWS::Transfer::WebApp"。

我还尝试了另一种写法:

var endpoint = Fn.GetAtt(webApp.LogicalId, "AccessEndpoint").ToString()

结果还是收到相同的只读属性错误。

我清楚Fn.GetAtt(webApp.LogicalId, "AccessEndpoint")返回IResolvable,但不知道该怎么把它传入CORS的AllowedOrigins(字符串数组)。我是CDK新手,可能漏掉了关键知识点。

更新
问题好像不是获取AccessEndpoint的问题,而是把它传入S3存储桶的过程中出了问题。我可以正常打印Token:

Console.WriteLine(Token.AsString(webApp.GetAtt("AccessEndpoint")));
Console.WriteLine(Token.AsString(Fn.GetAtt(webApp.LogicalId, "AccessEndpoint")));

输出为${Token[TOKEN.43]}和${Token[TOKEN.44]}。

但当我把它传入S3存储桶的CORS规则时:

new Bucket(this, "MyBucket", new BucketProps()
{
    BucketName = "myBucketName",
    //....
    Cors = 
    [
        new CorsRule()
        {
            AllowedHeaders = //...
            AllowedMethods = //...
            AllowedOrigins = [Token.AsString(webApp.GetAtt("AccessEndpoint"))]
        }
    ]
});

部署时就会报错,看起来是把Token传入CorsRule导致的:"Requested attribute AccessEndpoint must be a readonly property in schema for AWS::Transfer::WebApp"。

内容的提问来源于stack exchange,提问作者danwag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:53:27