/
amazon.help.ts
190 lines (186 loc) · 17.5 KB
/
amazon.help.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
import { HelpContentsRegistry } from '@spinnaker/core';
const helpContents: { [key: string]: string } = {
'aws.associateElasticIp.elasticIp': `<p>(Optional) <b>Elastic IP</b> is an IP address that Spinnaker will associate with this cluster.</p>
<p>If specified, this elastic IP must exist and not already be attached to an instance or cluster.</p>
<p>If left blank, Spinnaker will make a selection from the list of available elastic IPs in the provided account and region.</p>`,
'aws.associateElasticIp.type': `<p><b>Type</b> of elastic IP to associate:'
<ul>
<li><b>standard</b> is usable in EC2 Classic</li>
<li><b>vpc</b> is usable in VPC</li>
</ul>`,
'aws.serverGroup.subnet': `The subnet selection determines the VPC in which your server group will run. Options vary by account and region; the most common ones are:
<ul>
<li><b>None (EC2 Classic)</b>: instances will not run in a VPC</li>
<li><b>internal</b> instances will be restricted to internal clients (i.e. require VPN access)</li>
<li><b>external</b> instances will be publicly accessible and running in VPC</li>
</ul>`,
'aws.loadBalancer.subnet': `The subnet selection determines the VPC in which your load balancer will run.<br/>
This also restricts the server groups which can be serviced by the load balancer.
Options vary by account and region; the most common ones are:
<ul>
<li><b>None (EC2 Classic)</b>: the load balancer will not run in a VPC</li>
<li><b>internal</b> access to the load balancer will be restricted to internal clients (i.e. require VPN access)</li>
<li><b>external</b> the load balancer will be publicly accessible and running in VPC</li>
</ul>`,
'aws.loadBalancer.detail': `<p>(Optional) <b>Detail</b> is a string of free-form alphanumeric characters; by convention, we recommend using "frontend".</p>
<p>However, if your stack name needs to be longer (load balancer names are limited to 32 characters), consider changing it to "elb", or omit it altogether.</p>`,
'aws.loadBalancer.internal':
'Controls the load balancer scheme, <strong>not</strong> the subnet. By default, load balancers are created with a DNS name that resolves to public IP addresses. Specify internal to create a load balancer with a DNS name that resolves to private IP addresses.',
'aws.loadBalancer.stack':
'(Optional) <b>Stack</b> is one of the core naming components of a cluster, used to create vertical stacks of dependent services for integration testing.',
'aws.loadBalancer.name':
'<p>The load balancer name is formed by combining the application name, the <b>Stack</b> field, and the <b>Detail</b> field.</p>',
'aws.loadBalancer.targetGroups':
'Add a target group if you want to associate this with an Application Load Balancer (ALB) or Network Load Balancer (NLB)',
'aws.loadBalancer.loadBalancers':
'And a load balancer directly if you created a Classic Load Balancer (a classic load balancer does not have target groups)',
'aws.loadBalancer.ruleCondition.host': `<p>You can specify a single host name (for example, <em>my.example.com</em>). A host name is case insensitive, can be up to 128 characters in length, and can contain any of the following characters. Note that you can include up to three wildcard characters.</p>
<ul>
<li>A-Z, a-z, 0-9</li>
<li>- .</li>
<li>* (matches 0 or more characters)</li>
<li>? (matches exactly 1 character)</li>
</ul>
<p>Note that <strong>*.example.com</strong> will match <strong>test.example.com</strong> but won't match <strong>example.com</strong>.</p>`,
'aws.loadBalancer.ruleCondition.path': `<p>You can specify a single path pattern (for example, <em>/img/*</em>). A path pattern is case sensitive, can be up to 128 characters in length, and can contain any of the following characters. Note that you can include up to three wildcard characters.</p>
<ul>
<li>A-Z, a-z, 0-9</li>
<li>_ - . $ / ~ " ' @ : +</li>
<li>& (using &amp;)</li>
<li>* (matches 0 or more characters)</li>
<li>? (matches exactly 1 character)</li>
</ul>
<p>Note that the path pattern is used to route requests but does not alter them. For example, if a rule has a path pattern of <em>/img/*</em>, the rule would forward a request for <em>/img/picture.jpg</em> to the specified target group as a request for <em>/img/picture.jpg</em>.</p>`,
'aws.loadBalancer.oidcAuthentication': 'Authentication requires a configured OIDC client.',
'aws.serverGroup.stack':
'(Optional) <b>Stack</b> is one of the core naming components of a cluster, used to create vertical stacks of dependent services for integration testing.',
'aws.serverGroup.detail':
'(Optional) <b>Detail</b> is a string of free-form alphanumeric characters and hyphens to describe any other variables.',
'aws.serverGroup.imageName':
'(Required) <b>Image</b> is the deployable Amazon Machine Image. Images are restricted to the account and region selected.',
'aws.serverGroup.unlimitedCpuCredits': `<p>CPU credits can be configured with 2 modes:</p><br/>
<ul>
<li><b>Unlimited (i.e. Unlimited On)</b>: Can sustain high CPU utilization for any period of time whenever required.<br/>
If the average CPU usage over a rolling 24-hour period exceeds the baseline, charges for surplus credits will apply.</li>
<li><b>Standard (i.e. Unlimited Off)</b>: <b>Default mode in Spinnaker.</b> Suited to workloads with an average CPU utilization that is consistently below the baseline CPU utilization of the instance.<br/>
To burst above the baseline, the instance spends credits that it has accrued in its CPU credit balance.</li>
</ul>`,
'aws.serverGroup.legacyUdf': `<p>(Optional) <b>User Data Format</b> allows overriding of the format used when generating user data during deployment. The default format used is configured
in the application's attributes, editable via the 'Config' tab.</p>
<p><b>Default</b> will use the value from the application's configuration.</p>
<p><b>Modern</b> will use the modern template.</p>
<p><b>Legacy</b> will use the legacy (<b>deprecated</b>) template.</p>
<p>This option is intended to allow testing migration from legacy to modern before configuring it for the entire application. If unsure, pick <b>Default</b>.</p>`,
'aws.serverGroup.base64UserData': '(Optional) <b>UserData</b> is a base64 encoded string.',
'aws.serverGroup.enabledMetrics':
'(Optional) <b>Enabled Metrics</b> are the Auto Scaling Group metrics to enable on this group. Existing metrics are not modified.',
'aws.serverGroup.imdsv2':
"(Recommended) <b>IMDSv2</b> helps mitigate AWS credential theft from the exploitation of SSRF vulnerabilities in web applications. All modern AWS SDKs support IMDSv2 and it should not be disabled unless you're using a legacy SDK.",
'aws.serverGroup.instanceMonitoring':
'(Optional) <b>Instance Monitoring</b> whether to enable detailed monitoring of instances. Group metrics must be disabled to update an ASG with Instance Monitoring set to false.',
'aws.serverGroup.tags': '(Optional) <b>Tags</b> are propagated to the instances in this cluster.',
'aws.serverGroup.allImages': 'Search for an image that does not match the name of your application.',
'aws.serverGroup.filterImages': 'Select from a pre-filtered list of images matching the name of your application.',
'aws.serverGroup.spotPrice': 'The maximum price to pay per hour per instance',
'aws.serverGroup.traffic': `<p>Enables the "AddToLoadBalancer" scaling process, which is used by Spinnaker and discovery services to determine if the server group is enabled.</p>
<p>Will be automatically enabled when any non "custom" deployment strategy is selected.</p>`,
'aws.securityGroup.vpc': `
<p>The VPC to which this {{firewall}} will apply.</p>
<p>If you wish to use VPC but are unsure which VPC to use, the most common one is "Main".</p>
<p>If you do not wish to use VPC, select "None".</p>`,
'aws.securityGroup.name':
'<p>The {{firewall}} name is formed by combining the application name, the <b>Stack</b> field, and the <b>Detail</b> field.</p>',
'aws.securityGroup.cross.account.ingress.help': '<p>Accounts that are excluded will not show up in this list</p>',
'aws.scalingPolicy.search.restricted': `<p>Resets dimensions to "AutoScalingGroupName: {name of the ASG}" and provides
a simpler, combined input for the namespace and metric name fields.</p>`,
'aws.scalingPolicy.search.all': `
<p>Allows you to edit the dimensions and namespace to find a specific metric for this alarm.</p>`,
'aws.blockDeviceMappings.useSource': `
<p>Spinnaker will use the block device mappings of the existing server group when deploying a new server group.</p>
<p>In the event that there is no existing server group, the
<a target="_blank" href="https://github.com/spinnaker/clouddriver/blob/master/clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/deploy/InstanceTypeUtils.java">defaults</a>
for the selected instance type will be used.</p>`,
'aws.blockDeviceMappings.useAMI':
'<p>Spinnaker will use the block device mappings from the selected AMI when deploying a new server group.</p>',
'aws.blockDeviceMappings.useDefaults':
'<p>Spinnaker will use the <a target="_blank" href="https://github.com/spinnaker/clouddriver/blob/master/clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/deploy/InstanceTypeUtils.java">default block device mappings</a> for the selected instance type when deploying a new server group.</p>',
'aws.targetGroup.protocol':
'The protocol to use for routing traffic to the targets. Cannot be edited after being saved; if you want to use a different protocol, create a new target group, save the load balancer, move your targets, and then delete this target group.',
'aws.targetGroup.targetType':
'Determines how targets are specified. Only set to ip if you need to attach individual ips. Cannot be edited after being saved; if you want to use a different target type, create a new target group, save the load balancer, move your targets, and then delete this target group.',
'aws.targetGroup.port':
'The port on which the targets receive traffic. Cannot be edited after being saved; if you want to use a different port, create a new target group, save the load balancer, move your targets, and then delete this target group.',
'aws.targetGroup.attributes.deregistrationDelay':
'The amount of time for the load balancer to wait before changing the state of a deregistering target from draining to unused. The range is 0-3600 seconds. The default value is 300 seconds.',
'aws.targetGroup.attributes.stickinessEnabled': ' Indicates whether sticky sessions are enabled.',
'aws.targetGroup.attributes.deregistrationDelayConnectionTermination':
'If enabled, your Network Load Balancer will terminate active connections when deregistration delay is reached.',
'aws.targetGroup.attributes.stickinessType':
'The type of sticky sessions. The only current possible value is <code>lb_cookie</code>.',
'aws.targetGroup.attributes.stickinessDuration':
'The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds).',
'aws.targetGroup.attributes.healthCheckPort.trafficPort':
'The port the load balancer uses when performing health checks on targets. The default is <b>traffic-port</b>, which is the port on which each target receives traffic from the load balancer.',
'aws.targetGroup.healthCheckProtocol': 'TCP health checks only support 10s and 30s intervals',
'aws.targetGroup.healthCheckTimeout':
'Target groups with TCP or TLS protocol must have a 6s timeout for HTTP health checks or a 10s timeout for HTTPS/TLS health checks.',
'aws.targetGroup.nlbHealthcheckThreshold':
'The healthy and unhealthy threshold for NLBs must be equal. This represents the number of successful and failed healthchecks required for healthy and unhealthy targets, respectively.',
'aws.serverGroup.capacityConstraint': `
<p>Ensures that the capacity of this server group has not changed in the background (i.e. due to autoscaling activity).</p>
<p>If the capacity has changed, this resize operation will be rejected.</p>`,
'aws.tagImage.consideredStages': `Limit which previous stages will be considered when locating AMI's to tag. If left unchecked, AMI's generated by any upstream stage will be tagged.`,
'aws.loadBalancer.redirect.host': `The hostname. This component is not percent-encoded. The hostname can contain <code>#{host}</code>.`,
'aws.loadBalancer.redirect.path': `The absolute path, starting with the leading "/". This component is not percent-encoded. The path can contain <code>#{host}</code>, <code>#{path}</code>, and <code>#{port}</code>.`,
'aws.loadBalancer.redirect.port': `The port. You can specify a value from 1 to 65535 or <code>#{port}</code>.`,
'aws.loadBalancer.redirect.protocol': `The protocol. You can specify HTTP, HTTPS, or <code>#{protocol}</code>. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS to HTTP.`,
'aws.loadBalancer.redirect.query': `The query parameters, URL-encoded when necessary, but not percent-encoded. Do not include the leading "?", as it is automatically added. You can specify any of the reserved keywords.`,
'aws.loadBalancer.redirect.statusCode': `The HTTP redirect code. The redirect is either permanent (HTTP 301) or temporary (HTTP 302).`,
'aws.loadBalancer.redirect': `<p>A URI consists of the following components: protocol://hostname:port/path?query. You must modify at least one of the following components to avoid a redirect loop: protocol, hostname, port, or path. Any components that you do not modify retain their original values.
<p>You can reuse URI components using the following reserved keywords:
<ul><li>#{protocol}
<li>#{host}
<li>#{port}
<li>#{path} (the leading "/" is removed)
<li>#{query}
</ul>
<p>For example, you can change the path to "/new/#{path}", the hostname to "example.#{host}", or the query to "#{query}&value=xyz".`,
'aws.cloudformation.source': `
<p>Where the template file content is read from.</p>
<p>
<b>text:</b> The template is supplied statically to the pipeline from the below text-box.
</p>
<p>
<b>artifact:</b> The template is read from an artifact supplied/created upstream. The expected artifact must be referenced here, and will be bound at runtime.
</p>
`,
'aws.cloudformation.expectedArtifact': `The artifact that is to be applied to this stage. The artifact should represent a valid cloudformation template.`,
'aws.function.name': `Enter a name that describes the purpose of your function. Function name will be prefixed with the application name.`,
'aws.function.runtime': `Choose the language to use to write your function`,
'aws.function.s3key': `The Amazon S3 key of the deployment package`,
'aws.function.handler': `The name of the method within your code that Lambda calls to execute your function. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime.`,
'aws.function.s3bucket': `An Amazon S3 bucket in the same AWS Region as your function. The bucket can be in a different AWS account.`,
'aws.function.execution.role': `Lambda will create an execution role with permission to upload logs to Amazon CloudWatch Logs. You can also choose an existing role that defines the permissions of your function.`,
'aws.function.env.vars': `You can define environment variables as key-value pairs that are accessible from your function code. These are useful to store configuration settings without the need to change function code`,
'aws.function.tags': `You can use tags to group and filter your functions. A tag consists of a case-sensitive key-value pair`,
'aws.functionBasicSettings.memorySize': `Your function is allocated CPU proportional to the memory configured.`,
'aws.functionBasicSettings.timeout': `The amount of time that Lambda allows a function to run before stopping it. The default is 3 seconds. The maximum allowed value is 900 seconds.`,
'aws.function.publish': `Set to true to publish the first version of the function during creation.`,
'aws.function.deadletterqueue': `A dead letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. (SNS or SQS)`,
'aws.function.tracingConfig.mode': `The function's AWS X-Ray tracing configuration.`,
'aws.function.kmsKeyArn': `The ARN of the AWS Key Management Service (AWS KMS) key that's used to encrypt your function's environment variables. If it's not provided, AWS Lambda uses a default service key.`,
'aws.cloudformation.changeSet.options': `<p>Action to take when the created ChangeSet contains a replacement.</p>
<p>
<b>ask:</b> Execution will be put on hold asking for user feedback.
</p>
<p>
<b>skip it:</b> ChangeSet will not be executed and stage will continue.
</p>
<p>
<b>execute it</b> ChangeSet will be executed.
</p>
<p>
<b>fail stage</b> ChangeSet will not be executed and the stage will fail.
</p>`,
};
Object.keys(helpContents).forEach((key) => HelpContentsRegistry.register(key, helpContents[key]));