@fallobst22/cdk-cross-account-route53 0.0.9 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +2 -2
- package/API.md +0 -120
- package/lib/CrossAccountRoute53RecordSet.js +1 -1
- package/lib/delegations.js +2 -2
- package/package.json +13 -11
package/.jsii
CHANGED
|
@@ -3905,6 +3905,6 @@
|
|
|
3905
3905
|
"symbolId": "src/delegations:Route53UserProps"
|
|
3906
3906
|
}
|
|
3907
3907
|
},
|
|
3908
|
-
"version": "0.0.
|
|
3909
|
-
"fingerprint": "
|
|
3908
|
+
"version": "0.0.10",
|
|
3909
|
+
"fingerprint": "tj8VUVmOfP7LQLsship5Vrsa4EzT40TpONaIWjKIoeE="
|
|
3910
3910
|
}
|
package/API.md
CHANGED
|
@@ -1,123 +1,3 @@
|
|
|
1
|
-
# AWS CDK Cross Account Route53
|
|
2
|
-
|
|
3
|
-
AWS [CDK](https://aws.amazon.com/cdk/) Constructs that define:
|
|
4
|
-
- IAM role that can be used to allow discrete Route53 Record changes
|
|
5
|
-
- Cross Account Record construct to create Route53 cross account Route53 records
|
|
6
|
-
|
|
7
|
-
These constructs allow you to create Route53 records where the zone exists in a separate AWS account to the Cloudformation Stack.
|
|
8
|
-
|
|
9
|
-
## Getting started
|
|
10
|
-
|
|
11
|
-
```shell
|
|
12
|
-
yarn add @fallobst22/cdk-cross-account-route53
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
First create the role in the stack for the AWS account which contains the hosted zone.
|
|
16
|
-
|
|
17
|
-
```typescript
|
|
18
|
-
// DNS Stack
|
|
19
|
-
const zone = new route53.PublicHostedZone(this, 'HostedZone', {
|
|
20
|
-
zoneName: 'example.com',
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
new CrossAccountRoute53Role(this, 'WebRoute53Role', {
|
|
24
|
-
roleName: 'WebRoute53Role',
|
|
25
|
-
assumedBy: new iam.AccountPrincipal('22222222'), // Web Stack Account
|
|
26
|
-
zone,
|
|
27
|
-
records: [{ domains: ['www.example.com'] }],
|
|
28
|
-
});
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Then in the child stack create the records
|
|
32
|
-
|
|
33
|
-
```typescript
|
|
34
|
-
const hostedZoneId = 'Z12345'; // ID of the zone in the other account
|
|
35
|
-
|
|
36
|
-
const distribution = new cloudfront.Distribution(this, 'Distribution', {
|
|
37
|
-
domainNames: ['example.com'],
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
new CrossAccountRoute53RecordSet(this, 'ARecord', {
|
|
41
|
-
delegationRoleName: 'WebRoute53Role',
|
|
42
|
-
delegationRoleAccount: '111111111', // The account that contains the zone and role
|
|
43
|
-
hostedZoneId,
|
|
44
|
-
resourceRecordSets: [{
|
|
45
|
-
Name: `example.com`,
|
|
46
|
-
Type: 'A',
|
|
47
|
-
AliasTarget: {
|
|
48
|
-
DNSName: distribution.distributionDomainName,
|
|
49
|
-
HostedZoneId: 'Z2FDTNDATAQYW2', // Cloudfront Hosted Zone Id
|
|
50
|
-
EvaluateTargetHealth: false,
|
|
51
|
-
},
|
|
52
|
-
}],
|
|
53
|
-
});
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## CrossAccountRoute53Role
|
|
57
|
-
|
|
58
|
-
### Initializer
|
|
59
|
-
```typescript
|
|
60
|
-
new CrossAccountRoute53Role(scope: Construct, id: string, props: CrossAccountRoute53RoleProps)
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
*Parameters*
|
|
64
|
-
|
|
65
|
-
* **scope** Construct
|
|
66
|
-
* **id** string
|
|
67
|
-
* **props** CrossAccountRoute53RoleProps
|
|
68
|
-
|
|
69
|
-
### Construct Props
|
|
70
|
-
|
|
71
|
-
| Name | Type | Description |
|
|
72
|
-
| ---- | ---- | ----------- |
|
|
73
|
-
| roleName | `string` | The role name |
|
|
74
|
-
| assumedBy | `iam.IPrincipal` | The principals that are allowed to assume the role |
|
|
75
|
-
| zone | `route53.IHostedZone` | The hosted zone. |
|
|
76
|
-
| records | `CrossAccountRoute53RolePropsRecord[]` | The records that can be created by this role |
|
|
77
|
-
|
|
78
|
-
### CrossAccountRoute53RolePropsRecords
|
|
79
|
-
|
|
80
|
-
| Name | Type | Description |
|
|
81
|
-
| ---- | ---- | ----------- |
|
|
82
|
-
| domainNames | `string \| string[]` | The names of the records that can be created or changed |
|
|
83
|
-
| types | `route53.RecordType[]` | The typepsof records that can be created. Default `['A', 'AAAA']` |
|
|
84
|
-
| actions | `'CREATE' \| 'UPSERT' \| 'DELETE'` | The allowed actions. Default `['CREATE', 'UPSERT', 'DELETE']` |
|
|
85
|
-
|
|
86
|
-
## CrossAccountRoute53RecordSet
|
|
87
|
-
|
|
88
|
-
### Initializer
|
|
89
|
-
```typescript
|
|
90
|
-
new CrossAccountRoute53RecordSet(scope: Construct, id: string, props: CrossAccountRoute53RecordSetProps)
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
*Parameters*
|
|
94
|
-
|
|
95
|
-
* **scope** Construct
|
|
96
|
-
* **id** string
|
|
97
|
-
* **props** CrossAccountRoute53RecordSet
|
|
98
|
-
|
|
99
|
-
### Construct Props
|
|
100
|
-
|
|
101
|
-
| Name | Type | Description |
|
|
102
|
-
| ---- | ---- | ----------- |
|
|
103
|
-
| delegationRoleName | `string` | The role name created in the account with the hosted zone |
|
|
104
|
-
| delegationRoleAccount | `string` | The account identfier of the account with the hosted zone |
|
|
105
|
-
| hostedZoneId | `string` | The hosted zoned id |
|
|
106
|
-
| resourceRecordSets | `Route53.ResourceRecordSets` | The changes to be applied. These are in the same format as taken by [ChangeResourceRecordSets Action](https://docs.aws.amazon.com/Route53/latest/APIReference/API_ResourceRecordSet.html) |
|
|
107
|
-
|
|
108
|
-
## Development Status
|
|
109
|
-
|
|
110
|
-
These constructs will stay in `v0.x.x` for a while, to allow easier bug fixing & breaking changes _if absolutely needed_.
|
|
111
|
-
Once bugs are fixed (if any), the constructs will be published with `v1` major version and will be marked as stable.
|
|
112
|
-
|
|
113
|
-
Only typescript has been tested.
|
|
114
|
-
|
|
115
|
-
## Development
|
|
116
|
-
|
|
117
|
-
* `npm run build` compile typescript to js
|
|
118
|
-
* `npm run watch` watch for changes and compile
|
|
119
|
-
* `npm run test` perform the jest unit tests
|
|
120
|
-
|
|
121
1
|
# API Reference <a name="API Reference" id="api-reference"></a>
|
|
122
2
|
|
|
123
3
|
## Constructs <a name="Constructs" id="Constructs"></a>
|
|
@@ -44,5 +44,5 @@ class CrossAccountRoute53RecordSet extends constructs_1.Construct {
|
|
|
44
44
|
}
|
|
45
45
|
exports.CrossAccountRoute53RecordSet = CrossAccountRoute53RecordSet;
|
|
46
46
|
_a = JSII_RTTI_SYMBOL_1;
|
|
47
|
-
CrossAccountRoute53RecordSet[_a] = { fqn: "@fallobst22/cdk-cross-account-route53.CrossAccountRoute53RecordSet", version: "0.0.
|
|
47
|
+
CrossAccountRoute53RecordSet[_a] = { fqn: "@fallobst22/cdk-cross-account-route53.CrossAccountRoute53RecordSet", version: "0.0.10" };
|
|
48
48
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3Jvc3NBY2NvdW50Um91dGU1M1JlY29yZFNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Dcm9zc0FjY291bnRSb3V0ZTUzUmVjb3JkU2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBRTdCLDZDQUEyRztBQUUzRywyQ0FBMkM7QUFDM0MsMkNBQXVDO0FBU3ZDLE1BQWEsNEJBQTZCLFNBQVEsc0JBQVM7SUFDekQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QztRQUNoRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0saUJBQWlCLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2pELE1BQU0sRUFBRSxFQUFFO1lBQ1YsT0FBTyxFQUFFLEtBQUs7WUFDZCxPQUFPLEVBQUUsS0FBSyxDQUFDLHFCQUFxQjtZQUNwQyxRQUFRLEVBQUUsTUFBTTtZQUNoQixZQUFZLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtTQUN2QyxDQUFDLENBQUM7UUFFSCxNQUFNLGtCQUFrQixHQUFHLHNDQUFzQyxDQUFDO1FBRWxFLE1BQU0sUUFBUSxHQUFHLG9DQUFzQixDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUNwRixhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsa0NBQWtDLENBQUM7WUFDdkUsT0FBTyxFQUFFLDJDQUE2QixDQUFDLFdBQVc7U0FDbkQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLHVDQUF1QyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRyxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDbkYsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztZQUN4QixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUMzQixTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztTQUMvQixDQUFDLENBQUMsQ0FBQztRQUVKLE1BQU0sY0FBYyxHQUFHLElBQUksNEJBQWMsQ0FBQyxJQUFJLEVBQUUscUNBQXFDLEVBQUU7WUFDckYsWUFBWSxFQUFFLGtCQUFrQjtZQUNoQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7WUFDbkMsVUFBVSxFQUFFO2dCQUNWLGFBQWEsRUFBRSxpQkFBaUI7Z0JBQ2hDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDaEMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7YUFDN0Q7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLDBCQUEwQixDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDaEQsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRixDQUFDO0lBQ0gsQ0FBQzs7QUF4Q0gsb0VBeUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UsIEN1c3RvbVJlc291cmNlUHJvdmlkZXIsIEN1c3RvbVJlc291cmNlUHJvdmlkZXJSdW50aW1lLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcblxuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3Jvc3NBY2NvdW50Um91dGU1M1JlY29yZFNldFByb3BzIHtcbiAgcmVhZG9ubHkgZGVsZWdhdGlvblJvbGVOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlbGVnYXRpb25Sb2xlQWNjb3VudDogc3RyaW5nO1xuICByZWFkb25seSBob3N0ZWRab25lSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVzb3VyY2VSZWNvcmRTZXRzOiBhbnk7IC8vIFJvdXRlNTMuUmVzb3VyY2VSZWNvcmRTZXRbXSxcbn1cblxuZXhwb3J0IGNsYXNzIENyb3NzQWNjb3VudFJvdXRlNTNSZWNvcmRTZXQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ3Jvc3NBY2NvdW50Um91dGU1M1JlY29yZFNldFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRlbGVnYXRpb25Sb2xlQXJuID0gU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgIHJlZ2lvbjogJycsXG4gICAgICBzZXJ2aWNlOiAnaWFtJyxcbiAgICAgIGFjY291bnQ6IHByb3BzLmRlbGVnYXRpb25Sb2xlQWNjb3VudCxcbiAgICAgIHJlc291cmNlOiAncm9sZScsXG4gICAgICByZXNvdXJjZU5hbWU6IHByb3BzLmRlbGVnYXRpb25Sb2xlTmFtZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGN1c3RvbVJlc291cmNlVHlwZSA9ICdDdXN0b206OkNyb3NzQWNjb3VudFJvdXRlNTNSZWNvcmRTZXQnO1xuXG4gICAgY29uc3QgcHJvdmlkZXIgPSBDdXN0b21SZXNvdXJjZVByb3ZpZGVyLmdldE9yQ3JlYXRlUHJvdmlkZXIodGhpcywgY3VzdG9tUmVzb3VyY2VUeXBlLCB7XG4gICAgICBjb2RlRGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnY3Jvc3MtYWNjb3VudC1yZWNvcmQtc2V0LWhhbmRsZXInKSxcbiAgICAgIHJ1bnRpbWU6IEN1c3RvbVJlc291cmNlUHJvdmlkZXJSdW50aW1lLk5PREVKU18xOF9YLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgcm9sZSA9IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKHRoaXMsICdjcm9zcy1hY2NvdW50LXJlY29yZC1zZXQtaGFuZGxlci1yb2xlJywgcHJvdmlkZXIucm9sZUFybik7XG5cbiAgICBjb25zdCBhZGRUb1ByaW5jaXBsZVBvbGljeVJlc3VsdCA9IHJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogWydzdHM6QXNzdW1lUm9sZSddLFxuICAgICAgcmVzb3VyY2VzOiBbZGVsZWdhdGlvblJvbGVBcm5dLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGN1c3RvbVJlc291cmNlID0gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsICdDcm9zc0FjY291bnRSZWNvcmRTZXRDdXN0b21SZXNvdXJjZScsIHtcbiAgICAgIHJlc291cmNlVHlwZTogY3VzdG9tUmVzb3VyY2VUeXBlLFxuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIEFzc3VtZVJvbGVBcm46IGRlbGVnYXRpb25Sb2xlQXJuLFxuICAgICAgICBIb3N0ZWRab25lSWQ6IHByb3BzLmhvc3RlZFpvbmVJZCxcbiAgICAgICAgUmVzb3VyY2VSZWNvcmRTZXRzOiBKU09OLnN0cmluZ2lmeShwcm9wcy5yZXNvdXJjZVJlY29yZFNldHMpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChhZGRUb1ByaW5jaXBsZVBvbGljeVJlc3VsdC5wb2xpY3lEZXBlbmRhYmxlKSB7XG4gICAgICBjdXN0b21SZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3koYWRkVG9QcmluY2lwbGVQb2xpY3lSZXN1bHQucG9saWN5RGVwZW5kYWJsZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/lib/delegations.js
CHANGED
|
@@ -24,7 +24,7 @@ class CrossAccountRoute53Role extends constructs_1.Construct {
|
|
|
24
24
|
}
|
|
25
25
|
exports.CrossAccountRoute53Role = CrossAccountRoute53Role;
|
|
26
26
|
_a = JSII_RTTI_SYMBOL_1;
|
|
27
|
-
CrossAccountRoute53Role[_a] = { fqn: "@fallobst22/cdk-cross-account-route53.CrossAccountRoute53Role", version: "0.0.
|
|
27
|
+
CrossAccountRoute53Role[_a] = { fqn: "@fallobst22/cdk-cross-account-route53.CrossAccountRoute53Role", version: "0.0.10" };
|
|
28
28
|
class Route53User extends constructs_1.Construct {
|
|
29
29
|
constructor(scope, id, props) {
|
|
30
30
|
super(scope, id);
|
|
@@ -44,7 +44,7 @@ class Route53User extends constructs_1.Construct {
|
|
|
44
44
|
}
|
|
45
45
|
exports.Route53User = Route53User;
|
|
46
46
|
_b = JSII_RTTI_SYMBOL_1;
|
|
47
|
-
Route53User[_b] = { fqn: "@fallobst22/cdk-cross-account-route53.Route53User", version: "0.0.
|
|
47
|
+
Route53User[_b] = { fqn: "@fallobst22/cdk-cross-account-route53.Route53User", version: "0.0.10" };
|
|
48
48
|
function buildDelegationStatements(props) {
|
|
49
49
|
const statements = props.records.flatMap((r) => {
|
|
50
50
|
const recordStatements = [];
|
package/package.json
CHANGED
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"@aws-sdk/client-sts": "^3.529.1",
|
|
38
38
|
"@aws-sdk/credential-providers": "^3.529.1",
|
|
39
39
|
"@types/aws-lambda": "^8.10.136",
|
|
40
|
-
"@types/jest": "^
|
|
40
|
+
"@types/jest": "^29.0.0",
|
|
41
41
|
"@types/node": "^18",
|
|
42
42
|
"@typescript-eslint/eslint-plugin": "^6",
|
|
43
43
|
"@typescript-eslint/parser": "^6",
|
|
@@ -46,17 +46,17 @@
|
|
|
46
46
|
"eslint": "^8",
|
|
47
47
|
"eslint-import-resolver-typescript": "^3.6.1",
|
|
48
48
|
"eslint-plugin-import": "^2.29.1",
|
|
49
|
-
"jest": "^
|
|
49
|
+
"jest": "^29.0.0",
|
|
50
50
|
"jest-junit": "^15",
|
|
51
51
|
"jsii": "~5.3.0",
|
|
52
52
|
"jsii-diff": "^1.95.0",
|
|
53
|
-
"jsii-docgen": "^
|
|
53
|
+
"jsii-docgen": "^10.0.0",
|
|
54
54
|
"jsii-pacmak": "^1.95.0",
|
|
55
55
|
"jsii-rosetta": "~5.3.0",
|
|
56
56
|
"projen": "^0.80.9",
|
|
57
57
|
"standard-version": "^9",
|
|
58
|
-
"ts-jest": "^
|
|
59
|
-
"typescript": "^
|
|
58
|
+
"ts-jest": "^29.0.0",
|
|
59
|
+
"typescript": "^5.0.0"
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
62
62
|
"aws-cdk-lib": "^v2.82.0",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
],
|
|
75
75
|
"main": "lib/index.js",
|
|
76
76
|
"license": "Apache-2.0",
|
|
77
|
-
"version": "0.0.
|
|
77
|
+
"version": "0.0.10",
|
|
78
78
|
"jest": {
|
|
79
79
|
"testMatch": [
|
|
80
80
|
"<rootDir>/src/**/__tests__/**/*.ts?(x)",
|
|
@@ -108,11 +108,13 @@
|
|
|
108
108
|
}
|
|
109
109
|
]
|
|
110
110
|
],
|
|
111
|
-
"
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
111
|
+
"transform": {
|
|
112
|
+
"^.+\\.[t]sx?$": [
|
|
113
|
+
"ts-jest",
|
|
114
|
+
{
|
|
115
|
+
"tsconfig": "tsconfig.dev.json"
|
|
116
|
+
}
|
|
117
|
+
]
|
|
116
118
|
}
|
|
117
119
|
},
|
|
118
120
|
"types": "lib/index.d.ts",
|