diff --git a/clients/client-sqs/package.json b/clients/client-sqs/package.json index 158df26afc0a4..5a0035b61f818 100644 --- a/clients/client-sqs/package.json +++ b/clients/client-sqs/package.json @@ -27,6 +27,7 @@ "@aws-sdk/middleware-logger": "*", "@aws-sdk/middleware-recursion-detection": "*", "@aws-sdk/middleware-sdk-sqs": "*", + "@aws-sdk/middleware-signing": "*", "@aws-sdk/middleware-user-agent": "*", "@aws-sdk/region-config-resolver": "*", "@aws-sdk/types": "*", @@ -34,7 +35,6 @@ "@aws-sdk/util-user-agent-browser": "*", "@aws-sdk/util-user-agent-node": "*", "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", "@smithy/fetch-http-handler": "^2.3.1", "@smithy/hash-node": "^2.0.17", "@smithy/invalid-dependency": "^2.0.15", @@ -56,7 +56,6 @@ "@smithy/util-defaults-mode-browser": "^2.0.22", "@smithy/util-defaults-mode-node": "^2.0.29", "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-middleware": "^2.0.8", "@smithy/util-retry": "^2.0.8", "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" diff --git a/clients/client-sqs/src/SQSClient.ts b/clients/client-sqs/src/SQSClient.ts index 47bee3ab529ba..457f3d4a2decd 100644 --- a/clients/client-sqs/src/SQSClient.ts +++ b/clients/client-sqs/src/SQSClient.ts @@ -7,18 +7,20 @@ import { } from "@aws-sdk/middleware-host-header"; import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { + AwsAuthInputConfig, + AwsAuthResolvedConfig, + getAwsAuthPlugin, + resolveAwsAuthConfig, +} from "@aws-sdk/middleware-signing"; import { getUserAgentPlugin, resolveUserAgentConfig, UserAgentInputConfig, UserAgentResolvedConfig, } from "@aws-sdk/middleware-user-agent"; +import { Credentials as __Credentials } from "@aws-sdk/types"; import { RegionInputConfig, RegionResolvedConfig, resolveRegionConfig } from "@smithy/config-resolver"; -import { - DefaultIdentityProviderConfig, - getHttpAuthSchemeEndpointRuleSetPlugin, - getHttpSigningPlugin, -} from "@smithy/core"; import { getContentLengthPlugin } from "@smithy/middleware-content-length"; import { EndpointInputConfig, EndpointResolvedConfig, resolveEndpointConfig } from "@smithy/middleware-endpoint"; import { getRetryPlugin, resolveRetryConfig, RetryInputConfig, RetryResolvedConfig } from "@smithy/middleware-retry"; @@ -30,7 +32,6 @@ import { SmithyResolvedConfiguration as __SmithyResolvedConfiguration, } from "@smithy/smithy-client"; import { - AwsCredentialIdentityProvider, BodyLengthCalculator as __BodyLengthCalculator, CheckOptionalClientConfig as __CheckOptionalClientConfig, Checksum as __Checksum, @@ -49,12 +50,6 @@ import { UserAgent as __UserAgent, } from "@smithy/types"; -import { - defaultSQSHttpAuthSchemeParametersProvider, - HttpAuthSchemeInputConfig, - HttpAuthSchemeResolvedConfig, - resolveHttpAuthSchemeConfig, -} from "./auth/httpAuthSchemeProvider"; import { AddPermissionCommandInput, AddPermissionCommandOutput } from "./commands/AddPermissionCommand"; import { CancelMessageMoveTaskCommandInput, @@ -250,29 +245,28 @@ export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__ useFipsEndpoint?: boolean | __Provider; /** - * A constructor for a class implementing the {@link __Checksum} interface - * that computes MD5 hashes. - * @internal + * The AWS region to which this client will send requests */ - md5?: __ChecksumConstructor | __HashConstructor; + region?: string | __Provider; /** - * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * Default credentials provider; Not available in browser runtime. * @internal */ - defaultUserAgentProvider?: Provider<__UserAgent>; + credentialDefaultProvider?: (input: any) => __Provider<__Credentials>; /** - * The AWS region to which this client will send requests + * A constructor for a class implementing the {@link __Checksum} interface + * that computes MD5 hashes. + * @internal */ - region?: string | __Provider; + md5?: __ChecksumConstructor | __HashConstructor; /** - * Default credentials provider; Not available in browser runtime. - * @deprecated + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header * @internal */ - credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + defaultUserAgentProvider?: Provider<__UserAgent>; /** * Value for how many times a request will be made at most in case of retry. @@ -311,8 +305,8 @@ export type SQSClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOpt EndpointInputConfig & RetryInputConfig & HostHeaderInputConfig & + AwsAuthInputConfig & UserAgentInputConfig & - HttpAuthSchemeInputConfig & ClientInputEndpointParameters; /** * @public @@ -331,8 +325,8 @@ export type SQSClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHa EndpointResolvedConfig & RetryResolvedConfig & HostHeaderResolvedConfig & + AwsAuthResolvedConfig & UserAgentResolvedConfig & - HttpAuthSchemeResolvedConfig & ClientResolvedEndpointParameters; /** * @public @@ -428,17 +422,6 @@ export class SQSClient extends __Client< */ readonly config: SQSClientResolvedConfig; - private getDefaultHttpAuthSchemeParametersProvider() { - return defaultSQSHttpAuthSchemeParametersProvider; - } - - private getIdentityProviderConfigProvider() { - return async (config: SQSClientResolvedConfig) => - new DefaultIdentityProviderConfig({ - "aws.auth#sigv4": config.credentials, - }); - } - constructor(...[configuration]: __CheckOptionalClientConfig) { const _config_0 = __getRuntimeConfig(configuration || {}); const _config_1 = resolveClientEndpointParameters(_config_0); @@ -446,8 +429,8 @@ export class SQSClient extends __Client< const _config_3 = resolveEndpointConfig(_config_2); const _config_4 = resolveRetryConfig(_config_3); const _config_5 = resolveHostHeaderConfig(_config_4); - const _config_6 = resolveUserAgentConfig(_config_5); - const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_6 = resolveAwsAuthConfig(_config_5); + const _config_7 = resolveUserAgentConfig(_config_6); const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); super(_config_8); this.config = _config_8; @@ -456,14 +439,8 @@ export class SQSClient extends __Client< this.middlewareStack.use(getHostHeaderPlugin(this.config)); this.middlewareStack.use(getLoggerPlugin(this.config)); this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getAwsAuthPlugin(this.config)); this.middlewareStack.use(getUserAgentPlugin(this.config)); - this.middlewareStack.use( - getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { - httpAuthSchemeParametersProvider: this.getDefaultHttpAuthSchemeParametersProvider(), - identityProviderConfigProvider: this.getIdentityProviderConfigProvider(), - }) - ); - this.middlewareStack.use(getHttpSigningPlugin(this.config)); } /** diff --git a/clients/client-sqs/src/auth/httpAuthExtensionConfiguration.ts b/clients/client-sqs/src/auth/httpAuthExtensionConfiguration.ts deleted file mode 100644 index 8360edba2d330..0000000000000 --- a/clients/client-sqs/src/auth/httpAuthExtensionConfiguration.ts +++ /dev/null @@ -1,72 +0,0 @@ -// smithy-typescript generated code -import { AwsCredentialIdentity, AwsCredentialIdentityProvider, HttpAuthScheme } from "@smithy/types"; - -import { SQSHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; - -/** - * @internal - */ -export interface HttpAuthExtensionConfiguration { - setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; - httpAuthSchemes(): HttpAuthScheme[]; - setHttpAuthSchemeProvider(httpAuthSchemeProvider: SQSHttpAuthSchemeProvider): void; - httpAuthSchemeProvider(): SQSHttpAuthSchemeProvider; - setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; - credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; -} - -/** - * @internal - */ -export type HttpAuthRuntimeConfig = Partial<{ - httpAuthSchemes: HttpAuthScheme[]; - httpAuthSchemeProvider: SQSHttpAuthSchemeProvider; - credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; -}>; - -/** - * @internal - */ -export const getHttpAuthExtensionConfiguration = ( - runtimeConfig: HttpAuthRuntimeConfig -): HttpAuthExtensionConfiguration => { - const _httpAuthSchemes = runtimeConfig.httpAuthSchemes!; - let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider!; - let _credentials = runtimeConfig.credentials; - return { - setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void { - const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); - if (index === -1) { - _httpAuthSchemes.push(httpAuthScheme); - } else { - _httpAuthSchemes.splice(index, 1, httpAuthScheme); - } - }, - httpAuthSchemes(): HttpAuthScheme[] { - return _httpAuthSchemes; - }, - setHttpAuthSchemeProvider(httpAuthSchemeProvider: SQSHttpAuthSchemeProvider): void { - _httpAuthSchemeProvider = httpAuthSchemeProvider; - }, - httpAuthSchemeProvider(): SQSHttpAuthSchemeProvider { - return _httpAuthSchemeProvider; - }, - setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void { - _credentials = credentials; - }, - credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined { - return _credentials; - }, - }; -}; - -/** - * @internal - */ -export const resolveHttpAuthRuntimeConfig = (config: HttpAuthExtensionConfiguration): HttpAuthRuntimeConfig => { - return { - httpAuthSchemes: config.httpAuthSchemes(), - httpAuthSchemeProvider: config.httpAuthSchemeProvider(), - credentials: config.credentials(), - }; -}; diff --git a/clients/client-sqs/src/auth/httpAuthSchemeProvider.ts b/clients/client-sqs/src/auth/httpAuthSchemeProvider.ts deleted file mode 100644 index 204eb1d9ca95b..0000000000000 --- a/clients/client-sqs/src/auth/httpAuthSchemeProvider.ts +++ /dev/null @@ -1,137 +0,0 @@ -// smithy-typescript generated code -import { - AWSSDKSigV4AuthInputConfig, - AWSSDKSigV4AuthResolvedConfig, - AWSSDKSigV4PreviouslyResolved, - resolveAWSSDKSigV4Config, -} from "@aws-sdk/core"; -import { - HandlerExecutionContext, - HttpAuthOption, - HttpAuthScheme, - HttpAuthSchemeParameters, - HttpAuthSchemeParametersProvider, - HttpAuthSchemeProvider, -} from "@smithy/types"; -import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; - -import { SQSClientConfig, SQSClientResolvedConfig } from "../SQSClient"; - -/** - * @internal - */ -export interface SQSHttpAuthSchemeParameters extends HttpAuthSchemeParameters { - region?: string; -} - -/** - * @internal - */ -export interface SQSHttpAuthSchemeParametersProvider - extends HttpAuthSchemeParametersProvider< - SQSClientResolvedConfig, - HandlerExecutionContext, - SQSHttpAuthSchemeParameters, - object - > {} - -/** - * @internal - */ -export const defaultSQSHttpAuthSchemeParametersProvider = async ( - config: SQSClientResolvedConfig, - context: HandlerExecutionContext, - input: object -): Promise => { - return { - operation: getSmithyContext(context).operation as string, - region: - (await normalizeProvider(config.region)()) || - (() => { - throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); - })(), - }; -}; - -function createAwsAuthSigv4HttpAuthOption(authParameters: SQSHttpAuthSchemeParameters): HttpAuthOption { - return { - schemeId: "aws.auth#sigv4", - signingProperties: { - name: "sqs", - region: authParameters.region, - }, - propertiesExtractor: (config: SQSClientConfig, context) => ({ - /** - * @internal - */ - signingProperties: { - config, - context, - }, - }), - }; -} - -/** - * @internal - */ -export interface SQSHttpAuthSchemeProvider extends HttpAuthSchemeProvider {} - -/** - * @internal - */ -export const defaultSQSHttpAuthSchemeProvider: SQSHttpAuthSchemeProvider = (authParameters) => { - const options: HttpAuthOption[] = []; - switch (authParameters.operation) { - default: { - options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); - } - } - return options; -}; - -/** - * @internal - */ -export interface HttpAuthSchemeInputConfig extends AWSSDKSigV4AuthInputConfig { - /** - * experimentalIdentityAndAuth: Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. - * @internal - */ - httpAuthSchemes?: HttpAuthScheme[]; - - /** - * experimentalIdentityAndAuth: Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. - * @internal - */ - httpAuthSchemeProvider?: SQSHttpAuthSchemeProvider; -} - -/** - * @internal - */ -export interface HttpAuthSchemeResolvedConfig extends AWSSDKSigV4AuthResolvedConfig { - /** - * experimentalIdentityAndAuth: Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. - * @internal - */ - readonly httpAuthSchemes: HttpAuthScheme[]; - - /** - * experimentalIdentityAndAuth: Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. - * @internal - */ - readonly httpAuthSchemeProvider: SQSHttpAuthSchemeProvider; -} - -/** - * @internal - */ -export const resolveHttpAuthSchemeConfig = ( - config: T & HttpAuthSchemeInputConfig & AWSSDKSigV4PreviouslyResolved -): T & HttpAuthSchemeResolvedConfig => { - const config_0 = resolveAWSSDKSigV4Config(config); - return { - ...config_0, - } as T & HttpAuthSchemeResolvedConfig; -}; diff --git a/clients/client-sqs/src/extensionConfiguration.ts b/clients/client-sqs/src/extensionConfiguration.ts index 34ce9f7c61af9..fdbe05b79c977 100644 --- a/clients/client-sqs/src/extensionConfiguration.ts +++ b/clients/client-sqs/src/extensionConfiguration.ts @@ -3,13 +3,10 @@ import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; import { DefaultExtensionConfiguration } from "@smithy/types"; -import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; - /** * @internal */ export interface SQSExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, - AwsRegionExtensionConfiguration, - HttpAuthExtensionConfiguration {} + AwsRegionExtensionConfiguration {} diff --git a/clients/client-sqs/src/runtimeConfig.shared.ts b/clients/client-sqs/src/runtimeConfig.shared.ts index 99614b59804a8..6027dab48422f 100644 --- a/clients/client-sqs/src/runtimeConfig.shared.ts +++ b/clients/client-sqs/src/runtimeConfig.shared.ts @@ -1,12 +1,9 @@ // smithy-typescript generated code -import { AWSSDKSigV4Signer } from "@aws-sdk/core"; import { NoOpLogger } from "@smithy/smithy-client"; -import { IdentityProviderConfig } from "@smithy/types"; import { parseUrl } from "@smithy/url-parser"; import { fromBase64, toBase64 } from "@smithy/util-base64"; import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; -import { defaultSQSHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; import { defaultEndpointResolver } from "./endpoint/endpointResolver"; import { SQSClientConfig } from "./SQSClient"; @@ -21,14 +18,6 @@ export const getRuntimeConfig = (config: SQSClientConfig) => { disableHostPrefix: config?.disableHostPrefix ?? false, endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, extensions: config?.extensions ?? [], - httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSQSHttpAuthSchemeProvider, - httpAuthSchemes: config?.httpAuthSchemes ?? [ - { - schemeId: "aws.auth#sigv4", - identityProvider: (ipc: IdentityProviderConfig) => ipc.getIdentityProvider("aws.auth#sigv4"), - signer: new AWSSDKSigV4Signer(), - }, - ], logger: config?.logger ?? new NoOpLogger(), serviceId: config?.serviceId ?? "SQS", urlParser: config?.urlParser ?? parseUrl, diff --git a/clients/client-sqs/src/runtimeExtensions.ts b/clients/client-sqs/src/runtimeExtensions.ts index bbf0b23c837d0..c9985abb9ac86 100644 --- a/clients/client-sqs/src/runtimeExtensions.ts +++ b/clients/client-sqs/src/runtimeExtensions.ts @@ -6,7 +6,6 @@ import { import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; -import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; import { SQSExtensionConfiguration } from "./extensionConfiguration"; /** @@ -33,7 +32,6 @@ export const resolveRuntimeExtensions = (runtimeConfig: any, extensions: Runtime ...asPartial(getAwsRegionExtensionConfiguration(runtimeConfig)), ...asPartial(getDefaultExtensionConfiguration(runtimeConfig)), ...asPartial(getHttpHandlerExtensionConfiguration(runtimeConfig)), - ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig)), }; extensions.forEach((extension) => extension.configure(extensionConfiguration)); @@ -43,6 +41,5 @@ export const resolveRuntimeExtensions = (runtimeConfig: any, extensions: Runtime ...resolveAwsRegionExtensionConfiguration(extensionConfiguration), ...resolveDefaultRuntimeConfig(extensionConfiguration), ...resolveHttpHandlerRuntimeConfig(extensionConfiguration), - ...resolveHttpAuthRuntimeConfig(extensionConfiguration), }; };