Skip to content

Commit 6a28d22

Browse files
authored
BREAKFIX: Only generate AccountIDEndpointMode config for services that use it (#2795)
1 parent 0d08ea0 commit 6a28d22

File tree

1,174 files changed

+3890
-13892
lines changed

Some content is hidden

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

1,174 files changed

+3890
-13892
lines changed

.changelog/28f542b4288d47b982b4261b8f5f6530.json

+401
Large diffs are not rendered by default.

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

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.function.BiPredicate;
2525
import java.util.logging.Logger;
2626

27+
import software.amazon.smithy.aws.go.codegen.customization.AccountIDEndpointRouting;
2728
import software.amazon.smithy.aws.go.codegen.customization.auth.AwsHttpBearerAuthScheme;
2829
import software.amazon.smithy.codegen.core.Symbol;
2930
import software.amazon.smithy.codegen.core.SymbolProvider;
@@ -242,6 +243,7 @@ public class AddAwsConfigFields implements GoIntegration {
242243
.name(SDK_ACCOUNTID_ENDPOINT_MODE)
243244
.type(SdkGoTypes.Aws.AccountIDEndpointMode)
244245
.documentation("Indicates how aws account ID is applied in endpoint2.0 routing")
246+
.servicePredicate(AccountIDEndpointRouting::hasAccountIdEndpoints)
245247
.build()
246248
);
247249

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

+23-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import software.amazon.smithy.go.codegen.integration.GoIntegration;
1010
import software.amazon.smithy.go.codegen.SmithyGoTypes;
1111
import software.amazon.smithy.model.Model;
12+
import software.amazon.smithy.model.shapes.ServiceShape;
13+
import software.amazon.smithy.rulesengine.language.syntax.Identifier;
1214
import software.amazon.smithy.rulesengine.traits.EndpointRuleSetTrait;
1315
import software.amazon.smithy.utils.MapUtils;
1416

@@ -17,6 +19,10 @@
1719
public class AccountIDEndpointRouting implements GoIntegration {
1820
@Override
1921
public void renderPreEndpointResolutionHook(GoSettings settings, GoWriter writer, Model model) {
22+
if (!hasAccountIdEndpoints(model, settings.getService(model))) {
23+
return;
24+
}
25+
2026
writer.write("""
2127
if err := checkAccountID(getIdentity(ctx), m.options.AccountIDEndpointMode); err != nil {
2228
return out, metadata, $T("invalid accountID set: %w", err)
@@ -32,9 +38,10 @@ public void writeAdditionalFiles(
3238
SymbolProvider symbolProvider,
3339
GoDelegator goDelegator
3440
) {
35-
if (!settings.getService(model).hasTrait(EndpointRuleSetTrait.class)) {
41+
if (!hasAccountIdEndpoints(model, settings.getService(model))) {
3642
return;
3743
}
44+
3845
goDelegator.useShapeWriter(settings.getService(model), goTemplate("""
3946
func checkAccountID(identity $auth:T, mode $accountIDEndpointMode:T) error {
4047
switch mode {
@@ -67,4 +74,19 @@ func checkAccountID(identity $auth:T, mode $accountIDEndpointMode:T) error {
6774
)
6875
));
6976
}
77+
78+
public static boolean hasAccountIdEndpoints(Model model, ServiceShape service) {
79+
if (!service.hasTrait(EndpointRuleSetTrait.class)) {
80+
return false;
81+
}
82+
83+
var rules = service.expectTrait(EndpointRuleSetTrait.class).getEndpointRuleSet();
84+
for (var param : rules.getParameters()) {
85+
if (param.getBuiltIn().orElse("").equals("AWS::Auth::AccountId")) {
86+
return true;
87+
}
88+
}
89+
90+
return false;
91+
}
7092
}

internal/protocoltest/awsrestjson/api_client.go

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/awsrestjson/options.go

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/ec2query/api_client.go

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/ec2query/options.go

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/jsonrpc/api_client.go

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/jsonrpc/options.go

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/jsonrpc10/api_client.go

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/jsonrpc10/options.go

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/query/api_client.go

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/query/options.go

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/restxml/api_client.go

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/restxml/options.go

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/restxmlwithnamespace/api_client.go

+9-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/restxmlwithnamespace/options.go

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/smithyrpcv2cbor/api_client.go

+8-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/smithyrpcv2cbor/options.go

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/accessanalyzer/api_client.go

+9-29
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/accessanalyzer/endpoints.go

-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/accessanalyzer/options.go

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/account/api_client.go

+9-29
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/account/endpoints.go

-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/account/options.go

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)