Skip to content

Commit 14f648b

Browse files
author
awstools
committed
feat(client-dynamodb): Add support for dual-stack account endpoint generation
1 parent 4535c43 commit 14f648b

File tree

2 files changed

+788
-196
lines changed

2 files changed

+788
-196
lines changed

clients/client-dynamodb/src/endpoint/ruleset.ts

Lines changed: 46 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,56 +6,51 @@ import { RuleSetObject } from "@smithy/types";
66
or see "smithy.rules#endpointRuleSet"
77
in codegen/sdk-codegen/aws-models/dynamodb.json */
88

9-
const S="required",
10-
T="type",
11-
U="fn",
12-
V="argv",
13-
W="ref",
14-
X="properties",
15-
Y="headers";
9+
const J="required",
10+
K="type",
11+
L="rules",
12+
M="conditions",
13+
N="fn",
14+
O="argv",
15+
P="ref",
16+
Q="assign",
17+
R="url",
18+
S="properties",
19+
T="headers";
1620
const a=false,
17-
b="isSet",
18-
c="error",
19-
d="endpoint",
20-
e="tree",
21-
f="PartitionResult",
22-
g="stringEquals",
23-
h="dynamodb",
24-
i="getAttr",
25-
j="aws.parseArn",
26-
k="ParsedArn",
27-
l="isValidHostLabel",
28-
m="FirstArn",
29-
n={[S]:false,[T]:"String"},
30-
o={[S]:true,"default":false,[T]:"Boolean"},
31-
p={[U]:"booleanEquals",[V]:[{[W]:"UseFIPS"},true]},
32-
q={[U]:"booleanEquals",[V]:[{[W]:"UseDualStack"},true]},
33-
r={},
34-
s={[W]:"Region"},
35-
t={[U]:"booleanEquals",[V]:[{[U]:i,[V]:[{[W]:f},"supportsFIPS"]},true]},
36-
u={[U]:"booleanEquals",[V]:[{[U]:i,[V]:[{[W]:f},"supportsDualStack"]},true]},
37-
v={"conditions":[{[U]:b,[V]:[{[W]:"AccountIdEndpointMode"}]},{[U]:g,[V]:[{[W]:"AccountIdEndpointMode"},"required"]}],"rules":[{[c]:"Invalid Configuration: AccountIdEndpointMode is required and FIPS is enabled, but FIPS account endpoints are not supported",[T]:c}],[T]:e},
38-
w={[U]:b,[V]:[{[W]:"AccountIdEndpointMode"}]},
39-
x={[c]:"Invalid Configuration: AccountIdEndpointMode is required and FIPS is enabled, but FIPS account endpoints are not supported",[T]:c},
40-
y={[U]:i,[V]:[{[W]:f},"name"]},
41-
z={[d]:{"url":"https://dynamodb.{Region}.{PartitionResult#dnsSuffix}",[X]:{},[Y]:{}},[T]:d},
42-
A={[U]:"not",[V]:[p]},
43-
B={[c]:"Invalid Configuration: AccountIdEndpointMode is required and DualStack is enabled, but DualStack account endpoints are not supported",[T]:c},
44-
C={[U]:"not",[V]:[{[U]:g,[V]:[{[W]:"AccountIdEndpointMode"},"disabled"]}]},
45-
D={[U]:g,[V]:[y,"aws"]},
46-
E={[U]:"not",[V]:[q]},
47-
F={[U]:g,[V]:[{[U]:i,[V]:[{[W]:k},"service"]},h]},
48-
G={[U]:l,[V]:[{[U]:i,[V]:[{[W]:k},"region"]},false]},
49-
H={[U]:g,[V]:[{[U]:i,[V]:[{[W]:k},"region"]},"{Region}"]},
50-
I={[U]:l,[V]:[{[U]:i,[V]:[{[W]:k},"accountId"]},false]},
51-
J={"url":"https://{ParsedArn#accountId}.ddb.{Region}.{PartitionResult#dnsSuffix}",[X]:{},[Y]:{}},
52-
K={[W]:"ResourceArnList"},
53-
L={[W]:"AccountId"},
54-
M=[p],
55-
N=[q],
56-
O=[s],
57-
P=[w,{[U]:g,[V]:[{[W]:"AccountIdEndpointMode"},"required"]}],
58-
Q=[A],
59-
R=[{[W]:"ResourceArn"}];
60-
const _data={version:"1.0",parameters:{Region:n,UseDualStack:o,UseFIPS:o,Endpoint:n,AccountId:n,AccountIdEndpointMode:n,ResourceArn:n,ResourceArnList:{[S]:a,[T]:"stringArray"}},rules:[{conditions:[{[U]:b,[V]:[{[W]:"Endpoint"}]}],rules:[{conditions:M,error:"Invalid Configuration: FIPS and custom endpoint are not supported",[T]:c},{conditions:N,error:"Invalid Configuration: Dualstack and custom endpoint are not supported",[T]:c},{endpoint:{url:"{Endpoint}",[X]:r,[Y]:r},[T]:d}],[T]:e},{conditions:[{[U]:b,[V]:O}],rules:[{conditions:[{[U]:"aws.partition",[V]:O,assign:f}],rules:[{conditions:[{[U]:g,[V]:[s,"local"]}],rules:[{conditions:M,error:"Invalid Configuration: FIPS and local endpoint are not supported",[T]:c},{conditions:N,error:"Invalid Configuration: Dualstack and local endpoint are not supported",[T]:c},{endpoint:{url:"http://localhost:8000",[X]:{authSchemes:[{name:"sigv4",signingName:h,signingRegion:"us-east-1"}]},[Y]:r},[T]:d}],[T]:e},{conditions:[p,q],rules:[{conditions:[t,u],rules:[v,{endpoint:{url:"https://dynamodb-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",[X]:r,[Y]:r},[T]:d}],[T]:e},{error:"FIPS and DualStack are enabled, but this partition does not support one or both",[T]:c}],[T]:e},{conditions:M,rules:[{conditions:[t],rules:[{conditions:[{[U]:g,[V]:[y,"aws-us-gov"]}],rules:[v,z],[T]:e},v,{endpoint:{url:"https://dynamodb-fips.{Region}.{PartitionResult#dnsSuffix}",[X]:r,[Y]:r},[T]:d}],[T]:e},{error:"FIPS is enabled but this partition does not support FIPS",[T]:c}],[T]:e},{conditions:N,rules:[{conditions:[u],rules:[{conditions:P,rules:[{conditions:Q,rules:[B],[T]:e},x],[T]:e},{endpoint:{url:"https://dynamodb.{Region}.{PartitionResult#dualStackDnsSuffix}",[X]:r,[Y]:r},[T]:d}],[T]:e},{error:"DualStack is enabled but this partition does not support DualStack",[T]:c}],[T]:e},{conditions:[w,C,D,A,E,{[U]:b,[V]:R},{[U]:j,[V]:R,assign:k},F,G,H,I],endpoint:J,[T]:d},{conditions:[w,C,D,A,E,{[U]:b,[V]:[K]},{[U]:i,[V]:[K,"[0]"],assign:m},{[U]:j,[V]:[{[W]:m}],assign:k},F,G,H,I],endpoint:J,[T]:d},{conditions:[w,C,D,A,E,{[U]:b,[V]:[L]}],rules:[{conditions:[{[U]:l,[V]:[L,a]}],rules:[{endpoint:{url:"https://{AccountId}.ddb.{Region}.{PartitionResult#dnsSuffix}",[X]:r,[Y]:r},[T]:d}],[T]:e},{error:"Credentials-sourced account ID parameter is invalid",[T]:c}],[T]:e},{conditions:P,rules:[{conditions:Q,rules:[{conditions:[E],rules:[{conditions:[D],rules:[{error:"AccountIdEndpointMode is required but no AccountID was provided or able to be loaded",[T]:c}],[T]:e},{error:"Invalid Configuration: AccountIdEndpointMode is required but account endpoints are not supported in this partition",[T]:c}],[T]:e},B],[T]:e},x],[T]:e},z],[T]:e}],[T]:e},{error:"Invalid Configuration: Missing Region",[T]:c}]};
21+
b="error",
22+
c="stringEquals",
23+
d="https://dynamodb.{Region}.{PartitionResult#dualStackDnsSuffix}",
24+
e="endpoint",
25+
f="tree",
26+
g="dynamodb",
27+
h={[J]:false,[K]:"string"},
28+
i={[J]:true,"default":false,[K]:"boolean"},
29+
j={[N]:"isSet",[O]:[{[P]:"Endpoint"}]},
30+
k={[P]:"Endpoint"},
31+
l={[N]:"isSet",[O]:[{[P]:"Region"}]},
32+
m={[P]:"Region"},
33+
n={[N]:"aws.partition",[O]:[m],[Q]:"PartitionResult"},
34+
o={[M]:[{[N]:"booleanEquals",[O]:[{[P]:"UseFIPS"},true]}],[b]:"Invalid Configuration: FIPS and custom endpoint are not supported",[K]:b},
35+
p={[N]:"booleanEquals",[O]:[{[P]:"UseFIPS"},true]},
36+
q={[M]:[{[N]:"booleanEquals",[O]:[{[P]:"UseDualStack"},true]}],[b]:"Invalid Configuration: Dualstack and custom endpoint are not supported",[K]:b},
37+
r={[N]:"booleanEquals",[O]:[{[P]:"UseDualStack"},true]},
38+
s={[e]:{[R]:"{Endpoint}",[S]:{},[T]:{}},[K]:e},
39+
t={},
40+
u={[N]:"booleanEquals",[O]:[{[N]:"getAttr",[O]:[{[P]:"PartitionResult"},"supportsFIPS"]},true]},
41+
v={[N]:"booleanEquals",[O]:[{[N]:"getAttr",[O]:[{[P]:"PartitionResult"},"supportsDualStack"]},true]},
42+
w={[M]:[{[N]:"isSet",[O]:[{[P]:"AccountIdEndpointMode"}]},{[N]:c,[O]:[{[P]:"AccountIdEndpointMode"},"required"]}],[L]:[{[b]:"Invalid Configuration: AccountIdEndpointMode is required and FIPS is enabled, but FIPS account endpoints are not supported",[K]:b}],[K]:f},
43+
x={[N]:"getAttr",[O]:[{[P]:"PartitionResult"},"name"]},
44+
y={[e]:{[R]:"https://dynamodb.{Region}.{PartitionResult#dnsSuffix}",[S]:{},[T]:{}},[K]:e},
45+
z={[R]:"https://{ParsedArn#accountId}.ddb.{Region}.{PartitionResult#dualStackDnsSuffix}",[S]:{},[T]:{}},
46+
A={[b]:"Credentials-sourced account ID parameter is invalid",[K]:b},
47+
B={[M]:[{[N]:"isSet",[O]:[{[P]:"AccountIdEndpointMode"}]},{[N]:c,[O]:[{[P]:"AccountIdEndpointMode"},"required"]}],[L]:[{[M]:[{[N]:"not",[O]:[p]}],[L]:[{[M]:[{[N]:c,[O]:[x,"aws"]}],[L]:[{[b]:"AccountIdEndpointMode is required but no AccountID was provided or able to be loaded",[K]:b}],[K]:f},{[b]:"Invalid Configuration: AccountIdEndpointMode is required but account endpoints are not supported in this partition",[K]:b}],[K]:f},{[b]:"Invalid Configuration: AccountIdEndpointMode is required and FIPS is enabled, but FIPS account endpoints are not supported",[K]:b}],[K]:f},
48+
C={[R]:"https://{ParsedArn#accountId}.ddb.{Region}.{PartitionResult#dnsSuffix}",[S]:{},[T]:{}},
49+
D=[p],
50+
E=[r],
51+
F=[{[N]:"isSet",[O]:[{[P]:"AccountIdEndpointMode"}]},{[N]:"not",[O]:[{[N]:c,[O]:[{[P]:"AccountIdEndpointMode"},"disabled"]}]},{[N]:c,[O]:[x,"aws"]},{[N]:"not",[O]:[p]},{[N]:"isSet",[O]:[{[P]:"ResourceArn"}]},{[N]:"aws.parseArn",[O]:[{[P]:"ResourceArn"}],[Q]:"ParsedArn"},{[N]:c,[O]:[{[N]:"getAttr",[O]:[{[P]:"ParsedArn"},"service"]},g]},{[N]:"isValidHostLabel",[O]:[{[N]:"getAttr",[O]:[{[P]:"ParsedArn"},"region"]},false]},{[N]:c,[O]:[{[N]:"getAttr",[O]:[{[P]:"ParsedArn"},"region"]},"{Region}"]},{[N]:"isValidHostLabel",[O]:[{[N]:"getAttr",[O]:[{[P]:"ParsedArn"},"accountId"]},false]}],
52+
G=[{[N]:"isSet",[O]:[{[P]:"AccountIdEndpointMode"}]},{[N]:"not",[O]:[{[N]:c,[O]:[{[P]:"AccountIdEndpointMode"},"disabled"]}]},{[N]:c,[O]:[x,"aws"]},{[N]:"not",[O]:[p]},{[N]:"isSet",[O]:[{[P]:"ResourceArnList"}]},{[N]:"getAttr",[O]:[{[P]:"ResourceArnList"},"[0]"],[Q]:"FirstArn"},{[N]:"aws.parseArn",[O]:[{[P]:"FirstArn"}],[Q]:"ParsedArn"},{[N]:c,[O]:[{[N]:"getAttr",[O]:[{[P]:"ParsedArn"},"service"]},g]},{[N]:"isValidHostLabel",[O]:[{[N]:"getAttr",[O]:[{[P]:"ParsedArn"},"region"]},false]},{[N]:c,[O]:[{[N]:"getAttr",[O]:[{[P]:"ParsedArn"},"region"]},"{Region}"]},{[N]:"isValidHostLabel",[O]:[{[N]:"getAttr",[O]:[{[P]:"ParsedArn"},"accountId"]},false]}],
53+
H=[{[N]:"isSet",[O]:[{[P]:"AccountIdEndpointMode"}]},{[N]:"not",[O]:[{[N]:c,[O]:[{[P]:"AccountIdEndpointMode"},"disabled"]}]},{[N]:c,[O]:[x,"aws"]},{[N]:"not",[O]:[p]},{[N]:"isSet",[O]:[{[P]:"AccountId"}]}],
54+
I=[{[N]:"isValidHostLabel",[O]:[{[P]:"AccountId"},false]}];
55+
const _data={version:"1.0",parameters:{Region:h,UseDualStack:i,UseFIPS:i,Endpoint:h,AccountId:h,AccountIdEndpointMode:h,ResourceArn:h,ResourceArnList:{[J]:a,[K]:"stringArray"}},[L]:[{[M]:[j,l,n],[L]:[o,q,{[M]:[{[N]:c,[O]:[k,d]}],error:"Endpoint override is not supported for dual-stack endpoints. Please enable dual-stack functionality by enabling the configuration. For more details, see: https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html",[K]:b},s],[K]:f},{[M]:[j],[L]:[o,q,s],[K]:f},{[M]:[l],[L]:[{[M]:[n],[L]:[{[M]:[{[N]:c,[O]:[m,"local"]}],[L]:[{[M]:D,error:"Invalid Configuration: FIPS and local endpoint are not supported",[K]:b},{[M]:E,error:"Invalid Configuration: Dualstack and local endpoint are not supported",[K]:b},{endpoint:{[R]:"http://localhost:8000",[S]:{authSchemes:[{signingRegion:"us-east-1",name:"sigv4",signingName:g}]},[T]:t},[K]:e}],[K]:f},{[M]:[p,r],[L]:[{[M]:[u,v],[L]:[w,{endpoint:{[R]:"https://dynamodb-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",[S]:t,[T]:t},[K]:e}],[K]:f},{error:"FIPS and DualStack are enabled, but this partition does not support one or both",[K]:b}],[K]:f},{[M]:D,[L]:[{[M]:[u],[L]:[{[M]:[{[N]:c,[O]:[x,"aws-us-gov"]}],[L]:[w,y],[K]:f},w,{endpoint:{[R]:"https://dynamodb-fips.{Region}.{PartitionResult#dnsSuffix}",[S]:t,[T]:t},[K]:e}],[K]:f},{error:"FIPS is enabled but this partition does not support FIPS",[K]:b}],[K]:f},{[M]:E,[L]:[{[M]:[v],[L]:[{[M]:F,endpoint:z,[K]:e},{[M]:G,endpoint:z,[K]:e},{[M]:H,[L]:[{[M]:I,[L]:[{endpoint:{[R]:"https://{AccountId}.ddb.{Region}.{PartitionResult#dualStackDnsSuffix}",[S]:t,[T]:t},[K]:e}],[K]:f},A],[K]:f},B,{endpoint:{[R]:d,[S]:t,[T]:t},[K]:e}],[K]:f},{error:"DualStack is enabled but this partition does not support DualStack",[K]:b}],[K]:f},{[M]:F,endpoint:C,[K]:e},{[M]:G,endpoint:C,[K]:e},{[M]:H,[L]:[{[M]:I,[L]:[{endpoint:{[R]:"https://{AccountId}.ddb.{Region}.{PartitionResult#dnsSuffix}",[S]:t,[T]:t},[K]:e}],[K]:f},A],[K]:f},B,y],[K]:f}],[K]:f},{error:"Invalid Configuration: Missing Region",[K]:b}]};
6156
export const ruleSet: RuleSetObject = _data;

0 commit comments

Comments
 (0)