dbt-platform-helper 11.4.0__py3-none-any.whl → 12.0.0__py3-none-any.whl
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.
- dbt_platform_helper/COMMANDS.md +3 -252
- dbt_platform_helper/addons-template-map.yml +7 -33
- dbt_platform_helper/commands/application.py +8 -7
- dbt_platform_helper/commands/conduit.py +1 -4
- dbt_platform_helper/commands/copilot.py +14 -110
- dbt_platform_helper/commands/environment.py +0 -5
- dbt_platform_helper/commands/pipeline.py +1 -13
- dbt_platform_helper/domain/database_copy.py +2 -2
- dbt_platform_helper/domain/maintenance_page.py +0 -3
- dbt_platform_helper/templates/addon-instructions.txt +1 -1
- dbt_platform_helper/templates/addons/svc/s3-policy.yml +0 -8
- dbt_platform_helper/utils/platform_config.py +2 -7
- dbt_platform_helper/utils/validation.py +3 -78
- {dbt_platform_helper-11.4.0.dist-info → dbt_platform_helper-12.0.0.dist-info}/METADATA +1 -1
- {dbt_platform_helper-11.4.0.dist-info → dbt_platform_helper-12.0.0.dist-info}/RECORD +19 -32
- platform_helper.py +0 -8
- dbt_platform_helper/commands/check_cloudformation.py +0 -87
- dbt_platform_helper/commands/dns.py +0 -952
- dbt_platform_helper/custom_resources/__init__.py +0 -0
- dbt_platform_helper/custom_resources/s3_object.py +0 -85
- dbt_platform_helper/templates/addons/env/addons.parameters.yml +0 -19
- dbt_platform_helper/templates/addons/env/aurora-postgres.yml +0 -604
- dbt_platform_helper/templates/addons/env/monitoring.yml +0 -121
- dbt_platform_helper/templates/addons/env/opensearch.yml +0 -257
- dbt_platform_helper/templates/addons/env/rds-postgres.yml +0 -603
- dbt_platform_helper/templates/addons/env/redis-cluster.yml +0 -171
- dbt_platform_helper/templates/addons/env/s3.yml +0 -219
- dbt_platform_helper/templates/addons/env/vpc.yml +0 -120
- dbt_platform_helper/utils/cloudformation.py +0 -34
- {dbt_platform_helper-11.4.0.dist-info → dbt_platform_helper-12.0.0.dist-info}/LICENSE +0 -0
- {dbt_platform_helper-11.4.0.dist-info → dbt_platform_helper-12.0.0.dist-info}/WHEEL +0 -0
- {dbt_platform_helper-11.4.0.dist-info → dbt_platform_helper-12.0.0.dist-info}/entry_points.txt +0 -0
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
# {% extra_header %}
|
|
2
|
-
# {% version_info %}
|
|
3
|
-
|
|
4
|
-
Parameters:
|
|
5
|
-
# Copilot required Parameters...
|
|
6
|
-
App:
|
|
7
|
-
Type: String
|
|
8
|
-
Description: Your application's name.
|
|
9
|
-
Env:
|
|
10
|
-
Type: String
|
|
11
|
-
Description: The environment name your service, job, or workflow is being deployed to.
|
|
12
|
-
|
|
13
|
-
# Parameters from the parent stack brought in via addons.parameters.yml...
|
|
14
|
-
EnvironmentSecurityGroup:
|
|
15
|
-
Type: String
|
|
16
|
-
PrivateSubnets:
|
|
17
|
-
Type: String
|
|
18
|
-
VpcId:
|
|
19
|
-
Type: String
|
|
20
|
-
|
|
21
|
-
Mappings:
|
|
22
|
-
{{ addon_config.prefix }}EnvironmentConfigMap:
|
|
23
|
-
{%- for env_name, config in addon_config.environments.items() %}
|
|
24
|
-
{{ env_name }}:
|
|
25
|
-
EngineVersion: '{{ config.engine }}'
|
|
26
|
-
CacheNodeType: '{{ config.instance }}'
|
|
27
|
-
NumReplicas: {{ config.replicas }}
|
|
28
|
-
DeletionPolicy: {{ config.deletion_policy }}
|
|
29
|
-
{%- endfor %}
|
|
30
|
-
|
|
31
|
-
{{ addon_config.prefix }}EngineVersionMap:
|
|
32
|
-
'7.1':
|
|
33
|
-
CacheParameterGroupFamily: 'redis7.x'
|
|
34
|
-
'7.0':
|
|
35
|
-
CacheParameterGroupFamily: 'redis7.x'
|
|
36
|
-
'6.2':
|
|
37
|
-
CacheParameterGroupFamily: 'redis6.x'
|
|
38
|
-
|
|
39
|
-
Conditions:
|
|
40
|
-
{{ addon_config.prefix }}HasAutomaticFailoverEnabled: !Not [!Equals [!FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, NumReplicas], 0]]
|
|
41
|
-
{{ addon_config.prefix }}CreateProdSubFilter: !Or [!Equals [!Ref Env, prod], !Equals [!Ref Env, production], !Equals [!Ref Env, PROD], !Equals [!Ref Env, PRODUCTION]]
|
|
42
|
-
|
|
43
|
-
Resources:
|
|
44
|
-
|
|
45
|
-
{{ addon_config.prefix }}CacheParameterGroup:
|
|
46
|
-
Type: 'AWS::ElastiCache::ParameterGroup'
|
|
47
|
-
DeletionPolicy: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, DeletionPolicy]
|
|
48
|
-
UpdateReplacePolicy: Retain
|
|
49
|
-
Properties:
|
|
50
|
-
CacheParameterGroupFamily: !FindInMap
|
|
51
|
-
- {{ addon_config.prefix }}EngineVersionMap
|
|
52
|
-
- !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, EngineVersion]
|
|
53
|
-
- CacheParameterGroupFamily
|
|
54
|
-
Description: !Ref 'AWS::StackName'
|
|
55
|
-
Properties: {}
|
|
56
|
-
|
|
57
|
-
{{ addon_config.prefix }}CacheSubnetGroupName:
|
|
58
|
-
Type: 'AWS::ElastiCache::SubnetGroup'
|
|
59
|
-
DeletionPolicy: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, DeletionPolicy]
|
|
60
|
-
UpdateReplacePolicy: Retain
|
|
61
|
-
Properties:
|
|
62
|
-
Description: !Ref 'AWS::StackName'
|
|
63
|
-
SubnetIds: !Split [ ",", !Ref PrivateSubnets ]
|
|
64
|
-
|
|
65
|
-
{{ addon_config.prefix }}SecurityGroup:
|
|
66
|
-
Type: 'AWS::EC2::SecurityGroup'
|
|
67
|
-
DeletionPolicy: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, DeletionPolicy]
|
|
68
|
-
UpdateReplacePolicy: Retain
|
|
69
|
-
Properties:
|
|
70
|
-
GroupDescription: !Ref 'AWS::StackName'
|
|
71
|
-
VpcId: !Ref VpcId
|
|
72
|
-
SecurityGroupIngress:
|
|
73
|
-
- IpProtocol: tcp
|
|
74
|
-
FromPort: 6379
|
|
75
|
-
ToPort: 6379
|
|
76
|
-
SourceSecurityGroupId: !Ref EnvironmentSecurityGroup
|
|
77
|
-
Tags:
|
|
78
|
-
- Key: Name
|
|
79
|
-
Value: !Sub 'copilot-${App}-${Env}-{{ addon_config.name }}-Redis-SecurityGroup'
|
|
80
|
-
|
|
81
|
-
{{ addon_config.prefix }}ReplicationGroup:
|
|
82
|
-
Type: 'AWS::ElastiCache::ReplicationGroup'
|
|
83
|
-
DeletionPolicy: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, DeletionPolicy]
|
|
84
|
-
UpdateReplacePolicy: Retain
|
|
85
|
-
Properties:
|
|
86
|
-
ReplicationGroupDescription: !Ref 'AWS::StackName'
|
|
87
|
-
AtRestEncryptionEnabled: true
|
|
88
|
-
AutomaticFailoverEnabled: !If [{{ addon_config.prefix }}HasAutomaticFailoverEnabled, true, false]
|
|
89
|
-
MultiAZEnabled: !If [{{ addon_config.prefix }}HasAutomaticFailoverEnabled, true, false]
|
|
90
|
-
CacheNodeType: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, CacheNodeType]
|
|
91
|
-
CacheParameterGroupName: !Ref {{ addon_config.prefix }}CacheParameterGroup
|
|
92
|
-
CacheSubnetGroupName: !Ref {{ addon_config.prefix }}CacheSubnetGroupName
|
|
93
|
-
Engine: redis
|
|
94
|
-
EngineVersion: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, EngineVersion]
|
|
95
|
-
NumNodeGroups: 1 # run in non clustered mode with 1 master and 0-5 replicas
|
|
96
|
-
ReplicasPerNodeGroup: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, NumReplicas]
|
|
97
|
-
PreferredMaintenanceWindow: 'sat:07:00-sat:08:00'
|
|
98
|
-
LogDeliveryConfigurations:
|
|
99
|
-
- DestinationDetails:
|
|
100
|
-
CloudWatchLogsDetails:
|
|
101
|
-
LogGroup: !Sub '/aws/elasticache/${App}/${Env}/{{ addon_config.prefix }}/slow'
|
|
102
|
-
DestinationType: cloudwatch-logs
|
|
103
|
-
LogFormat: json
|
|
104
|
-
LogType: slow-log
|
|
105
|
-
- DestinationDetails:
|
|
106
|
-
CloudWatchLogsDetails:
|
|
107
|
-
LogGroup: !Sub '/aws/elasticache/${App}/${Env}/{{ addon_config.prefix }}/engine'
|
|
108
|
-
DestinationType: cloudwatch-logs
|
|
109
|
-
LogFormat: json
|
|
110
|
-
LogType: engine-log
|
|
111
|
-
SecurityGroupIds:
|
|
112
|
-
- !Ref {{ addon_config.prefix }}SecurityGroup
|
|
113
|
-
|
|
114
|
-
TransitEncryptionEnabled: true
|
|
115
|
-
# UpdatePolicy:
|
|
116
|
-
# UseOnlineResharding: true
|
|
117
|
-
|
|
118
|
-
{{ addon_config.prefix }}RedisSlowLogGroup:
|
|
119
|
-
Type: AWS::Logs::LogGroup
|
|
120
|
-
Properties:
|
|
121
|
-
LogGroupName: !Sub '/aws/elasticache/${App}/${Env}/{{ addon_config.prefix }}/slow'
|
|
122
|
-
RetentionInDays: 7
|
|
123
|
-
Tags:
|
|
124
|
-
- Key: 'Copilot-Application'
|
|
125
|
-
Value: !Sub ${App}
|
|
126
|
-
- Key: 'Copilot-Environment'
|
|
127
|
-
Value: !Sub ${Env}
|
|
128
|
-
|
|
129
|
-
{{ addon_config.prefix }}RedisEngineLogGroup:
|
|
130
|
-
Type: AWS::Logs::LogGroup
|
|
131
|
-
Properties:
|
|
132
|
-
LogGroupName: !Sub '/aws/elasticache/${App}/${Env}/{{ addon_config.prefix }}/engine'
|
|
133
|
-
RetentionInDays: 7
|
|
134
|
-
Tags:
|
|
135
|
-
- Key: 'Copilot-Application'
|
|
136
|
-
Value: !Sub ${App}
|
|
137
|
-
- Key: 'Copilot-Environment'
|
|
138
|
-
Value: !Sub ${Env}
|
|
139
|
-
|
|
140
|
-
# Redis endpoint stored in SSM so that other `services` can retrieve the endpoint.
|
|
141
|
-
{{ addon_config.prefix }}EndpointAddressParam:
|
|
142
|
-
Type: AWS::SSM::Parameter
|
|
143
|
-
Properties:
|
|
144
|
-
Name: !Sub '/copilot/${App}/${Env}/secrets/{{ addon_config.secret_name }}' # Other services can retrieve the endpoint from this path.
|
|
145
|
-
Type: String
|
|
146
|
-
Value: !Sub
|
|
147
|
-
- 'rediss://${url}:${port}'
|
|
148
|
-
- url: !GetAtt '{{ addon_config.prefix }}ReplicationGroup.PrimaryEndPoint.Address'
|
|
149
|
-
port: !GetAtt '{{ addon_config.prefix }}ReplicationGroup.PrimaryEndPoint.Port'
|
|
150
|
-
|
|
151
|
-
{{ addon_config.prefix }}SubscriptionFilterEngine:
|
|
152
|
-
Type: AWS::Logs::SubscriptionFilter
|
|
153
|
-
DependsOn:
|
|
154
|
-
- {{ addon_config.prefix }}RedisEngineLogGroup
|
|
155
|
-
Properties:
|
|
156
|
-
RoleArn: !Sub 'arn:aws:iam::${AWS::AccountId}:role/CWLtoSubscriptionFilterRole'
|
|
157
|
-
LogGroupName: !Sub '/aws/elasticache/${App}/${Env}/{{ addon_config.prefix }}/engine'
|
|
158
|
-
FilterName: !Sub '/aws/elasticache/${App}/${Env}/${{ '{' }}{{ addon_config.prefix }}ReplicationGroup}/engine'
|
|
159
|
-
FilterPattern: ''
|
|
160
|
-
DestinationArn: !If [{{ addon_config.prefix }}CreateProdSubFilter, '{{ log_destination.prod }}', '{{ log_destination.dev }}']
|
|
161
|
-
|
|
162
|
-
{{ addon_config.prefix }}SubscriptionFilterSlow:
|
|
163
|
-
Type: AWS::Logs::SubscriptionFilter
|
|
164
|
-
DependsOn:
|
|
165
|
-
- {{ addon_config.prefix }}RedisSlowLogGroup
|
|
166
|
-
Properties:
|
|
167
|
-
RoleArn: !Sub 'arn:aws:iam::${AWS::AccountId}:role/CWLtoSubscriptionFilterRole'
|
|
168
|
-
LogGroupName: !Sub '/aws/elasticache/${App}/${Env}/{{ addon_config.prefix }}/slow'
|
|
169
|
-
FilterName: !Sub '/aws/elasticache/${App}/${Env}/${{ '{' }}{{ addon_config.prefix }}ReplicationGroup}/slow'
|
|
170
|
-
FilterPattern: ''
|
|
171
|
-
DestinationArn: !If [{{ addon_config.prefix }}CreateProdSubFilter, '{{ log_destination.prod }}', '{{ log_destination.dev }}']
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
# {% extra_header %}
|
|
2
|
-
# {% version_info %}
|
|
3
|
-
Transform: AWS::LanguageExtensions
|
|
4
|
-
|
|
5
|
-
Parameters:
|
|
6
|
-
# Copilot required Parameters...
|
|
7
|
-
App:
|
|
8
|
-
Type: String
|
|
9
|
-
Description: Your application's name.
|
|
10
|
-
Env:
|
|
11
|
-
Type: String
|
|
12
|
-
Description: The environment name your service, job, or workflow is being deployed to.
|
|
13
|
-
|
|
14
|
-
Mappings:
|
|
15
|
-
{{ addon_config.prefix }}EnvironmentConfigMap:
|
|
16
|
-
# Create an entry for each environment
|
|
17
|
-
{% for env_name, config in addon_config.environments.items() %}
|
|
18
|
-
{{ env_name }}:
|
|
19
|
-
BucketName: '{{ config.bucket_name }}'
|
|
20
|
-
DeletionPolicy: {{ config.deletion_policy }}
|
|
21
|
-
{%- if config.retention_policy %}
|
|
22
|
-
RetentionMode: {{ config.retention_policy.mode }}
|
|
23
|
-
{%- if config.retention_policy.days %}
|
|
24
|
-
RetentionDurationType: Days
|
|
25
|
-
RetentionDuration: {{ config.retention_policy.days }}
|
|
26
|
-
{%- else %}
|
|
27
|
-
RetentionDurationType: Years
|
|
28
|
-
RetentionDuration: {{ config.retention_policy.years }}
|
|
29
|
-
{%- endif %}
|
|
30
|
-
{%- endif %}
|
|
31
|
-
{%- endfor %}
|
|
32
|
-
|
|
33
|
-
Conditions:
|
|
34
|
-
{{ addon_config.prefix }}ApplyRetentionPolicy: !Not
|
|
35
|
-
- !Equals
|
|
36
|
-
- !FindInMap
|
|
37
|
-
- {{ addon_config.prefix }}EnvironmentConfigMap
|
|
38
|
-
- !Ref Env
|
|
39
|
-
- RetentionMode
|
|
40
|
-
- DefaultValue: No retention
|
|
41
|
-
- No retention
|
|
42
|
-
{{ addon_config.prefix }}RetentionPolicyDurationIsInDays: !Equals
|
|
43
|
-
- !FindInMap
|
|
44
|
-
- {{ addon_config.prefix }}EnvironmentConfigMap
|
|
45
|
-
- !Ref Env
|
|
46
|
-
- RetentionDurationType
|
|
47
|
-
- DefaultValue: Days
|
|
48
|
-
- Days
|
|
49
|
-
|
|
50
|
-
Resources:
|
|
51
|
-
{{ addon_config.prefix }}KMSKey:
|
|
52
|
-
Type: "AWS::KMS::Key"
|
|
53
|
-
DeletionPolicy: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, DeletionPolicy]
|
|
54
|
-
UpdateReplacePolicy: Retain
|
|
55
|
-
Properties:
|
|
56
|
-
Description: "KMS Key for RDS encryption"
|
|
57
|
-
KeyPolicy:
|
|
58
|
-
Version: '2012-10-17'
|
|
59
|
-
Id: !Sub '${App}-${Env}-{{ addon_config.prefix }}-key'
|
|
60
|
-
Statement:
|
|
61
|
-
- Sid: Enable IAM User Permissions
|
|
62
|
-
Effect: Allow
|
|
63
|
-
Principal:
|
|
64
|
-
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:root"
|
|
65
|
-
Action: kms:*
|
|
66
|
-
Resource: '*'
|
|
67
|
-
|
|
68
|
-
{{ addon_config.prefix }}KeyAlias:
|
|
69
|
-
Type: 'AWS::KMS::Alias'
|
|
70
|
-
DeletionPolicy: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, DeletionPolicy]
|
|
71
|
-
UpdateReplacePolicy: Retain
|
|
72
|
-
Properties:
|
|
73
|
-
AliasName: !Sub 'alias/${App}-${Env}-{{ addon_config.prefix }}-key'
|
|
74
|
-
TargetKeyId: !Ref {{ addon_config.prefix }}KMSKey
|
|
75
|
-
|
|
76
|
-
{{ addon_config.prefix }}Bucket:
|
|
77
|
-
Metadata:
|
|
78
|
-
'aws:copilot:description': 'An Amazon S3 bucket to store and retrieve objects for {{ addon_config.prefix }}'
|
|
79
|
-
Type: AWS::S3::Bucket
|
|
80
|
-
DeletionPolicy: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, DeletionPolicy]
|
|
81
|
-
UpdateReplacePolicy: Retain
|
|
82
|
-
Properties:
|
|
83
|
-
BucketName: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, BucketName]
|
|
84
|
-
AccessControl: Private
|
|
85
|
-
BucketEncryption:
|
|
86
|
-
ServerSideEncryptionConfiguration:
|
|
87
|
-
- ServerSideEncryptionByDefault:
|
|
88
|
-
SSEAlgorithm: aws:kms
|
|
89
|
-
KMSMasterKeyID: !Ref {{ addon_config.prefix }}KMSKey
|
|
90
|
-
ObjectLockConfiguration:
|
|
91
|
-
!If
|
|
92
|
-
- {{ addon_config.prefix }}ApplyRetentionPolicy
|
|
93
|
-
- ObjectLockEnabled: Enabled
|
|
94
|
-
Rule:
|
|
95
|
-
DefaultRetention: !If
|
|
96
|
-
- {{ addon_config.prefix }}RetentionPolicyDurationIsInDays
|
|
97
|
-
- Mode: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, RetentionMode]
|
|
98
|
-
Days: !FindInMap
|
|
99
|
-
- {{ addon_config.prefix }}EnvironmentConfigMap
|
|
100
|
-
- !Ref Env
|
|
101
|
-
- RetentionDuration
|
|
102
|
-
- Mode: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, RetentionMode]
|
|
103
|
-
Years: !FindInMap
|
|
104
|
-
- {{ addon_config.prefix }}EnvironmentConfigMap
|
|
105
|
-
- !Ref Env
|
|
106
|
-
- RetentionDuration
|
|
107
|
-
- !Ref AWS::NoValue
|
|
108
|
-
VersioningConfiguration:
|
|
109
|
-
Status: Enabled
|
|
110
|
-
PublicAccessBlockConfiguration:
|
|
111
|
-
BlockPublicAcls: true
|
|
112
|
-
BlockPublicPolicy: true
|
|
113
|
-
IgnorePublicAcls: true
|
|
114
|
-
RestrictPublicBuckets: true
|
|
115
|
-
Tags:
|
|
116
|
-
- Key: Copilot-application
|
|
117
|
-
Value: !Ref App
|
|
118
|
-
- Key: Copilot-environment
|
|
119
|
-
Value: !Ref Env
|
|
120
|
-
- Key: Copilot-deletion-policy
|
|
121
|
-
Value: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, DeletionPolicy]
|
|
122
|
-
|
|
123
|
-
{{ addon_config.prefix }}BucketPolicy:
|
|
124
|
-
Metadata:
|
|
125
|
-
'aws:copilot:description': 'A bucket policy to deny unencrypted access to the bucket and its contents'
|
|
126
|
-
Type: AWS::S3::BucketPolicy
|
|
127
|
-
DeletionPolicy: !FindInMap [{{ addon_config.prefix }}EnvironmentConfigMap, !Ref Env, DeletionPolicy]
|
|
128
|
-
UpdateReplacePolicy: Retain
|
|
129
|
-
Properties:
|
|
130
|
-
PolicyDocument:
|
|
131
|
-
Version: '2012-10-17'
|
|
132
|
-
Statement:
|
|
133
|
-
- Sid: ForceHTTPS
|
|
134
|
-
Effect: Deny
|
|
135
|
-
Principal: '*'
|
|
136
|
-
Action: 's3:*'
|
|
137
|
-
Resource:
|
|
138
|
-
- !Sub ${ {{ addon_config.prefix }}Bucket.Arn}/*
|
|
139
|
-
- !Sub ${ {{ addon_config.prefix }}Bucket.Arn}
|
|
140
|
-
Condition:
|
|
141
|
-
Bool:
|
|
142
|
-
"aws:SecureTransport": false
|
|
143
|
-
Bucket: !Ref {{ addon_config.prefix }}Bucket
|
|
144
|
-
|
|
145
|
-
{% if 'objects' in addon_config %}
|
|
146
|
-
{{ addon_config.prefix }}S3ObjectUploader:
|
|
147
|
-
Type: AWS::Lambda::Function
|
|
148
|
-
Properties:
|
|
149
|
-
FunctionName: !Sub "${App}-${Env}-object-uploader"
|
|
150
|
-
Handler: index.handler
|
|
151
|
-
Runtime: python3.11
|
|
152
|
-
MemorySize: 128
|
|
153
|
-
Timeout: 10
|
|
154
|
-
Role: !GetAtt {{ addon_config.prefix }}S3ObjectUploaderRole.Arn
|
|
155
|
-
Code:
|
|
156
|
-
ZipFile: |
|
|
157
|
-
{{ addon_config.custom_resources.s3_object(10) }}
|
|
158
|
-
|
|
159
|
-
{{ addon_config.prefix }}S3ObjectUploaderRole:
|
|
160
|
-
Type: AWS::IAM::Role
|
|
161
|
-
Properties:
|
|
162
|
-
RoleName: !Sub "${App}-${Env}-object-uploader-role"
|
|
163
|
-
AssumeRolePolicyDocument:
|
|
164
|
-
Version: 2012-10-17
|
|
165
|
-
Statement:
|
|
166
|
-
- Effect: Allow
|
|
167
|
-
Action:
|
|
168
|
-
- 'sts:AssumeRole'
|
|
169
|
-
Principal:
|
|
170
|
-
Service:
|
|
171
|
-
- lambda.amazonaws.com
|
|
172
|
-
Policies:
|
|
173
|
-
- PolicyName: !Sub "${App}-${Env}-object-uploader-policy"
|
|
174
|
-
PolicyDocument:
|
|
175
|
-
Version: '2012-10-17'
|
|
176
|
-
Statement:
|
|
177
|
-
- Effect: Allow
|
|
178
|
-
Action:
|
|
179
|
-
- 's3:PutObject'
|
|
180
|
-
- 's3:DeleteObject'
|
|
181
|
-
Resource:
|
|
182
|
-
- !Sub ${ {{ addon_config.prefix }}Bucket.Arn }/*
|
|
183
|
-
- Effect: Allow
|
|
184
|
-
Action:
|
|
185
|
-
- 'logs:CreateLogGroup'
|
|
186
|
-
- 'logs:CreateLogStream'
|
|
187
|
-
- 'logs:PutLogEvents'
|
|
188
|
-
Resource: 'arn:aws:logs:*:*:*'
|
|
189
|
-
- Effect: Allow
|
|
190
|
-
Action:
|
|
191
|
-
- 'kms:GenerateDataKey'
|
|
192
|
-
Resource: !GetAtt {{ addon_config.prefix }}KMSKey.Arn
|
|
193
|
-
|
|
194
|
-
{% for s3object in addon_config.objects %}
|
|
195
|
-
{{ addon_config.prefix }}S3Object{{ loop.index0 }}:
|
|
196
|
-
Type: 'Custom::S3ObjectUploader'
|
|
197
|
-
Properties:
|
|
198
|
-
ServiceToken: !GetAtt {{ addon_config.prefix }}S3ObjectUploader.Arn
|
|
199
|
-
CopilotApplication: !Sub "${App}"
|
|
200
|
-
CopilotEnvironment: !Sub "${Env}"
|
|
201
|
-
S3Bucket: !Ref {{ addon_config.prefix }}Bucket
|
|
202
|
-
S3ObjectKey: {{ s3object.key }}
|
|
203
|
-
S3ObjectBody: {{ s3object.body }}
|
|
204
|
-
{% if s3object.content_type %}
|
|
205
|
-
S3ObjectContentType: {{ s3object.content_type }}
|
|
206
|
-
{% endif %}
|
|
207
|
-
{% endfor %}
|
|
208
|
-
{% endif %}
|
|
209
|
-
|
|
210
|
-
Outputs:
|
|
211
|
-
{{ addon_config.prefix }}Name:
|
|
212
|
-
Description: "The name of a user-defined bucket."
|
|
213
|
-
Value: !Ref {{ addon_config.prefix }}Bucket
|
|
214
|
-
|
|
215
|
-
{{ addon_config.prefix }}KMSKeyARN:
|
|
216
|
-
Description: "ARN of the KMS Key"
|
|
217
|
-
Value: !GetAtt {{ addon_config.prefix }}KMSKey.Arn
|
|
218
|
-
Export:
|
|
219
|
-
Name: !Sub "${App}-${Env}-{{ addon_config.prefix }}-KMSKeyARN"
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
# {% extra_header %}
|
|
2
|
-
# {% version_info %}
|
|
3
|
-
|
|
4
|
-
Parameters:
|
|
5
|
-
App:
|
|
6
|
-
Type: String
|
|
7
|
-
Description: Your application's name.
|
|
8
|
-
Env:
|
|
9
|
-
Type: String
|
|
10
|
-
Description: The environment name your service, job, or workflow is being deployed to.
|
|
11
|
-
|
|
12
|
-
EnvironmentSecurityGroup:
|
|
13
|
-
Type: String
|
|
14
|
-
PrivateSubnets:
|
|
15
|
-
Type: String
|
|
16
|
-
PublicSubnets:
|
|
17
|
-
Type: String
|
|
18
|
-
VpcId:
|
|
19
|
-
Type: String
|
|
20
|
-
|
|
21
|
-
Resources:
|
|
22
|
-
# Secrets Manager VPC endpoint
|
|
23
|
-
VpcEndpoint:
|
|
24
|
-
Type: AWS::EC2::VPCEndpoint
|
|
25
|
-
# Resource based metadata block to ignore reference to resources in other addon templates. Do not remove.
|
|
26
|
-
Metadata:
|
|
27
|
-
cfn-lint:
|
|
28
|
-
config:
|
|
29
|
-
ignore_checks:
|
|
30
|
-
# https://github.com/aws-cloudformation/cfn-lint/blob/main/docs/rules.md
|
|
31
|
-
- E1010
|
|
32
|
-
Properties:
|
|
33
|
-
PrivateDnsEnabled: true
|
|
34
|
-
SecurityGroupIds:
|
|
35
|
-
{%- for addon, config in addons -%}
|
|
36
|
-
{%- set prefix = addon.split('-')|first|lower ~ addon.split('-')[1:]|map('capitalize')|join -%}
|
|
37
|
-
{%- if config.type == "aurora-postgres" %}
|
|
38
|
-
- !GetAtt {{ prefix }}DBClusterSecurityGroup.GroupId
|
|
39
|
-
{%- endif -%}
|
|
40
|
-
{%- if config.type == "postgres" %}
|
|
41
|
-
- !GetAtt {{ prefix }}SecurityGroup.GroupId
|
|
42
|
-
{%- endif -%}
|
|
43
|
-
{%- endfor %}
|
|
44
|
-
- !Ref EnvironmentSecurityGroup
|
|
45
|
-
ServiceName: 'com.amazonaws.eu-west-2.secretsmanager'
|
|
46
|
-
SubnetIds: !Split [ ",", !Ref PrivateSubnets ]
|
|
47
|
-
VpcEndpointType: Interface
|
|
48
|
-
VpcId: !Ref VpcId
|
|
49
|
-
|
|
50
|
-
AdditionalNatGatewayAttachment1:
|
|
51
|
-
Metadata:
|
|
52
|
-
'aws:copilot:description': 'An Elastic IP for an additional NAT Gateway 1'
|
|
53
|
-
Type: AWS::EC2::EIP
|
|
54
|
-
Properties:
|
|
55
|
-
Domain: vpc
|
|
56
|
-
|
|
57
|
-
AdditionalNatGatewayAttachment2:
|
|
58
|
-
Metadata:
|
|
59
|
-
'aws:copilot:description': 'An Elastic IP for an additional NAT Gateway 2'
|
|
60
|
-
Type: AWS::EC2::EIP
|
|
61
|
-
Properties:
|
|
62
|
-
Domain: vpc
|
|
63
|
-
|
|
64
|
-
AdditionalNatGateway1:
|
|
65
|
-
Metadata:
|
|
66
|
-
'aws:copilot:description': 'Additional NAT Gateway 1'
|
|
67
|
-
Type: AWS::EC2::NatGateway
|
|
68
|
-
Properties:
|
|
69
|
-
AllocationId: !GetAtt AdditionalNatGatewayAttachment1.AllocationId
|
|
70
|
-
SubnetId: !Select [ 0, !Split [ ",", !Ref PublicSubnets ] ]
|
|
71
|
-
Tags:
|
|
72
|
-
- Key: Name
|
|
73
|
-
Value: !Sub 'copilot-${App}-${Env}-Additional-NAT-Gateway-1'
|
|
74
|
-
|
|
75
|
-
AdditionalNatGateway2:
|
|
76
|
-
Metadata:
|
|
77
|
-
'aws:copilot:description': 'Additional NAT Gateway 2'
|
|
78
|
-
Type: AWS::EC2::NatGateway
|
|
79
|
-
Properties:
|
|
80
|
-
AllocationId: !GetAtt AdditionalNatGatewayAttachment2.AllocationId
|
|
81
|
-
SubnetId: !Select [ 1, !Split [ ",", !Ref PublicSubnets ] ]
|
|
82
|
-
Tags:
|
|
83
|
-
- Key: Name
|
|
84
|
-
Value: !Sub 'copilot-${App}-${Env}-Additional-NAT-Gateway-2'
|
|
85
|
-
|
|
86
|
-
AdditionalPrivateRouteTable1:
|
|
87
|
-
Type: AWS::EC2::RouteTable
|
|
88
|
-
Properties:
|
|
89
|
-
VpcId: !Ref VpcId
|
|
90
|
-
|
|
91
|
-
AdditionalPrivateRouteTable2:
|
|
92
|
-
Type: AWS::EC2::RouteTable
|
|
93
|
-
Properties:
|
|
94
|
-
VpcId: !Ref VpcId
|
|
95
|
-
|
|
96
|
-
AdditionalPrivateRoute1:
|
|
97
|
-
Type: AWS::EC2::Route
|
|
98
|
-
Properties:
|
|
99
|
-
RouteTableId: !Ref AdditionalPrivateRouteTable1
|
|
100
|
-
DestinationCidrBlock: 0.0.0.0/0
|
|
101
|
-
NatGatewayId: !Ref AdditionalNatGateway1
|
|
102
|
-
|
|
103
|
-
AdditionalPrivateRoute2:
|
|
104
|
-
Type: AWS::EC2::Route
|
|
105
|
-
Properties:
|
|
106
|
-
RouteTableId: !Ref AdditionalPrivateRouteTable2
|
|
107
|
-
DestinationCidrBlock: 0.0.0.0/0
|
|
108
|
-
NatGatewayId: !Ref AdditionalNatGateway2
|
|
109
|
-
|
|
110
|
-
AdditionalPrivateRouteTable1Association:
|
|
111
|
-
Type: AWS::EC2::SubnetRouteTableAssociation
|
|
112
|
-
Properties:
|
|
113
|
-
RouteTableId: !Ref AdditionalPrivateRouteTable1
|
|
114
|
-
SubnetId: !Select [ 0, !Split [ ",", !Ref PrivateSubnets ] ]
|
|
115
|
-
|
|
116
|
-
AdditionalPrivateRouteTable2Association:
|
|
117
|
-
Type: AWS::EC2::SubnetRouteTableAssociation
|
|
118
|
-
Properties:
|
|
119
|
-
RouteTableId: !Ref AdditionalPrivateRouteTable2
|
|
120
|
-
SubnetId: !Select [ 1, !Split [ ",", !Ref PrivateSubnets ] ]
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import glob
|
|
2
|
-
from subprocess import run
|
|
3
|
-
|
|
4
|
-
import click
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def get_lint_result(path: str, ignore_path: str = None, ignore_checks: str = None):
|
|
8
|
-
command = ["cfn-lint", path]
|
|
9
|
-
if ignore_path:
|
|
10
|
-
command.extend(["--ignore-templates", ignore_path])
|
|
11
|
-
if ignore_checks:
|
|
12
|
-
command.extend(["--ignore-checks", ignore_checks])
|
|
13
|
-
|
|
14
|
-
click.secho(f"\n>>> Running lint check", fg="yellow")
|
|
15
|
-
click.secho(f""" {" ".join(command)}\n""", fg="yellow")
|
|
16
|
-
|
|
17
|
-
return run(command, capture_output=True)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def get_check_security_result(path: str, ignore_path: str = None):
|
|
21
|
-
matching_files = glob.glob(path)
|
|
22
|
-
command = ["checkov", "--quiet", "--framework", "cloudformation"]
|
|
23
|
-
|
|
24
|
-
for file in matching_files:
|
|
25
|
-
command.extend(["--file", file])
|
|
26
|
-
|
|
27
|
-
if ignore_path:
|
|
28
|
-
for ignored_file in glob.glob(ignore_path):
|
|
29
|
-
command.extend(["--skip-path", ignore_path])
|
|
30
|
-
|
|
31
|
-
click.secho(f"\n>>> Running security check", fg="yellow")
|
|
32
|
-
click.secho(f""" {" ".join(command)}\n""", fg="yellow")
|
|
33
|
-
|
|
34
|
-
return run(command, capture_output=True)
|
|
File without changes
|
|
File without changes
|
{dbt_platform_helper-11.4.0.dist-info → dbt_platform_helper-12.0.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|