1
1
import { ActionContext , BucketAccessEnum , BucketDomain } from '../../types' ;
2
2
import * as oss from '@alicloud/ros-cdk-oss' ;
3
3
import * as ros from '@alicloud/ros-cdk-core' ;
4
- import { encodeBase64ForRosId , getAssets , replaceReference } from '../../common' ;
4
+ import { encodeBase64ForRosId , getAssets , replaceReference , splitDomain } from '../../common' ;
5
5
import * as ossDeployment from '@alicloud/ros-cdk-ossdeployment' ;
6
+ import * as dns from '@alicloud/ros-cdk-dns' ;
6
7
import path from 'node:path' ;
7
8
import { RosRole } from '@alicloud/ros-cdk-ram' ;
8
9
@@ -87,6 +88,7 @@ export const resolveBuckets = (
87
88
) ;
88
89
}
89
90
if ( bucket . website ?. domain ) {
91
+ const { rr, domainName } = splitDomain ( bucket . website . domain ) ;
90
92
new oss . Domain (
91
93
scope ,
92
94
`${ bucket . key } _custom_domain_${ encodeBase64ForRosId ( bucket . website . domain ) } ` ,
@@ -95,6 +97,21 @@ export const resolveBuckets = (
95
97
domainName : replaceReference ( bucket . website . domain , context ) ,
96
98
} ,
97
99
) ;
100
+
101
+ new dns . DomainRecord (
102
+ scope ,
103
+ `${ bucket . key } _custom_domain_record_${ encodeBase64ForRosId ( bucket . website . domain ) } ` ,
104
+ {
105
+ domainName : domainName ,
106
+ rr,
107
+ type : 'CNAME' ,
108
+ value : [ BucketAccessEnum . PUBLIC_READ , BucketAccessEnum . PUBLIC_READ_WRITE ] . includes (
109
+ bucket . security ?. acl ?? ( '' as BucketAccessEnum ) ,
110
+ )
111
+ ? ossBucket . attrDomainName
112
+ : ossBucket . attrInternalDomainName ,
113
+ } ,
114
+ ) ;
98
115
}
99
116
} ) ;
100
117
} ;
0 commit comments