Skip to content

Commit fcfb7ac

Browse files
authored
fix: use region overrides in endpoint discovery (#2393)
1 parent f3ea5b8 commit fcfb7ac

File tree

74 files changed

+308
-147
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+308
-147
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"id": "e50b13c4-d099-4557-a1f0-098adce2c23e",
3+
"type": "bugfix",
4+
"description": "Respect caller region overrides in endpoint discovery.",
5+
"modules": [
6+
"service/dynamodb",
7+
"service/internal/endpoint-discovery",
8+
"service/timestreamquery",
9+
"service/timestreamwrite"
10+
]
11+
}

codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/EndpointDiscoveryGenerator.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ private static void generateAddDiscoverEndpointMiddleware(
189189
writer.write("EndpointDiscoveryEnableState: o.$L.$L,", ENDPOINT_DISCOVERY_OPTION, ENABLE_ENDPOINT_DISCOVERY_OPTION);
190190
writer.write("EndpointDiscoveryRequired: $L,",
191191
operationRequiresEndpointDiscovery(model, service, operation));
192+
writer.write("Region: o.Region,");
192193
});
193194
});
194195
writer.write("");
@@ -216,11 +217,10 @@ private static void generateEndpointDiscoveryHandler(
216217
Symbol discoveryOperationInputSymbol = symbolProvider.toSymbol(discoveryOperationInput);
217218

218219
writer.addUseImports(SmithyGoDependency.CONTEXT);
219-
writer.openBlock("func (c *Client) $L(ctx context.Context, input $P, key string, opt $T) ($T, error) {", "}",
220+
writer.openBlock("func (c *Client) $L(ctx context.Context, input $P, region, key string, opt $T) ($T, error) {", "}",
220221
DISCOVERY_ENDPOINT_HANDLER_NAME, discoveryOperationInputSymbol, DISCOVERY_ENDPOINT_OPTIONS,
221222
DISCOVERY_ENDPOINT_TYPE, () -> {
222-
223-
if (serviceSupportsCustomDiscoveryEndpoint(model, service)) {
223+
if (serviceSupportsCustomDiscoveryEndpoint(model, service)) {
224224
// check if endpoint resolver for endpoint discovery is of service-specific endpoint resolver type
225225
writer.writeDocs("assert endpoint resolver interface is of expected type.");
226226
writer.write("endpointResolver, ok := opt.$L.($T)", ENDPOINT_RESOLVER_USED_FOR_DISCOVERY,
@@ -238,6 +238,7 @@ private static void generateEndpointDiscoveryHandler(
238238
// fetch endpoint via making discovery call
239239
writer.openBlock("output, err := c.$T(ctx, input, func(o *Options) {", "})",
240240
discoveryOperationSymbol, () -> {
241+
writer.write("o.Region = region").write("");
241242
writer.write("o.EndpointOptions.$L = opt.$L", DISABLE_HTTPS, DISABLE_HTTPS);
242243
writer.write("o.Logger = opt.Logger");
243244

@@ -329,7 +330,7 @@ private static void generateFetchDiscoveredEndpointFunction(
329330

330331
writer.addUseImports(SmithyGoDependency.CONTEXT);
331332
writer.openBlock(
332-
"func (c *Client) $L(ctx context.Context, optFns ...func($P)) ($T, error) {", "}",
333+
"func (c *Client) $L(ctx context.Context, region string, optFns ...func($P)) ($T, error) {", "}",
333334
fetchDiscoveredEndpointFuncName, DISCOVERY_ENDPOINT_OPTIONS, DISCOVERY_ENDPOINT_WEIGHTED_ADDRESS,
334335
() -> {
335336
writer.write("input := getOperationInput(ctx)");
@@ -346,6 +347,10 @@ private static void generateFetchDiscoveredEndpointFunction(
346347
String IDENTIFIER_MAP = "identifierMap";
347348
writer.write("$L := make(map[string]string, 0)", IDENTIFIER_MAP);
348349

350+
// include region at a minimum
351+
// see https://github.com/aws/aws-sdk-go-v2/issues/2163
352+
writer.write("$L[$S] = region", IDENTIFIER_MAP, "sdk#Region");
353+
349354
for (MemberShape member : getMembersUsedAsIdForDiscovery(model, service, operation)) {
350355
String memberName = member.getMemberName();
351356
Shape targetShape = model.expectShape(member.getTarget());
@@ -385,13 +390,13 @@ private static void generateFetchDiscoveredEndpointFunction(
385390

386391
// if discovery not required, then spin up a unblocking go routine
387392
if (!operationRequiresEndpointDiscovery(model, service, operation)) {
388-
writer.write("go c.$L(ctx, $L, key, opt)", DISCOVERY_ENDPOINT_HANDLER_NAME,
393+
writer.write("go c.$L(ctx, $L, region, key, opt)", DISCOVERY_ENDPOINT_HANDLER_NAME,
389394
DISCOVERY_OPERATION_INPUT_NAME);
390395
writer.write("return $T{}, nil", DISCOVERY_ENDPOINT_WEIGHTED_ADDRESS);
391396
return;
392397
}
393398

394-
writer.write("endpoint, err := c.$L(ctx, $L, key, opt)", DISCOVERY_ENDPOINT_HANDLER_NAME,
399+
writer.write("endpoint, err := c.$L(ctx, $L, region, key, opt)", DISCOVERY_ENDPOINT_HANDLER_NAME,
395400
DISCOVERY_OPERATION_INPUT_NAME);
396401
writer.write("if err != nil { return $T{}, err }", DISCOVERY_ENDPOINT_WEIGHTED_ADDRESS);
397402
writer.write("");

service/dynamodb/api_client.go

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/dynamodb/api_op_BatchGetItem.go

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/dynamodb/api_op_BatchWriteItem.go

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/dynamodb/api_op_CreateBackup.go

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/dynamodb/api_op_CreateGlobalTable.go

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/dynamodb/api_op_CreateTable.go

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/dynamodb/api_op_DeleteBackup.go

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/dynamodb/api_op_DeleteItem.go

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)