CDK Construct to allow creation of Route 53 records in a different account
Project description
AWS CDK Cross Account Route53
AWS CDK Constructs that define:
- IAM role that can be used to allow discrete Route53 Record changes
- Cross Account Record construct to create Route53 cross account Route53 records
These constructs allow you to create Route53 records where the zone exists in a separate AWS account to the Cloudformation Stack.
Getting started
yarn add cdk-cross-account-route53
First create the role in the stack for the AWS account which contains the hosted zone.
// DNS Stack
const zone = new route53.PublicHostedZone(this, 'HostedZone', {
zoneName: 'example.com',
});
new CrossAccountRoute53Role(this, 'WebRoute53Role', {
roleName: 'WebRoute53Role',
assumedBy: new iam.AccountPrincipal('22222222'), // Web Stack Account
zone,
records: [{ domainNames: 'www.example.com' }],
});
Then in the child stack create the records
const hostedZoneId = 'Z12345'; // ID of the zone in the other account
const distribution = new cloudfront.Distribution(this, 'Distribution', {
domainNames: ['example.com'],
});
new CrossAccountRoute53RecordSet(this, 'ARecord', {
delegationRoleName: 'WebRoute53Role',
delegationRoleAccount: '111111111', // The account that contains the zone and role
hostedZoneId,
resourceRecordSets: [{
Name: `example.com`,
Type: 'A',
AliasTarget: {
DNSName: distribution.distributionDomainName,
HostedZoneId: 'Z2FDTNDATAQYW2', // Cloudfront Hosted Zone Id
EvaluateTargetHealth: false,
},
}],
});
CrossAccountRoute53Role
Initializer
new CrossAccountRoute53Role(scope: Construct, id: string, props: CrossAccountRoute53RoleProps)
Parameters
- scope Construct
- id string
- props CrossAccountRoute53RoleProps
Construct Props
| Name | Type | Description |
|---|---|---|
| roleName | string |
The role name |
| assumedBy | iam.IPrincipal |
The principals that are allowed to assume the role |
| zone | route53.IHostedZone |
The hosted zone. |
| records | CrossAccountRoute53RolePropsRecord[] |
The records that can be created by this role |
CrossAccountRoute53RolePropsRecords
| Name | Type | Description |
|---|---|---|
| domainNames | string | string[] |
The names of the records that can be created or changed |
| types | route53.RecordType[] |
The typepsof records that can be created. Default ['A', 'AAAA'] |
| actions | 'CREATE' | 'UPSERT' | 'DELETE' |
The allowed actions. Default ['CREATE', 'UPSERT', 'DELETE'] |
CrossAccountRoute53RecordSet
Initializer
new CrossAccountRoute53RecordSet(scope: Construct, id: string, props: CrossAccountRoute53RecordSetProps)
Parameters
- scope Construct
- id string
- props CrossAccountRoute53RecordSet
Construct Props
| Name | Type | Description |
|---|---|---|
| delegationRoleName | string |
The role name created in the account with the hosted zone |
| delegationRoleAccount | string |
The account identfier of the account with the hosted zone |
| hostedZoneId | string |
The hosted zoned id |
| resourceRecordSets | Route53.ResourceRecordSets |
The changes to be applied. These are in the same format as taken by ChangeResourceRecordSets Action |
Development Status
These constructs will stay in v0.x.x for a while, to allow easier bug fixing & breaking changes if absolutely needed.
Once bugs are fixed (if any), the constructs will be published with v1 major version and will be marked as stable.
Only typescript has been tested.
Development
npm run buildcompile typescript to jsnpm run watchwatch for changes and compilenpm run testperform the jest unit tests
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cdk-cross-account-route53-0.0.5.tar.gz.
File metadata
- Download URL: cdk-cross-account-route53-0.0.5.tar.gz
- Upload date:
- Size: 38.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea090be439676cdea5bfabb44664692dd9f297e36b7a25805fa7bcd2fa6b360d
|
|
| MD5 |
93c9c3695a2d25a1f8157f1fad19882b
|
|
| BLAKE2b-256 |
fb656dbd12c42115cb744f0f792c7f95df44d05992feaa68a1547b8dc5ba5e51
|
File details
Details for the file cdk_cross_account_route53-0.0.5-py3-none-any.whl.
File metadata
- Download URL: cdk_cross_account_route53-0.0.5-py3-none-any.whl
- Upload date:
- Size: 37.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3beed6bae9bf5492b67c70541162e69e9f74364658904d45ce2009f54bc71c8d
|
|
| MD5 |
6ad183669412452f3bf453fc8cd1f460
|
|
| BLAKE2b-256 |
680feff66505492b816018c6b223ec7e40835c89227fe9e0316517003f913610
|