@grafana/aws-sdk 0.8.2 → 0.9.0

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.
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useMemo, useEffect } from 'react';
2
- import { Field, Select, Input, ButtonGroup, ToolbarButton, Collapse } from '@grafana/ui';
2
+ import { Field, Select, Input, ButtonGroup, ToolbarButton, Text, TextLink, Collapse, Space } from '@grafana/ui';
3
3
  import { onUpdateDatasourceJsonDataOptionSelect, onUpdateDatasourceJsonDataOption, onUpdateDatasourceResetOption, onUpdateDatasourceSecureJsonDataOption } from '@grafana/data';
4
4
  import { config } from '@grafana/runtime';
5
5
  import { standardRegions } from '../regions.js';
@@ -14,12 +14,13 @@ const DS_TYPES_THAT_SUPPORT_TEMP_CREDS = [
14
14
  "grafana-athena-datasource",
15
15
  "grafana-amazonprometheus-datasource"
16
16
  ];
17
+ const RFC_2396_WARNING = 'This functionality should only be used with legacy web sites. RFC 2396 warns that interpreting Userinfo this way "is NOT RECOMMENDED, because the passing of authentication information in clear text (such as URI) has proven to be a security risk in almost every case where it has been used."';
17
18
  const toOption = (value) => ({ value, label: value });
18
19
  const isAwsAuthType = (value) => {
19
20
  return typeof value === "string" && awsAuthProviderOptions.some((opt) => opt.value === value);
20
21
  };
21
22
  const ConnectionConfig = (props) => {
22
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
23
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
23
24
  const [isARNInstructionsOpen, setIsARNInstructionsOpen] = useState(false);
24
25
  const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));
25
26
  const {
@@ -28,31 +29,40 @@ const ConnectionConfig = (props) => {
28
29
  skipHeader = false,
29
30
  skipEndpoint = false,
30
31
  options,
31
- hideAssumeRoleArn = false
32
+ hideAssumeRoleArn = false,
33
+ showHttpProxySettings = false
32
34
  } = props;
33
35
  let profile = options.jsonData.profile;
34
36
  if (profile === void 0) {
35
37
  profile = options.database;
36
38
  }
37
39
  const tempCredsFeatureEnabled = config.featureToggles.awsDatasourcesTempCredentials && DS_TYPES_THAT_SUPPORT_TEMP_CREDS.includes(options.type);
38
- const awsAssumeRoleEnabled = (_a = config.awsAssumeRoleEnabled) != null ? _a : true;
40
+ const httpProxySettingEnabled = showHttpProxySettings && ((_a = config.awsPerDatasourceHTTPProxyEnabled) != null ? _a : false);
41
+ const awsAssumeRoleEnabled = (_b = config.awsAssumeRoleEnabled) != null ? _b : true;
39
42
  const awsAllowedAuthProviders = useMemo(
40
43
  () => config.awsAllowedAuthProviders.filter((provider) => provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true).filter(isAwsAuthType),
41
44
  [tempCredsFeatureEnabled]
42
45
  );
43
- if (tempCredsFeatureEnabled && options.jsonData.authType === AwsAuthType.GrafanaAssumeRole) {
44
- if (config.namespace.startsWith("stacks-")) {
45
- props.externalId = config.namespace.substring(config.namespace.indexOf("-") + 1);
46
+ const externalId = useMemo(() => {
47
+ if (tempCredsFeatureEnabled && options.jsonData.authType === AwsAuthType.GrafanaAssumeRole) {
48
+ if (config.namespace.startsWith("stacks-")) {
49
+ return config.namespace.substring(config.namespace.indexOf("-") + 1);
50
+ }
46
51
  }
47
- }
52
+ return props.externalId;
53
+ }, [tempCredsFeatureEnabled, options.jsonData.authType, props.externalId]);
48
54
  const currentProvider = awsAuthProviderOptions.find((p) => p.value === options.jsonData.authType);
49
55
  useEffect(() => {
50
56
  if (!currentProvider && awsAllowedAuthProviders.length) {
57
+ let defaultAuthType = awsAllowedAuthProviders[0];
58
+ if (awsAllowedAuthProviders.includes(AwsAuthType.GrafanaAssumeRole)) {
59
+ defaultAuthType = AwsAuthType.GrafanaAssumeRole;
60
+ }
51
61
  onOptionsChange({
52
62
  ...options,
53
63
  jsonData: {
54
64
  ...options.jsonData,
55
- authType: awsAllowedAuthProviders[0]
65
+ authType: defaultAuthType
56
66
  }
57
67
  });
58
68
  }
@@ -100,7 +110,7 @@ const ConnectionConfig = (props) => {
100
110
  onChange: onUpdateDatasourceJsonDataOption(props, "profile")
101
111
  }
102
112
  )
103
- ), options.jsonData.authType === "keys" && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Field, { label: "Access Key ID", htmlFor: "accessKeyId" }, ((_b = props.options.secureJsonFields) == null ? void 0 : _b.accessKey) ? /* @__PURE__ */ React.createElement(ButtonGroup, null, /* @__PURE__ */ React.createElement(Input, { disabled: true, placeholder: "Configured", id: "accessKeyId" }), /* @__PURE__ */ React.createElement(
113
+ ), options.jsonData.authType === "keys" && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Field, { label: "Access Key ID", htmlFor: "accessKeyId" }, ((_c = props.options.secureJsonFields) == null ? void 0 : _c.accessKey) ? /* @__PURE__ */ React.createElement(ButtonGroup, null, /* @__PURE__ */ React.createElement(Input, { disabled: true, placeholder: "Configured", id: "accessKeyId" }), /* @__PURE__ */ React.createElement(
104
114
  ToolbarButton,
105
115
  {
106
116
  icon: "edit",
@@ -112,10 +122,10 @@ const ConnectionConfig = (props) => {
112
122
  Input,
113
123
  {
114
124
  id: "accessKeyId",
115
- value: (_d = (_c = options.secureJsonData) == null ? void 0 : _c.accessKey) != null ? _d : "",
125
+ value: (_e = (_d = options.secureJsonData) == null ? void 0 : _d.accessKey) != null ? _e : "",
116
126
  onChange: onUpdateDatasourceSecureJsonDataOption(props, "accessKey")
117
127
  }
118
- )), /* @__PURE__ */ React.createElement(Field, { label: "Secret Access Key", htmlFor: "secretKey" }, ((_e = props.options.secureJsonFields) == null ? void 0 : _e.secretKey) ? /* @__PURE__ */ React.createElement(ButtonGroup, null, /* @__PURE__ */ React.createElement(Input, { disabled: true, placeholder: "Configured" }), /* @__PURE__ */ React.createElement(
128
+ )), /* @__PURE__ */ React.createElement(Field, { label: "Secret Access Key", htmlFor: "secretKey" }, ((_f = props.options.secureJsonFields) == null ? void 0 : _f.secretKey) ? /* @__PURE__ */ React.createElement(ButtonGroup, null, /* @__PURE__ */ React.createElement(Input, { disabled: true, placeholder: "Configured" }), /* @__PURE__ */ React.createElement(
119
129
  ToolbarButton,
120
130
  {
121
131
  id: "secretKey",
@@ -128,56 +138,139 @@ const ConnectionConfig = (props) => {
128
138
  Input,
129
139
  {
130
140
  id: "secretKey",
131
- value: (_g = (_f = options.secureJsonData) == null ? void 0 : _f.secretKey) != null ? _g : "",
141
+ value: (_h = (_g = options.secureJsonData) == null ? void 0 : _g.secretKey) != null ? _h : "",
132
142
  onChange: onUpdateDatasourceSecureJsonDataOption(props, "secretKey")
133
143
  }
134
- )))), !hideAssumeRoleArn && /* @__PURE__ */ React.createElement(ConfigSubSection, { title: "Assume Role" }, options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && /* @__PURE__ */ React.createElement("div", { className: assumeRoleInstructionsStyle }, /* @__PURE__ */ React.createElement(
135
- Collapse,
144
+ )))), !hideAssumeRoleArn && /* @__PURE__ */ React.createElement(
145
+ ConfigSubSection,
136
146
  {
137
- label: "How to create an IAM role for grafana to assume:",
138
- collapsible: true,
139
- isOpen: isARNInstructionsOpen,
140
- onToggle: () => setIsARNInstructionsOpen(!isARNInstructionsOpen)
147
+ title: "Assume Role",
148
+ description: options.jsonData.authType === AwsAuthType.GrafanaAssumeRole ? /* @__PURE__ */ React.createElement(Text, null, "Learn more about", " ", /* @__PURE__ */ React.createElement(
149
+ TextLink,
150
+ {
151
+ inline: true,
152
+ external: true,
153
+ variant: "bodySmall",
154
+ href: "https://grafana.com/docs/plugins/cloudwatch/latest/aws-authentication/#use-grafana-assume-role"
155
+ },
156
+ "Grafana Assume Role"
157
+ ), ".") : null
141
158
  },
142
- /* @__PURE__ */ React.createElement("ol", null, /* @__PURE__ */ React.createElement("li", null, /* @__PURE__ */ React.createElement("p", null, "1. Create a new IAM role in the AWS console, and select ", /* @__PURE__ */ React.createElement("code", null, "Another AWS account"), " as the", " ", /* @__PURE__ */ React.createElement("code", null, "Trusted entity"), ".")), /* @__PURE__ */ React.createElement("li", null, /* @__PURE__ */ React.createElement("p", null, "2. Enter the account ID of the Grafana account that has permission to assume this role:", /* @__PURE__ */ React.createElement("code", null, " 008923505280 "), " and check the ", /* @__PURE__ */ React.createElement("code", null, "Require external ID"), " box.")), /* @__PURE__ */ React.createElement("li", null, /* @__PURE__ */ React.createElement("p", null, "3. Enter the following external ID:", " ", /* @__PURE__ */ React.createElement("code", null, props.externalId || "External Id is currently unavailable"), " and click", " ", /* @__PURE__ */ React.createElement("code", null, "Next"), ".")), /* @__PURE__ */ React.createElement("li", null, /* @__PURE__ */ React.createElement("p", null, "4. Add any required permissions you would like Grafana to be able to access on your behalf. For more details on our permissions please", " ", /* @__PURE__ */ React.createElement(
143
- "a",
159
+ options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && /* @__PURE__ */ React.createElement("div", { className: assumeRoleInstructionsStyle }, /* @__PURE__ */ React.createElement(
160
+ Collapse,
144
161
  {
145
- href: "https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/",
146
- target: "_blank",
147
- rel: "noreferrer"
162
+ label: "How to create an IAM role for grafana to assume:",
163
+ collapsible: true,
164
+ isOpen: isARNInstructionsOpen,
165
+ onToggle: () => setIsARNInstructionsOpen(!isARNInstructionsOpen)
148
166
  },
149
- "read through our documentation"
150
- ), ".")), /* @__PURE__ */ React.createElement("li", null, /* @__PURE__ */ React.createElement("p", null, "5. Give the role a name and description, and click ", /* @__PURE__ */ React.createElement("code", null, "Create role"), ".")), /* @__PURE__ */ React.createElement("li", null, /* @__PURE__ */ React.createElement("p", null, "6. Copy the ARN of the role you just created and paste it into the ", /* @__PURE__ */ React.createElement("code", null, "Assume Role ARN"), " ", "field below.")))
151
- )), awsAssumeRoleEnabled && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
167
+ /* @__PURE__ */ React.createElement("ol", null, /* @__PURE__ */ React.createElement("li", null, /* @__PURE__ */ React.createElement("p", null, "1. Create a new IAM role in the AWS console, and select ", /* @__PURE__ */ React.createElement("code", null, "Another AWS account"), " as the", " ", /* @__PURE__ */ React.createElement("code", null, "Trusted entity"), ".")), /* @__PURE__ */ React.createElement("li", null, /* @__PURE__ */ React.createElement("p", null, "2. Enter the account ID of the Grafana account that has permission to assume this role:", /* @__PURE__ */ React.createElement("code", null, " 008923505280 "), " and check the ", /* @__PURE__ */ React.createElement("code", null, "Require external ID"), " box.")), /* @__PURE__ */ React.createElement("li", null, /* @__PURE__ */ React.createElement("p", null, "3. Enter the following external ID:", " ", /* @__PURE__ */ React.createElement("code", null, externalId || "External Id is currently unavailable"), " and click ", /* @__PURE__ */ React.createElement("code", null, "Next"), ".")), /* @__PURE__ */ React.createElement("li", null, /* @__PURE__ */ React.createElement("p", null, "4. Add any required permissions you would like Grafana to be able to access on your behalf. For more details on our permissions please", " ", /* @__PURE__ */ React.createElement(
168
+ "a",
169
+ {
170
+ href: "https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/",
171
+ target: "_blank",
172
+ rel: "noreferrer"
173
+ },
174
+ "read through our documentation"
175
+ ), ".")), /* @__PURE__ */ React.createElement("li", null, /* @__PURE__ */ React.createElement("p", null, "5. Give the role a name and description, and click ", /* @__PURE__ */ React.createElement("code", null, "Create role"), ".")), /* @__PURE__ */ React.createElement("li", null, /* @__PURE__ */ React.createElement("p", null, "6. Copy the ARN of the role you just created and paste it into the ", /* @__PURE__ */ React.createElement("code", null, "Assume Role ARN"), " ", "field below.")))
176
+ )),
177
+ awsAssumeRoleEnabled && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
178
+ Field,
179
+ {
180
+ htmlFor: "assumeRoleArn",
181
+ label: "Assume Role ARN",
182
+ description: "Optional. Specifying the ARN of a role will ensure that the\n selected authentication provider is used to assume the role rather than the\n credentials directly."
183
+ },
184
+ /* @__PURE__ */ React.createElement(
185
+ Input,
186
+ {
187
+ id: "assumeRoleArn",
188
+ placeholder: "arn:aws:iam:*",
189
+ value: options.jsonData.assumeRoleArn || "",
190
+ onChange: onUpdateDatasourceJsonDataOption(props, "assumeRoleArn")
191
+ }
192
+ )
193
+ ), options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && /* @__PURE__ */ React.createElement(
194
+ Field,
195
+ {
196
+ htmlFor: "externalId",
197
+ label: "External ID",
198
+ description: "If you are assuming a role in another account, that has been created with an external ID, specify the external ID here."
199
+ },
200
+ /* @__PURE__ */ React.createElement(
201
+ Input,
202
+ {
203
+ id: "externalId",
204
+ placeholder: "External ID",
205
+ value: options.jsonData.externalId || "",
206
+ onChange: onUpdateDatasourceJsonDataOption(props, "externalId")
207
+ }
208
+ )
209
+ ))
210
+ ), httpProxySettingEnabled && /* @__PURE__ */ React.createElement(ConfigSubSection, { title: "Proxy Configuration" }, /* @__PURE__ */ React.createElement(
152
211
  Field,
153
212
  {
154
- htmlFor: "assumeRoleArn",
155
- label: "Assume Role ARN",
156
- description: "Optional. Specifying the ARN of a role will ensure that the\n selected authentication provider is used to assume the role rather than the\n credentials directly."
213
+ label: "Proxy Type",
214
+ description: "Specify the type of proxy to use. This should not be set if Secure Socks Proxy is enabled.",
215
+ htmlFor: "proxyType"
216
+ },
217
+ /* @__PURE__ */ React.createElement(
218
+ Select,
219
+ {
220
+ inputId: "proxyType",
221
+ value: options.jsonData.proxyType || "env",
222
+ options: [
223
+ { label: "Environment (default)", value: "env" },
224
+ { label: "None", value: "none" },
225
+ { label: "URL", value: "url" }
226
+ ],
227
+ onChange: onUpdateDatasourceJsonDataOptionSelect(props, "proxyType")
228
+ }
229
+ )
230
+ ), (options.jsonData.proxyType === "env" || !options.jsonData.proxyType) && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Text, { variant: "bodySmall", color: "secondary" }, "Proxy settings from environment variables will be used. Use ", /* @__PURE__ */ React.createElement("code", null, "HTTP_PROXY"), " &", " ", /* @__PURE__ */ React.createElement("code", null, "HTTPS_PROXY"), " environment variables. This will be skipped if no environment variables found."), /* @__PURE__ */ React.createElement(Space, { v: 2 })), options.jsonData.proxyType === "url" && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
231
+ Field,
232
+ {
233
+ label: "Proxy URL",
234
+ description: "Proxy URL. Don't set the username or password here",
235
+ htmlFor: "proxyUrl"
236
+ },
237
+ /* @__PURE__ */ React.createElement(
238
+ Input,
239
+ {
240
+ id: "proxyUrl",
241
+ placeholder: "Example: https://localhost:3004",
242
+ value: options.jsonData.proxyUrl || "",
243
+ onChange: onUpdateDatasourceJsonDataOption(props, "proxyUrl")
244
+ }
245
+ )
246
+ ), /* @__PURE__ */ React.createElement(
247
+ Field,
248
+ {
249
+ label: "Proxy Username",
250
+ description: `Optional: Proxy Username. ${RFC_2396_WARNING}`,
251
+ htmlFor: "proxyUsername"
157
252
  },
158
253
  /* @__PURE__ */ React.createElement(
159
254
  Input,
160
255
  {
161
- id: "assumeRoleArn",
162
- placeholder: "arn:aws:iam:*",
163
- value: options.jsonData.assumeRoleArn || "",
164
- onChange: onUpdateDatasourceJsonDataOption(props, "assumeRoleArn")
256
+ id: "proxyUsername",
257
+ value: options.jsonData.proxyUsername || "",
258
+ onChange: onUpdateDatasourceJsonDataOption(props, "proxyUsername")
165
259
  }
166
260
  )
167
- ), options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && /* @__PURE__ */ React.createElement(
261
+ ), /* @__PURE__ */ React.createElement(
168
262
  Field,
169
263
  {
170
- htmlFor: "externalId",
171
- label: "External ID",
172
- description: "If you are assuming a role in another account, that has been created with an external ID, specify the external ID here."
264
+ label: "Proxy Password",
265
+ description: `Optional: Proxy Password. ${RFC_2396_WARNING}`,
266
+ htmlFor: "proxyPassword"
173
267
  },
174
268
  /* @__PURE__ */ React.createElement(
175
269
  Input,
176
270
  {
177
- id: "externalId",
178
- placeholder: "External ID",
179
- value: options.jsonData.externalId || "",
180
- onChange: onUpdateDatasourceJsonDataOption(props, "externalId")
271
+ id: "proxyPassword",
272
+ value: (_j = (_i = options.secureJsonData) == null ? void 0 : _i.proxyPassword) != null ? _j : "",
273
+ onChange: onUpdateDatasourceSecureJsonDataOption(props, "proxyPassword")
181
274
  }
182
275
  )
183
276
  ))), /* @__PURE__ */ React.createElement(ConfigSubSection, { title: "Additional Settings" }, !skipEndpoint && options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && /* @__PURE__ */ React.createElement(
@@ -191,7 +284,7 @@ const ConnectionConfig = (props) => {
191
284
  Input,
192
285
  {
193
286
  id: "endpoint",
194
- placeholder: (_h = props.defaultEndpoint) != null ? _h : "https://{service}.{region}.amazonaws.com",
287
+ placeholder: (_k = props.defaultEndpoint) != null ? _k : "https://{service}.{region}.amazonaws.com",
195
288
  value: options.jsonData.endpoint || "",
196
289
  onChange: onUpdateDatasourceJsonDataOption(props, "endpoint")
197
290
  }
@@ -207,7 +300,7 @@ const ConnectionConfig = (props) => {
207
300
  Select,
208
301
  {
209
302
  inputId: "defaultRegion",
210
- value: (_i = regions.find((region) => region.value === options.jsonData.defaultRegion)) != null ? _i : options.jsonData.defaultRegion ? {
303
+ value: (_l = regions.find((region) => region.value === options.jsonData.defaultRegion)) != null ? _l : options.jsonData.defaultRegion ? {
211
304
  label: options.jsonData.defaultRegion,
212
305
  value: options.jsonData.defaultRegion
213
306
  } : void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionConfig.js","sources":["../../../src/components/ConnectionConfig.tsx"],"sourcesContent":["import React, { FC, useEffect, useMemo, useState } from 'react';\nimport { Input, Select, ButtonGroup, ToolbarButton, Collapse, Field } from '@grafana/ui';\nimport {\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n} from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { standardRegions } from '../regions';\nimport { AwsAuthType, ConnectionConfigProps } from '../types';\nimport { awsAuthProviderOptions } from '../providers';\nimport { assumeRoleInstructionsStyle } from './ConnectionConfig.styles';\nimport { ConfigSection, ConfigSubSection } from '@grafana/plugin-ui';\n\nexport const DEFAULT_LABEL_WIDTH = 28;\nconst DS_TYPES_THAT_SUPPORT_TEMP_CREDS = [\n 'cloudwatch',\n 'grafana-athena-datasource',\n 'grafana-amazonprometheus-datasource',\n];\nconst toOption = (value: string) => ({ value, label: value });\nconst isAwsAuthType = (value: any): value is AwsAuthType => {\n return typeof value === 'string' && awsAuthProviderOptions.some((opt) => opt.value === value);\n};\n\nexport const ConnectionConfig: FC<ConnectionConfigProps> = (props: ConnectionConfigProps) => {\n const [isARNInstructionsOpen, setIsARNInstructionsOpen] = useState(false);\n const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));\n const {\n loadRegions,\n onOptionsChange,\n skipHeader = false,\n skipEndpoint = false,\n options,\n hideAssumeRoleArn = false,\n } = props;\n let profile = options.jsonData.profile;\n if (profile === undefined) {\n profile = options.database;\n }\n const tempCredsFeatureEnabled =\n config.featureToggles.awsDatasourcesTempCredentials && DS_TYPES_THAT_SUPPORT_TEMP_CREDS.includes(options.type);\n const awsAssumeRoleEnabled = config.awsAssumeRoleEnabled ?? true;\n const awsAllowedAuthProviders = useMemo(\n () =>\n config.awsAllowedAuthProviders\n .filter((provider) => (provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true))\n .filter(isAwsAuthType),\n [tempCredsFeatureEnabled]\n );\n if (tempCredsFeatureEnabled && options.jsonData.authType === AwsAuthType.GrafanaAssumeRole) {\n if (config.namespace.startsWith('stacks-')) {\n props.externalId = config.namespace.substring(config.namespace.indexOf('-') + 1);\n }\n }\n const currentProvider = awsAuthProviderOptions.find((p) => p.value === options.jsonData.authType);\n\n useEffect(() => {\n // Make sure a authType exists in the current model\n if (!currentProvider && awsAllowedAuthProviders.length) {\n onOptionsChange({\n ...options,\n jsonData: {\n ...options.jsonData,\n authType: awsAllowedAuthProviders[0],\n },\n });\n }\n }, [currentProvider, options, onOptionsChange, awsAllowedAuthProviders]);\n\n useEffect(() => {\n if (!loadRegions) {\n return;\n }\n\n loadRegions().then((regions) => setRegions(regions.map(toOption)));\n }, [loadRegions]);\n\n return (\n <div data-testid=\"connection-config\">\n <ConfigSection title={skipHeader ? '' : 'Connection Details'} data-testid=\"connection-config\">\n <ConfigSubSection title=\"Authentication\">\n <Field\n label=\"Authentication Provider\"\n description=\"Specify which AWS credentials chain to use.\"\n htmlFor=\"authProvider\"\n >\n <Select\n aria-label=\"Authentication Provider\"\n inputId=\"authProvider\"\n value={currentProvider}\n options={awsAuthProviderOptions.filter((opt) => awsAllowedAuthProviders.includes(opt.value!))}\n defaultValue={options.jsonData.authType}\n onChange={(option) => {\n onUpdateDatasourceJsonDataOptionSelect(props, 'authType')(option);\n }}\n menuShouldPortal={true}\n />\n </Field>\n {options.jsonData.authType === 'credentials' && (\n <Field\n label=\"Credentials Profile Name\"\n description=\"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default.\"\n htmlFor=\"credentialsProfileName\"\n >\n <Input\n id=\"credentialsProfileName\"\n placeholder=\"default\"\n value={options.jsonData.profile}\n onChange={onUpdateDatasourceJsonDataOption(props, 'profile')}\n />\n </Field>\n )}\n {options.jsonData.authType === 'keys' && (\n <>\n <Field label=\"Access Key ID\" htmlFor=\"accessKeyId\">\n {props.options.secureJsonFields?.accessKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" id=\"accessKeyId\" />\n <ToolbarButton\n icon=\"edit\"\n tooltip=\"Edit Access Key ID\"\n type=\"button\"\n onClick={onUpdateDatasourceResetOption(props as any, 'accessKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n id=\"accessKeyId\"\n value={options.secureJsonData?.accessKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'accessKey')}\n />\n )}\n </Field>\n\n <Field label=\"Secret Access Key\" htmlFor=\"secretKey\">\n {props.options.secureJsonFields?.secretKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n id=\"secretKey\"\n icon=\"edit\"\n type=\"button\"\n tooltip=\"Edit Secret Access Key\"\n onClick={onUpdateDatasourceResetOption(props as any, 'secretKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n id=\"secretKey\"\n value={options.secureJsonData?.secretKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'secretKey')}\n />\n )}\n </Field>\n </>\n )}\n </ConfigSubSection>\n\n {!hideAssumeRoleArn && (\n <ConfigSubSection title=\"Assume Role\">\n {options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && (\n <div className={assumeRoleInstructionsStyle}>\n <Collapse\n label={'How to create an IAM role for grafana to assume:'}\n collapsible={true}\n isOpen={isARNInstructionsOpen}\n onToggle={() => setIsARNInstructionsOpen(!isARNInstructionsOpen)}\n >\n <ol>\n <li>\n <p>\n 1. Create a new IAM role in the AWS console, and select <code>Another AWS account</code> as the{' '}\n <code>Trusted entity</code>.\n </p>\n </li>\n <li>\n <p>\n 2. Enter the account ID of the Grafana account that has permission to assume this role:\n <code> 008923505280 </code> and check the <code>Require external ID</code> box.\n </p>\n </li>\n <li>\n <p>\n 3. Enter the following external ID:{' '}\n <code>{props.externalId || 'External Id is currently unavailable'}</code> and click{' '}\n <code>Next</code>.\n </p>\n </li>\n <li>\n <p>\n 4. Add any required permissions you would like Grafana to be able to access on your behalf. For\n more details on our permissions please{' '}\n <a\n href=\"https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n read through our documentation\n </a>\n .\n </p>\n </li>\n <li>\n <p>\n 5. Give the role a name and description, and click <code>Create role</code>.\n </p>\n </li>\n <li>\n <p>\n 6. Copy the ARN of the role you just created and paste it into the <code>Assume Role ARN</code>{' '}\n field below.\n </p>\n </li>\n </ol>\n </Collapse>\n </div>\n )}\n {awsAssumeRoleEnabled && (\n <>\n <Field\n htmlFor=\"assumeRoleArn\"\n label=\"Assume Role ARN\"\n description=\"Optional. Specifying the ARN of a role will ensure that the\n selected authentication provider is used to assume the role rather than the\n credentials directly.\"\n >\n <Input\n id=\"assumeRoleArn\"\n placeholder=\"arn:aws:iam:*\"\n value={options.jsonData.assumeRoleArn || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'assumeRoleArn')}\n />\n </Field>\n {options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n htmlFor=\"externalId\"\n label=\"External ID\"\n description=\"If you are assuming a role in another account, that has been created with an external ID, specify the external ID here.\"\n >\n <Input\n id=\"externalId\"\n placeholder=\"External ID\"\n value={options.jsonData.externalId || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'externalId')}\n />\n </Field>\n )}\n </>\n )}\n </ConfigSubSection>\n )}\n <ConfigSubSection title=\"Additional Settings\">\n {!skipEndpoint && options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n label=\"Endpoint\"\n description=\"Optionally, specify a custom endpoint for the service\"\n htmlFor=\"endpoint\"\n >\n <Input\n id=\"endpoint\"\n placeholder={props.defaultEndpoint ?? 'https://{service}.{region}.amazonaws.com'}\n value={options.jsonData.endpoint || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'endpoint')}\n />\n </Field>\n )}\n\n <Field\n label=\"Default Region\"\n description=\"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region.\"\n htmlFor=\"defaultRegion\"\n >\n <Select\n inputId=\"defaultRegion\"\n value={\n regions.find((region) => region.value === options.jsonData.defaultRegion) ??\n (options.jsonData.defaultRegion\n ? {\n label: options.jsonData.defaultRegion,\n value: options.jsonData.defaultRegion,\n }\n : undefined)\n }\n options={regions}\n defaultValue={options.jsonData.defaultRegion}\n allowCustomValue={true}\n onChange={onUpdateDatasourceJsonDataOptionSelect(props, 'defaultRegion')}\n formatCreateLabel={(r) => `Use region: ${r}`}\n menuShouldPortal={true}\n />\n </Field>\n </ConfigSubSection>\n {props.children}\n </ConfigSection>\n </div>\n );\n};\n"],"names":["regions"],"mappings":"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"}
1
+ {"version":3,"file":"ConnectionConfig.js","sources":["../../../src/components/ConnectionConfig.tsx"],"sourcesContent":["import React, { FC, useEffect, useMemo, useState } from 'react';\nimport { Input, Select, ButtonGroup, ToolbarButton, Text, TextLink, Collapse, Field, Space } from '@grafana/ui';\nimport {\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n} from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { standardRegions } from '../regions';\nimport { AwsAuthType, ConnectionConfigProps } from '../types';\nimport { awsAuthProviderOptions } from '../providers';\nimport { assumeRoleInstructionsStyle } from './ConnectionConfig.styles';\nimport { ConfigSection, ConfigSubSection } from '@grafana/plugin-ui';\n\nexport const DEFAULT_LABEL_WIDTH = 28;\nconst DS_TYPES_THAT_SUPPORT_TEMP_CREDS = [\n 'cloudwatch',\n 'grafana-athena-datasource',\n 'grafana-amazonprometheus-datasource',\n];\nconst RFC_2396_WARNING =\n 'This functionality should only be used with legacy web sites. RFC 2396 warns that interpreting Userinfo this way \"is NOT RECOMMENDED, because the passing of authentication information in clear text (such as URI) has proven to be a security risk in almost every case where it has been used.\"';\nconst toOption = (value: string) => ({ value, label: value });\nconst isAwsAuthType = (value: any): value is AwsAuthType => {\n return typeof value === 'string' && awsAuthProviderOptions.some((opt) => opt.value === value);\n};\n\nexport const ConnectionConfig: FC<ConnectionConfigProps> = (props: ConnectionConfigProps) => {\n const [isARNInstructionsOpen, setIsARNInstructionsOpen] = useState(false);\n const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));\n const {\n loadRegions,\n onOptionsChange,\n skipHeader = false,\n skipEndpoint = false,\n options,\n hideAssumeRoleArn = false,\n showHttpProxySettings = false,\n } = props;\n let profile = options.jsonData.profile;\n if (profile === undefined) {\n profile = options.database;\n }\n const tempCredsFeatureEnabled =\n config.featureToggles.awsDatasourcesTempCredentials && DS_TYPES_THAT_SUPPORT_TEMP_CREDS.includes(options.type);\n // @ts-ignore ignore feature toggle type error\n const httpProxySettingEnabled = showHttpProxySettings && (config.awsPerDatasourceHTTPProxyEnabled ?? false);\n const awsAssumeRoleEnabled = config.awsAssumeRoleEnabled ?? true;\n const awsAllowedAuthProviders = useMemo(\n () =>\n config.awsAllowedAuthProviders\n .filter((provider) => (provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true))\n .filter(isAwsAuthType),\n [tempCredsFeatureEnabled]\n );\n const externalId = useMemo(() => {\n if (tempCredsFeatureEnabled && options.jsonData.authType === AwsAuthType.GrafanaAssumeRole) {\n if (config.namespace.startsWith('stacks-')) {\n return config.namespace.substring(config.namespace.indexOf('-') + 1);\n }\n }\n return props.externalId;\n }, [tempCredsFeatureEnabled, options.jsonData.authType, props.externalId]);\n const currentProvider = awsAuthProviderOptions.find((p) => p.value === options.jsonData.authType);\n\n useEffect(() => {\n // Make sure a authType exists in the current model\n if (!currentProvider && awsAllowedAuthProviders.length) {\n let defaultAuthType = awsAllowedAuthProviders[0];\n if (awsAllowedAuthProviders.includes(AwsAuthType.GrafanaAssumeRole)) {\n defaultAuthType = AwsAuthType.GrafanaAssumeRole;\n }\n onOptionsChange({\n ...options,\n jsonData: {\n ...options.jsonData,\n authType: defaultAuthType,\n },\n });\n }\n }, [currentProvider, options, onOptionsChange, awsAllowedAuthProviders]);\n\n useEffect(() => {\n if (!loadRegions) {\n return;\n }\n\n loadRegions().then((regions) => setRegions(regions.map(toOption)));\n }, [loadRegions]);\n\n return (\n <div data-testid=\"connection-config\">\n <ConfigSection title={skipHeader ? '' : 'Connection Details'} data-testid=\"connection-config\">\n <ConfigSubSection title=\"Authentication\">\n <Field\n label=\"Authentication Provider\"\n description=\"Specify which AWS credentials chain to use.\"\n htmlFor=\"authProvider\"\n >\n <Select\n aria-label=\"Authentication Provider\"\n inputId=\"authProvider\"\n value={currentProvider}\n options={awsAuthProviderOptions.filter((opt) => awsAllowedAuthProviders.includes(opt.value!))}\n defaultValue={options.jsonData.authType}\n onChange={(option) => {\n onUpdateDatasourceJsonDataOptionSelect(props, 'authType')(option);\n }}\n menuShouldPortal={true}\n />\n </Field>\n {options.jsonData.authType === 'credentials' && (\n <Field\n label=\"Credentials Profile Name\"\n description=\"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default.\"\n htmlFor=\"credentialsProfileName\"\n >\n <Input\n id=\"credentialsProfileName\"\n placeholder=\"default\"\n value={options.jsonData.profile}\n onChange={onUpdateDatasourceJsonDataOption(props, 'profile')}\n />\n </Field>\n )}\n {options.jsonData.authType === 'keys' && (\n <>\n <Field label=\"Access Key ID\" htmlFor=\"accessKeyId\">\n {props.options.secureJsonFields?.accessKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" id=\"accessKeyId\" />\n <ToolbarButton\n icon=\"edit\"\n tooltip=\"Edit Access Key ID\"\n type=\"button\"\n onClick={onUpdateDatasourceResetOption(props as any, 'accessKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n id=\"accessKeyId\"\n value={options.secureJsonData?.accessKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'accessKey')}\n />\n )}\n </Field>\n\n <Field label=\"Secret Access Key\" htmlFor=\"secretKey\">\n {props.options.secureJsonFields?.secretKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n id=\"secretKey\"\n icon=\"edit\"\n type=\"button\"\n tooltip=\"Edit Secret Access Key\"\n onClick={onUpdateDatasourceResetOption(props as any, 'secretKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n id=\"secretKey\"\n value={options.secureJsonData?.secretKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'secretKey')}\n />\n )}\n </Field>\n </>\n )}\n </ConfigSubSection>\n\n {!hideAssumeRoleArn && (\n <ConfigSubSection\n title=\"Assume Role\"\n description={\n options.jsonData.authType === AwsAuthType.GrafanaAssumeRole ? (\n <Text>\n Learn more about{' '}\n <TextLink\n inline\n external\n variant=\"bodySmall\"\n href=\"https://grafana.com/docs/plugins/cloudwatch/latest/aws-authentication/#use-grafana-assume-role\"\n >\n Grafana Assume Role\n </TextLink>\n .\n </Text>\n ) : null\n }\n >\n {options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && (\n <div className={assumeRoleInstructionsStyle}>\n <Collapse\n label={'How to create an IAM role for grafana to assume:'}\n collapsible={true}\n isOpen={isARNInstructionsOpen}\n onToggle={() => setIsARNInstructionsOpen(!isARNInstructionsOpen)}\n >\n <ol>\n <li>\n <p>\n 1. Create a new IAM role in the AWS console, and select <code>Another AWS account</code> as the{' '}\n <code>Trusted entity</code>.\n </p>\n </li>\n <li>\n <p>\n 2. Enter the account ID of the Grafana account that has permission to assume this role:\n <code> 008923505280 </code> and check the <code>Require external ID</code> box.\n </p>\n </li>\n <li>\n <p>\n 3. Enter the following external ID:{' '}\n <code>{externalId || 'External Id is currently unavailable'}</code> and click <code>Next</code>.\n </p>\n </li>\n <li>\n <p>\n 4. Add any required permissions you would like Grafana to be able to access on your behalf. For\n more details on our permissions please{' '}\n <a\n href=\"https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n read through our documentation\n </a>\n .\n </p>\n </li>\n <li>\n <p>\n 5. Give the role a name and description, and click <code>Create role</code>.\n </p>\n </li>\n <li>\n <p>\n 6. Copy the ARN of the role you just created and paste it into the <code>Assume Role ARN</code>{' '}\n field below.\n </p>\n </li>\n </ol>\n </Collapse>\n </div>\n )}\n {awsAssumeRoleEnabled && (\n <>\n <Field\n htmlFor=\"assumeRoleArn\"\n label=\"Assume Role ARN\"\n description=\"Optional. Specifying the ARN of a role will ensure that the\n selected authentication provider is used to assume the role rather than the\n credentials directly.\"\n >\n <Input\n id=\"assumeRoleArn\"\n placeholder=\"arn:aws:iam:*\"\n value={options.jsonData.assumeRoleArn || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'assumeRoleArn')}\n />\n </Field>\n {options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n htmlFor=\"externalId\"\n label=\"External ID\"\n description=\"If you are assuming a role in another account, that has been created with an external ID, specify the external ID here.\"\n >\n <Input\n id=\"externalId\"\n placeholder=\"External ID\"\n value={options.jsonData.externalId || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'externalId')}\n />\n </Field>\n )}\n </>\n )}\n </ConfigSubSection>\n )}\n {httpProxySettingEnabled && (\n <ConfigSubSection title=\"Proxy Configuration\">\n <Field\n label=\"Proxy Type\"\n description=\"Specify the type of proxy to use. This should not be set if Secure Socks Proxy is enabled.\"\n htmlFor=\"proxyType\"\n >\n <Select\n inputId=\"proxyType\"\n value={options.jsonData.proxyType || 'env'}\n options={[\n { label: 'Environment (default)', value: 'env' },\n { label: 'None', value: 'none' },\n { label: 'URL', value: 'url' },\n ]}\n onChange={onUpdateDatasourceJsonDataOptionSelect(props, 'proxyType')}\n />\n </Field>\n {(options.jsonData.proxyType === 'env' || !options.jsonData.proxyType) && (\n <>\n <Text variant=\"bodySmall\" color=\"secondary\">\n Proxy settings from environment variables will be used. Use <code>HTTP_PROXY</code> &amp;{' '}\n <code>HTTPS_PROXY</code> environment variables. This will be skipped if no environment variables\n found.\n </Text>\n <Space v={2} />\n </>\n )}\n {options.jsonData.proxyType === 'url' && (\n <>\n <Field\n label=\"Proxy URL\"\n description=\"Proxy URL. Don't set the username or password here\"\n htmlFor=\"proxyUrl\"\n >\n <Input\n id=\"proxyUrl\"\n placeholder=\"Example: https://localhost:3004\"\n value={options.jsonData.proxyUrl || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'proxyUrl')}\n />\n </Field>\n <Field\n label=\"Proxy Username\"\n description={`Optional: Proxy Username. ${RFC_2396_WARNING}`}\n htmlFor=\"proxyUsername\"\n >\n <Input\n id=\"proxyUsername\"\n value={options.jsonData.proxyUsername || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'proxyUsername')}\n />\n </Field>\n <Field\n label=\"Proxy Password\"\n description={`Optional: Proxy Password. ${RFC_2396_WARNING}`}\n htmlFor=\"proxyPassword\"\n >\n <Input\n id=\"proxyPassword\"\n value={options.secureJsonData?.proxyPassword ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'proxyPassword')}\n />\n </Field>\n </>\n )}\n </ConfigSubSection>\n )}\n <ConfigSubSection title=\"Additional Settings\">\n {!skipEndpoint && options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n label=\"Endpoint\"\n description=\"Optionally, specify a custom endpoint for the service\"\n htmlFor=\"endpoint\"\n >\n <Input\n id=\"endpoint\"\n placeholder={props.defaultEndpoint ?? 'https://{service}.{region}.amazonaws.com'}\n value={options.jsonData.endpoint || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'endpoint')}\n />\n </Field>\n )}\n\n <Field\n label=\"Default Region\"\n description=\"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region.\"\n htmlFor=\"defaultRegion\"\n >\n <Select\n inputId=\"defaultRegion\"\n value={\n regions.find((region) => region.value === options.jsonData.defaultRegion) ??\n (options.jsonData.defaultRegion\n ? {\n label: options.jsonData.defaultRegion,\n value: options.jsonData.defaultRegion,\n }\n : undefined)\n }\n options={regions}\n defaultValue={options.jsonData.defaultRegion}\n allowCustomValue={true}\n onChange={onUpdateDatasourceJsonDataOptionSelect(props, 'defaultRegion')}\n formatCreateLabel={(r) => `Use region: ${r}`}\n menuShouldPortal={true}\n />\n </Field>\n </ConfigSubSection>\n {props.children}\n </ConfigSection>\n </div>\n );\n};\n"],"names":["regions"],"mappings":"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"}
@@ -12,6 +12,7 @@ const standardRegions = [
12
12
  "ap-southeast-3",
13
13
  "ap-southeast-4",
14
14
  "ap-southeast-5",
15
+ "ap-southeast-6",
15
16
  "ap-southeast-7",
16
17
  "ca-central-1",
17
18
  "ca-west-1",
@@ -19,6 +20,7 @@ const standardRegions = [
19
20
  "cn-northwest-1",
20
21
  "eu-central-1",
21
22
  "eu-central-2",
23
+ "eu-isoe-west-1",
22
24
  "eu-north-1",
23
25
  "eu-south-1",
24
26
  "eu-south-2",
@@ -35,7 +37,11 @@ const standardRegions = [
35
37
  "us-gov-east-1",
36
38
  "us-gov-west-1",
37
39
  "us-iso-east-1",
40
+ "us-iso-west-1",
38
41
  "us-isob-east-1",
42
+ "us-isob-west-1",
43
+ "us-isof-east-1",
44
+ "us-northeast-1",
39
45
  "us-west-1",
40
46
  "us-west-2"
41
47
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"regions.js","sources":["../../src/regions.ts"],"sourcesContent":["export const standardRegions: string[] = [\n 'af-south-1',\n 'ap-east-1',\n 'ap-east-2',\n 'ap-northeast-1',\n 'ap-northeast-2',\n 'ap-northeast-3',\n 'ap-south-1',\n 'ap-south-2',\n 'ap-southeast-1',\n 'ap-southeast-2',\n 'ap-southeast-3',\n 'ap-southeast-4',\n 'ap-southeast-5',\n 'ap-southeast-7',\n 'ca-central-1',\n 'ca-west-1',\n 'cn-north-1',\n 'cn-northwest-1',\n 'eu-central-1',\n 'eu-central-2',\n 'eu-north-1',\n 'eu-south-1',\n 'eu-south-2',\n 'eu-west-1',\n 'eu-west-2',\n 'eu-west-3',\n 'il-central-1',\n 'me-central-1',\n 'me-south-1',\n 'mx-central-1',\n 'sa-east-1',\n 'us-east-1',\n 'us-east-2',\n 'us-gov-east-1',\n 'us-gov-west-1',\n 'us-iso-east-1',\n 'us-isob-east-1',\n 'us-west-1',\n 'us-west-2',\n];\n"],"names":[],"mappings":"AAAO,MAAM,eAAA,GAA4B;AAAA,EACvC,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF;;;;"}
1
+ {"version":3,"file":"regions.js","sources":["../../src/regions.ts"],"sourcesContent":["export const standardRegions: string[] = [\n 'af-south-1',\n 'ap-east-1',\n 'ap-east-2',\n 'ap-northeast-1',\n 'ap-northeast-2',\n 'ap-northeast-3',\n 'ap-south-1',\n 'ap-south-2',\n 'ap-southeast-1',\n 'ap-southeast-2',\n 'ap-southeast-3',\n 'ap-southeast-4',\n 'ap-southeast-5',\n 'ap-southeast-6',\n 'ap-southeast-7',\n 'ca-central-1',\n 'ca-west-1',\n 'cn-north-1',\n 'cn-northwest-1',\n 'eu-central-1',\n 'eu-central-2',\n 'eu-isoe-west-1',\n 'eu-north-1',\n 'eu-south-1',\n 'eu-south-2',\n 'eu-west-1',\n 'eu-west-2',\n 'eu-west-3',\n 'il-central-1',\n 'me-central-1',\n 'me-south-1',\n 'mx-central-1',\n 'sa-east-1',\n 'us-east-1',\n 'us-east-2',\n 'us-gov-east-1',\n 'us-gov-west-1',\n 'us-iso-east-1',\n 'us-iso-west-1',\n 'us-isob-east-1',\n 'us-isob-west-1',\n 'us-isof-east-1',\n 'us-northeast-1',\n 'us-west-1',\n 'us-west-2',\n];\n"],"names":[],"mappings":"AAAO,MAAM,eAAA,GAA4B;AAAA,EACvC,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../src/types.ts"],"sourcesContent":["import type { DataSourceJsonData, DataSourcePluginOptionsEditorProps, DataSourceSettings } from '@grafana/data';\n\nexport enum AwsAuthType {\n Keys = 'keys',\n Credentials = 'credentials',\n Default = 'default', // was 'arn',\n EC2IAMRole = 'ec2_iam_role',\n /**\n * @deprecated use default\n */\n ARN = 'arn',\n GrafanaAssumeRole = 'grafana_assume_role',\n}\n\nexport interface AwsAuthDataSourceJsonData extends DataSourceJsonData {\n authType?: AwsAuthType;\n assumeRoleArn?: string;\n externalId?: string;\n profile?: string; // Credentials profile name, as specified in ~/.aws/credentials\n defaultRegion?: string; // region if it is not defined by your credentials file\n endpoint?: string;\n}\n\nexport interface AwsAuthDataSourceSecureJsonData {\n accessKey?: string;\n secretKey?: string;\n sessionToken?: string;\n}\n\nexport type AwsAuthDataSourceSettings = DataSourceSettings<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData>;\n\nexport interface ConnectionConfigProps<\n J extends AwsAuthDataSourceJsonData = AwsAuthDataSourceJsonData,\n S = AwsAuthDataSourceSecureJsonData,\n> extends DataSourcePluginOptionsEditorProps<J, S> {\n standardRegions?: string[];\n loadRegions?: () => Promise<string[]>;\n defaultEndpoint?: string;\n skipHeader?: boolean;\n skipEndpoint?: boolean;\n children?: React.ReactNode;\n labelWidth?: number;\n inExperimentalAuthComponent?: boolean;\n externalId?: string;\n hideAssumeRoleArn?: boolean;\n}\n"],"names":["AwsAuthType"],"mappings":"AAEO,IAAK,WAAA,qBAAAA,YAAAA,KAAL;AACL,EAAAA,aAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,aAAA,aAAA,CAAA,GAAc,aAAA;AACd,EAAAA,aAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,aAAA,YAAA,CAAA,GAAa,cAAA;AAIb,EAAAA,aAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,aAAA,mBAAA,CAAA,GAAoB,qBAAA;AATV,EAAA,OAAAA,YAAAA;AAAA,CAAA,EAAA,WAAA,IAAA,EAAA;;;;"}
1
+ {"version":3,"file":"types.js","sources":["../../src/types.ts"],"sourcesContent":["import type { DataSourceJsonData, DataSourcePluginOptionsEditorProps, DataSourceSettings } from '@grafana/data';\n\nexport enum AwsAuthType {\n Keys = 'keys',\n Credentials = 'credentials',\n Default = 'default', // was 'arn',\n EC2IAMRole = 'ec2_iam_role',\n /**\n * @deprecated use default\n */\n ARN = 'arn',\n GrafanaAssumeRole = 'grafana_assume_role',\n}\n\nexport interface AwsAuthDataSourceJsonData extends DataSourceJsonData {\n authType?: AwsAuthType;\n assumeRoleArn?: string;\n externalId?: string;\n profile?: string; // Credentials profile name, as specified in ~/.aws/credentials\n defaultRegion?: string; // region if it is not defined by your credentials file\n endpoint?: string;\n proxyType?: 'none' | 'env' | 'url';\n proxyUrl?: string;\n proxyUsername?: string;\n}\n\nexport interface AwsAuthDataSourceSecureJsonData {\n accessKey?: string;\n secretKey?: string;\n proxyPassword?: string;\n sessionToken?: string;\n}\n\nexport type AwsAuthDataSourceSettings = DataSourceSettings<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData>;\n\nexport interface ConnectionConfigProps<\n J extends AwsAuthDataSourceJsonData = AwsAuthDataSourceJsonData,\n S = AwsAuthDataSourceSecureJsonData,\n> extends DataSourcePluginOptionsEditorProps<J, S> {\n standardRegions?: string[];\n loadRegions?: () => Promise<string[]>;\n defaultEndpoint?: string;\n skipHeader?: boolean;\n skipEndpoint?: boolean;\n children?: React.ReactNode;\n labelWidth?: number;\n inExperimentalAuthComponent?: boolean;\n externalId?: string;\n hideAssumeRoleArn?: boolean;\n showHttpProxySettings?: boolean;\n}\n"],"names":["AwsAuthType"],"mappings":"AAEO,IAAK,WAAA,qBAAAA,YAAAA,KAAL;AACL,EAAAA,aAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,aAAA,aAAA,CAAA,GAAc,aAAA;AACd,EAAAA,aAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,aAAA,YAAA,CAAA,GAAa,cAAA;AAIb,EAAAA,aAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,aAAA,mBAAA,CAAA,GAAoB,qBAAA;AATV,EAAA,OAAAA,YAAAA;AAAA,CAAA,EAAA,WAAA,IAAA,EAAA;;;;"}
package/dist/index.d.ts CHANGED
@@ -21,10 +21,14 @@ interface AwsAuthDataSourceJsonData extends DataSourceJsonData {
21
21
  profile?: string;
22
22
  defaultRegion?: string;
23
23
  endpoint?: string;
24
+ proxyType?: 'none' | 'env' | 'url';
25
+ proxyUrl?: string;
26
+ proxyUsername?: string;
24
27
  }
25
28
  interface AwsAuthDataSourceSecureJsonData {
26
29
  accessKey?: string;
27
30
  secretKey?: string;
31
+ proxyPassword?: string;
28
32
  sessionToken?: string;
29
33
  }
30
34
  type AwsAuthDataSourceSettings = DataSourceSettings<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData>;
@@ -39,6 +43,7 @@ interface ConnectionConfigProps<J extends AwsAuthDataSourceJsonData = AwsAuthDat
39
43
  inExperimentalAuthComponent?: boolean;
40
44
  externalId?: string;
41
45
  hideAssumeRoleArn?: boolean;
46
+ showHttpProxySettings?: boolean;
42
47
  }
43
48
 
44
49
  declare const DEFAULT_LABEL_WIDTH = 28;