11import { ActionContext , BucketAccessEnum , BucketDomain } from '../../types' ;
22import * as oss from '@alicloud/ros-cdk-oss' ;
33import * as ros from '@alicloud/ros-cdk-core' ;
4- import { encodeBase64ForRosId , getAssets , replaceReference } from '../../common' ;
4+ import { encodeBase64ForRosId , getAssets , replaceReference , splitDomain } from '../../common' ;
55import * as ossDeployment from '@alicloud/ros-cdk-ossdeployment' ;
6+ import * as dns from '@alicloud/ros-cdk-dns' ;
67import path from 'node:path' ;
78import { RosRole } from '@alicloud/ros-cdk-ram' ;
89
@@ -87,6 +88,7 @@ export const resolveBuckets = (
8788 ) ;
8889 }
8990 if ( bucket . website ?. domain ) {
91+ const { rr, domainName } = splitDomain ( bucket . website . domain ) ;
9092 new oss . Domain (
9193 scope ,
9294 `${ bucket . key } _custom_domain_${ encodeBase64ForRosId ( bucket . website . domain ) } ` ,
@@ -95,6 +97,21 @@ export const resolveBuckets = (
9597 domainName : replaceReference ( bucket . website . domain , context ) ,
9698 } ,
9799 ) ;
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+ ) ;
98115 }
99116 } ) ;
100117} ;
0 commit comments