diff --git a/bin/ensureServiceUser b/bin/ensureServiceUser index a894ece5..af320aba 100755 --- a/bin/ensureServiceUser +++ b/bin/ensureServiceUser @@ -4,12 +4,22 @@ // - deduplicate with Vault's seed script at https://github.com/scality/Vault/pull/1627 // - add permission boundaries to user when https://scality.atlassian.net/browse/VAULT-4 is implemented -process.env.AWS_SDK_JS_SUPPRESS_MAINTENANCE_MODE_MESSAGE = '1'; const { errors } = require('arsenal'); const { program } = require('commander'); const werelogs = require('werelogs'); const async = require('async'); -const { IAM } = require('aws-sdk'); +const { + IAMClient, + AttachUserPolicyCommand, + CreateAccessKeyCommand, + CreatePolicyCommand, + CreateUserCommand, + GetUserCommand, + ListAccessKeysCommand, + ListAttachedUserPoliciesCommand, + ListPoliciesCommand, + NoSuchEntityException, +} = require('@aws-sdk/client-iam'); const { version } = require('../package.json'); const systemPrefix = '/scality-internal/'; @@ -26,8 +36,10 @@ function generateUserPolicyDocument() { } function createIAMClient(opts) { - return new IAM({ + return new IAMClient({ endpoint: opts.iamEndpoint, + // Any region goes against Vault, but the client needs one to sign the request + region: process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || 'us-east-1', }); } @@ -78,19 +90,17 @@ class UserHandler extends BaseHandler { } collect() { - return this.iamClient.getUser({ + return this.iamClient.send(new GetUserCommand({ UserName: this.serviceName, - }) - .promise() + })) .then(res => res.User); } create(allResources) { - return this.iamClient.createUser({ + return this.iamClient.send(new CreateUserCommand({ UserName: this.serviceName, Path: systemPrefix, - }) - .promise() + })) .then(res => res.User); } @@ -105,24 +115,22 @@ class PolicyHandler extends BaseHandler { } collect() { - return this.iamClient.listPolicies({ + return this.iamClient.send(new ListPoliciesCommand({ MaxItems: 100, OnlyAttached: false, Scope: 'All', - }) - .promise() - .then(res => res.Policies.find(p => p.PolicyName === this.serviceName)); + })) + .then(res => (res.Policies || []).find(p => p.PolicyName === this.serviceName)); } create(allResources) { const doc = generateUserPolicyDocument(); - return this.iamClient.createPolicy({ + return this.iamClient.send(new CreatePolicyCommand({ PolicyName: this.serviceName, PolicyDocument: JSON.stringify(doc), Path: systemPrefix, - }) - .promise() + })) .then(res => res.Policy); } @@ -137,20 +145,18 @@ class PolicyAttachmentHandler extends BaseHandler { } collect() { - return this.iamClient.listAttachedUserPolicies({ + return this.iamClient.send(new ListAttachedUserPoliciesCommand({ UserName: this.serviceName, MaxItems: 100, - }) - .promise() + })) .then(res => res.AttachedPolicies) } create(allResources) { - return this.iamClient.attachUserPolicy({ + return this.iamClient.send(new AttachUserPolicyCommand({ PolicyArn: allResources.policy.Arn, UserName: this.serviceName, - }) - .promise(); + })); } conflicts(p) { @@ -164,19 +170,17 @@ class AccessKeyHandler extends BaseHandler { } collect() { - return this.iamClient.listAccessKeys({ + return this.iamClient.send(new ListAccessKeysCommand({ UserName: this.serviceName, MaxItems: 100, - }) - .promise() + })) .then(res => res.AccessKeyMetadata) } create(allResources) { - return this.iamClient.createAccessKey({ + return this.iamClient.send(new CreateAccessKeyCommand({ UserName: this.serviceName, - }) - .promise() + })) .then(res => res.AccessKey); } @@ -189,7 +193,9 @@ function collectResource(v, done) { v.collect() .then(res => done(null, res)) .catch(err => { - if (err.code === 'NoSuchEntity') { + // Vault's NoSuchEntity deserializes to this exception, whose name is + // NoSuchEntityException: comparing against the wire code silently misses it + if (err instanceof NoSuchEntityException) { return done(null, null); } diff --git a/package.json b/package.json index 1dc239d5..7d0aeac2 100644 --- a/package.json +++ b/package.json @@ -17,11 +17,11 @@ }, "homepage": "https://github.com/scality/utapi#readme", "dependencies": { + "@aws-sdk/client-iam": "^3.975.0", "@hapi/joi": "^17.1.1", "@senx/warp10": "1.0.14", "arsenal": "git+https://github.com/scality/Arsenal#8.5.6", "async": "^3.2.6", - "aws-sdk": "^2.1005.0", "aws4": "^1.13.2", "backo": "^1.1.0", "body-parser": "^1.20.3", diff --git a/tests/functional/v2/testEnsureServiceUser.js b/tests/functional/v2/testEnsureServiceUser.js index 6dbc10a0..3328faaa 100644 --- a/tests/functional/v2/testEnsureServiceUser.js +++ b/tests/functional/v2/testEnsureServiceUser.js @@ -1,4 +1,5 @@ const assert = require('assert'); +const { DeletePolicyCommand } = require('@aws-sdk/client-iam'); const vaultclient = require('../../utils/vaultclient'); @@ -43,7 +44,7 @@ describe('test bin/ensureServiceUser', () => { const detached = await vaultclient.detachUserPolicies(adminAccount, { name: 'service-utapi-user' }); assert.strictEqual(detached.length, 1); const client = vaultclient.getIAMClient(adminAccount); - await Promise.all(detached.map(PolicyArn => client.deletePolicy({ PolicyArn }).promise())); + await Promise.all(detached.map(PolicyArn => client.send(new DeletePolicyCommand({ PolicyArn })))); await vaultclient.ensureServiceUser(adminAccount); const res = await vaultclient.getInternalServiceUserAndPolicies(adminAccount); diff --git a/tests/utils/vaultclient.js b/tests/utils/vaultclient.js index cb5596cd..6871ebc6 100644 --- a/tests/utils/vaultclient.js +++ b/tests/utils/vaultclient.js @@ -1,5 +1,18 @@ /* eslint-disable no-console */ -const { IAM } = require('aws-sdk'); +const { + IAMClient, + AttachUserPolicyCommand, + CreateAccessKeyCommand, + CreatePolicyCommand, + CreateUserCommand, + DeletePolicyCommand, + DeleteUserCommand, + DetachUserPolicyCommand, + GetPolicyVersionCommand, + GetUserCommand, + ListAttachedUserPoliciesCommand, + ListUsersCommand, +} = require('@aws-sdk/client-iam'); const vaultclient = require('vaultclient'); const fs = require('fs'); const { v4: uuid } = require('uuid'); @@ -107,18 +120,15 @@ class VaultClient { } static getIAMClient(credentials) { - const endpoint = process.env.VAULT_ENDPOINT || 'http://127.0.0.1:8600'; - const info = { - endpoint, - sslEnabled: false, + return new IAMClient({ + endpoint: process.env.VAULT_ENDPOINT || 'http://127.0.0.1:8600', region: 'us-east-1', - apiVersion: '2010-05-08', - signatureVersion: 'v4', - accessKeyId: credentials.accessKey, - secretAccessKey: credentials.secretKey, - maxRetries: 0, - }; - return new IAM(info); + credentials: { + accessKeyId: credentials.accessKey, + secretAccessKey: credentials.secretKey, + }, + maxAttempts: 1, + }); } static async createAccount(name) { @@ -164,7 +174,7 @@ class VaultClient { static async createUser(parentAccount, name, path) { const client = VaultClient.getIAMClient(parentAccount); - const { User: user } = await client.createUser({ UserName: name, Path: path }).promise(); + const { User: user } = await client.send(new CreateUserCommand({ UserName: name, Path: path })); return { name, id: user.UserId, @@ -175,7 +185,7 @@ class VaultClient { static async createUserKeys(parentAccount, name) { const client = VaultClient.getIAMClient(parentAccount); - const { AccessKey: creds } = await client.createAccessKey({ UserName: name }).promise(); + const { AccessKey: creds } = await client.send(new CreateAccessKeyCommand({ UserName: name })); return { accessKey: creds.AccessKeyId, secretKey: creds.SecretAccessKey, @@ -209,9 +219,9 @@ class VaultClient { const client = VaultClient.getIAMClient(parentAccount); const PolicyDocument = VaultClient.templateUtapiPolicy(level, resource); const PolicyName = `utapi-test-policy-${uuid()}`; - const res = await client.createPolicy({ PolicyName, PolicyDocument }).promise(); + const res = await client.send(new CreatePolicyCommand({ PolicyName, PolicyDocument })); const { Arn: PolicyArn } = res.Policy; - await client.attachUserPolicy({ PolicyArn, UserName: user.name }).promise(); + await client.send(new AttachUserPolicyCommand({ PolicyArn, UserName: user.name })); } static async createInternalServiceAccount() { @@ -244,7 +254,7 @@ class VaultClient { static async getUserByName(parentAccount, name) { const client = VaultClient.getIAMClient(parentAccount); - const { User: user } = await client.getUser({ UserName: name }).promise(); + const { User: user } = await client.send(new GetUserCommand({ UserName: name })); return { name, id: user.UserId, @@ -255,12 +265,11 @@ class VaultClient { static async getAttachedPolicies(parentAccount, user) { const client = VaultClient.getIAMClient(parentAccount); - const res = await client.listAttachedUserPolicies({ UserName: user.name }).promise(); - const { AttachedPolicies: attached } = res; + const res = await client.send(new ListAttachedUserPoliciesCommand({ UserName: user.name })); + const attached = res.AttachedPolicies || []; const policies = await Promise.all( attached.map( - ({ PolicyArn }) => client.getPolicyVersion({ PolicyArn, VersionId: 'v1' }) - .promise() + ({ PolicyArn }) => client.send(new GetPolicyVersionCommand({ PolicyArn, VersionId: 'v1' })) .then(({ PolicyVersion }) => ({ arn: PolicyArn, document: JSON.parse(decodeURIComponent(PolicyVersion.Document)), @@ -281,9 +290,9 @@ class VaultClient { static async getAccountUsers(parentAccount) { const client = VaultClient.getIAMClient(parentAccount); - const { Users } = await client.listUsers({}).promise(); + const { Users } = await client.send(new ListUsersCommand({})); - return Users.map(user => ({ + return (Users || []).map(user => ({ arn: user.Arn, id: user.UserId, name: user.UserName, @@ -294,10 +303,10 @@ class VaultClient { const client = VaultClient.getIAMClient(parentAccount); const policies = await VaultClient.getAttachedPolicies(parentAccount, user); return Promise.all( - policies.map(policy => client.detachUserPolicy({ + policies.map(policy => client.send(new DetachUserPolicyCommand({ PolicyArn: policy.arn, UserName: user.name, - }).promise().then(() => policy.arn)), + })).then(() => policy.arn)), ); } @@ -324,8 +333,8 @@ class VaultClient { await Promise.all( users.map(async user => { const detached = await VaultClient.detachUserPolicies(parentAccount, user); - await Promise.all(detached.map(PolicyArn => client.deletePolicy({ PolicyArn }).promise())); - await client.deleteUser({ UserName: user.name }).promise(); + await Promise.all(detached.map(PolicyArn => client.send(new DeletePolicyCommand({ PolicyArn })))); + await client.send(new DeleteUserCommand({ UserName: user.name })); }), ); } diff --git a/yarn.lock b/yarn.lock index 506b5ff1..be251156 100644 --- a/yarn.lock +++ b/yarn.lock @@ -61,6 +61,20 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@aws-sdk/client-iam@^3.975.0": + version "3.1133.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-iam/-/client-iam-3.1133.0.tgz#7dc90ec61a78aac864415924ca2754dc31307f64" + integrity sha512-Tv0DAdkTJy5rkBid6ynVDj/Yw2s5j3SpfL0oJQ+EOy+nJQv0KxM5K5QCUuqwgx95+guWhxEOOh0qeJ0SCIZoAA== + dependencies: + "@aws-sdk/core" "^3.978.0" + "@aws-sdk/credential-provider-node" "^3.972.83" + "@aws-sdk/types" "^3.974.5" + "@smithy/core" "^3.33.3" + "@smithy/fetch-http-handler" "^5.7.2" + "@smithy/node-http-handler" "^4.11.3" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@aws-sdk/client-kms@^3.975.0": version "3.1093.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-kms/-/client-kms-3.1093.0.tgz#50df5de0782292e1a3a71f4bba6679ceea16c412" @@ -106,6 +120,20 @@ bowser "^2.11.0" tslib "^2.6.2" +"@aws-sdk/core@^3.978.0": + version "3.978.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.978.0.tgz#115e5d2e03edd380fe270d4617db0f4cc75869d6" + integrity sha512-2yX9LUmxPklVjSGTb8dfnWRJSiFQ3TeH2nn7G1mdKHTfnabzF0+gfrS8rYfLWmZrQ8A3mEcxMJjRc51dL5KWaA== + dependencies: + "@aws-sdk/types" "^3.974.5" + "@aws-sdk/xml-builder" "^3.972.40" + "@aws/lambda-invoke-store" "^0.3.0" + "@smithy/core" "^3.33.3" + "@smithy/signature-v4" "^5.6.12" + "@smithy/types" "^4.17.2" + bowser "^2.11.0" + tslib "^2.6.2" + "@aws-sdk/credential-provider-cognito-identity@^3.972.59": version "3.972.59" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.59.tgz#a069483e37fa4b44496c732cbf68f0707aeafab8" @@ -128,6 +156,17 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@aws-sdk/credential-provider-env@^3.972.71": + version "3.972.71" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.71.tgz#98261bde85bd0f2e2d4a7ba97dce679072e16aff" + integrity sha512-JN+JHruYZw3GUZB8YGAlDk4wTDPOEAEEdEzj5nS0xodWR4smzHsN7PnK2j6IeOsDIj2aqua5DSbhXl9Gtf90FQ== + dependencies: + "@aws-sdk/core" "^3.978.0" + "@aws-sdk/types" "^3.974.5" + "@smithy/core" "^3.33.3" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@aws-sdk/credential-provider-http@^3.972.62": version "3.972.62" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.62.tgz#2104724d4f7ba0838aed0be86a19a2bdc92aee47" @@ -141,6 +180,38 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@aws-sdk/credential-provider-http@^3.972.73": + version "3.972.73" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.73.tgz#879466b23dcaec4bee635abf1103e1f5f35d122d" + integrity sha512-uyYYnJOnlis8uQzaYGPd7N1JoioCoNpXgnkXYixsWJXHXgXyYi8WXJSDfofxJeWfQIGWLe2Nwyq60Uc7MZdVOg== + dependencies: + "@aws-sdk/core" "^3.978.0" + "@aws-sdk/types" "^3.974.5" + "@smithy/core" "^3.33.3" + "@smithy/fetch-http-handler" "^5.7.2" + "@smithy/node-http-handler" "^4.11.3" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-ini@^3.973.16": + version "3.973.16" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.16.tgz#b51db2069b915d563e05969cac845f624aed1dec" + integrity sha512-i++ly+0Uxa+u3ebSSyr0S/3CFhFJDxCXT3+Zj+mW2bXenEx5bKGCdTIKFu39SgXBNhWDjex/8cXUx9MUTMCrTw== + dependencies: + "@aws-sdk/core" "^3.978.0" + "@aws-sdk/credential-provider-env" "^3.972.71" + "@aws-sdk/credential-provider-http" "^3.972.73" + "@aws-sdk/credential-provider-login" "^3.972.78" + "@aws-sdk/credential-provider-process" "^3.972.71" + "@aws-sdk/credential-provider-sso" "^3.973.15" + "@aws-sdk/credential-provider-web-identity" "^3.972.77" + "@aws-sdk/nested-clients" "^3.997.45" + "@aws-sdk/types" "^3.974.5" + "@smithy/core" "^3.33.3" + "@smithy/credential-provider-imds" "^4.4.16" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@aws-sdk/credential-provider-ini@^3.973.5": version "3.973.5" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.5.tgz#83bab3633491e5b54d08e49e242f831a07aa3080" @@ -172,6 +243,18 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@aws-sdk/credential-provider-login@^3.972.78": + version "3.972.78" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.78.tgz#c1c7ca497201a7f2bd6ba7683fa3a896c4e218f8" + integrity sha512-eUtswnXu0+Ii9ieRK+0L7aPFV3Z/dnW2VntJzjBP9xs8s+8p5nBNuymIXtXwZ+5r5+XJP3e32nMkuZ/r0HozEA== + dependencies: + "@aws-sdk/core" "^3.978.0" + "@aws-sdk/nested-clients" "^3.997.45" + "@aws-sdk/types" "^3.974.5" + "@smithy/core" "^3.33.3" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@aws-sdk/credential-provider-node@^3.972.71": version "3.972.71" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.71.tgz#d87fe6da001575845e6332ad118f8f721dfebf52" @@ -189,6 +272,23 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@aws-sdk/credential-provider-node@^3.972.83": + version "3.972.83" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.83.tgz#f4e16b3a1d5d0237460c1b532de37eb6505985dc" + integrity sha512-jdso7ejzfRnatxMUZK4S/U6KbaDPCvfIV4XL+IQAPFDBt5rj5Fq595euqlK8Le4lNCMFR9oUpt+1l0aMgaayOQ== + dependencies: + "@aws-sdk/credential-provider-env" "^3.972.71" + "@aws-sdk/credential-provider-http" "^3.972.73" + "@aws-sdk/credential-provider-ini" "^3.973.16" + "@aws-sdk/credential-provider-process" "^3.972.71" + "@aws-sdk/credential-provider-sso" "^3.973.15" + "@aws-sdk/credential-provider-web-identity" "^3.972.77" + "@aws-sdk/types" "^3.974.5" + "@smithy/core" "^3.33.3" + "@smithy/credential-provider-imds" "^4.4.16" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@aws-sdk/credential-provider-process@^3.972.60": version "3.972.60" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.60.tgz#528c752fb31016568fb81b7c05b345d41c611d31" @@ -200,6 +300,30 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@aws-sdk/credential-provider-process@^3.972.71": + version "3.972.71" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.71.tgz#5a2ff72bcc2d7a658ca6472193ea33437c8b5a4e" + integrity sha512-lYmXJa4gvq4xN1lrT5NiP5vIYYKcGWAdj8y+8o6dlcateB5eF3Dn8DtmjjHKfMBrTPAMr2pebIiX/UOj8c1/UA== + dependencies: + "@aws-sdk/core" "^3.978.0" + "@aws-sdk/types" "^3.974.5" + "@smithy/core" "^3.33.3" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-sso@^3.973.15": + version "3.973.15" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.15.tgz#6a1391ca239f6d505dcb55ea6655b8c14fad5af7" + integrity sha512-6Jhcf4v0pSFdjk1EW2kvzuEBKD+UZ2uNcHUIglKKLndD20YhvkL2kdmDOV5/j4mYuWWwe/a1FQ1aomU86/Cg5Q== + dependencies: + "@aws-sdk/core" "^3.978.0" + "@aws-sdk/nested-clients" "^3.997.45" + "@aws-sdk/token-providers" "3.1129.0" + "@aws-sdk/types" "^3.974.5" + "@smithy/core" "^3.33.3" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@aws-sdk/credential-provider-sso@^3.973.4": version "3.973.4" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.4.tgz#e6e3cdb687e4acfd7ab228c73102c05e08fb988d" @@ -225,6 +349,18 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@aws-sdk/credential-provider-web-identity@^3.972.77": + version "3.972.77" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.77.tgz#5e288111937fcb6f9f02236fa153095d6e24d22f" + integrity sha512-uylIQSUWpfLuH2LovxEEfwzJGM/SabLOfLMg6YXu/E8jJEKUdpdILCVCQCdFvHyu/7dLJOHPMfrSwduxO56NkQ== + dependencies: + "@aws-sdk/core" "^3.978.0" + "@aws-sdk/nested-clients" "^3.997.45" + "@aws-sdk/types" "^3.974.5" + "@smithy/core" "^3.33.3" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@aws-sdk/credential-providers@^3.975.0": version "3.1093.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.1093.0.tgz#9612f305bd8caf3cb18824586dbbcec3a18d0528" @@ -293,6 +429,20 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@aws-sdk/nested-clients@^3.997.45": + version "3.997.45" + resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.997.45.tgz#3ed0e5fcd25c889025b2379a9434594fe7056a4a" + integrity sha512-mooq9Q+jLa18VoM7HouczmslZU60iiB0aKc/Ztnq/luIL1ud0z4DnYprLR/ZO1gp331S9tJctM1HZr7u6YKBXQ== + dependencies: + "@aws-sdk/core" "^3.978.0" + "@aws-sdk/signature-v4-multi-region" "^3.996.46" + "@aws-sdk/types" "^3.974.5" + "@smithy/core" "^3.33.3" + "@smithy/fetch-http-handler" "^5.7.2" + "@smithy/node-http-handler" "^4.11.3" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@aws-sdk/signature-v4-multi-region@^3.996.41": version "3.996.41" resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.41.tgz#1ac6743366e2382b73ed14af4b08d21de0bf1ed9" @@ -303,6 +453,16 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@aws-sdk/signature-v4-multi-region@^3.996.46": + version "3.996.46" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.46.tgz#ee57afe5282da4b57968061ef8706d32890267ab" + integrity sha512-L+2xZTye/2T96f3lwCws0Zw6GG2JHZW9e8FpVgGBeeExSKyeoZ6CWRpBml/7DNiK/O26jrgPM9F+Ay8VkgzUWQ== + dependencies: + "@aws-sdk/types" "^3.974.5" + "@smithy/signature-v4" "^5.6.12" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@aws-sdk/token-providers@3.1092.0": version "3.1092.0" resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.1092.0.tgz#3178452622c2cac79ed4a0c77733a0edaf9e6b76" @@ -315,6 +475,18 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@aws-sdk/token-providers@3.1129.0": + version "3.1129.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.1129.0.tgz#a4a11a789d7259874ccf3733e538fc70f8a289e4" + integrity sha512-Sbl3rpzQdsG4ZK2zh0JWUYyZPKKorJlVOddA2T0DVbKJFrsW8J6wgnslxxUH04+WaBMr4A1HzJZvZX0xUvkniA== + dependencies: + "@aws-sdk/core" "^3.978.0" + "@aws-sdk/nested-clients" "^3.997.45" + "@aws-sdk/types" "^3.974.5" + "@smithy/core" "^3.33.3" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@aws-sdk/types@^3.222.0": version "3.862.0" resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.862.0.tgz#2f5622e1aa3a5281d4f419f5d2c90f87dd5ff0cf" @@ -331,6 +503,14 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@aws-sdk/types@^3.974.5": + version "3.974.5" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.974.5.tgz#a52691531738d191b8b3fd1ae7757c2eeec7afee" + integrity sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ== + dependencies: + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@aws-sdk/util-locate-window@^3.0.0": version "3.873.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.873.0.tgz#cc10edef3b7aecf365943ec657116d6eb470d9cb" @@ -346,6 +526,14 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@aws-sdk/xml-builder@^3.972.40": + version "3.972.40" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.972.40.tgz#3cdb5f3400860ad91301aecb87fb5148a66d6ff7" + integrity sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA== + dependencies: + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@aws/lambda-invoke-store@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@aws/lambda-invoke-store/-/lambda-invoke-store-0.3.0.tgz#708802d987f8e17bdf4af4de1031660ce1cdd65f" @@ -1473,6 +1661,23 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@smithy/core@^3.33.2", "@smithy/core@^3.33.3": + version "3.34.1" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.34.1.tgz#2fb8133e9f3e99c3f88c8136da2a46cfee4e4fe4" + integrity sha512-dLcOUxz8YCv1RZUMKq6GbyUf95pLbrqh34bPvpCZ1+CByFF31BEAFewZjsGCnVsZTKdThNENfGyAgk2TJqVwSw== + dependencies: + "@smithy/types" "^4.18.0" + tslib "^2.6.2" + +"@smithy/credential-provider-imds@^4.4.16": + version "4.5.2" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.5.2.tgz#da3ea9636b5566b36b0761382d841a6d8fdde14f" + integrity sha512-A9uSdn72ozbRUSit0eib0TW7nXuNPlaeM0zcGkJ+nE6tFcSDbnmtwoxbTCFBukVQcszDAyvsd7+rTduPTXpygg== + dependencies: + "@smithy/core" "^3.33.2" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@smithy/credential-provider-imds@^4.4.9": version "4.4.12" resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.4.12.tgz#7dcc7ca3de3e06bc16288e94072a9e4cc02a7d9c" @@ -1491,6 +1696,15 @@ "@smithy/types" "^4.16.1" tslib "^2.6.2" +"@smithy/fetch-http-handler@^5.7.2": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-5.8.0.tgz#349464e31682d739a74efa42362756be49eb2883" + integrity sha512-ycSJu3tFAQ4v04CBB0agqFMVsSQ1iG3yw+SpgxRqKfaURpQD4CZ8Wn0zPMmSnOuTpTh65Vz+EA0rMrw089wvkA== + dependencies: + "@smithy/core" "^3.33.3" + "@smithy/types" "^4.18.0" + tslib "^2.6.2" + "@smithy/hash-node@^1.0.1": version "1.1.0" resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-1.1.0.tgz#a8da64fa4b2e2c64185df92897165c8113b499b2" @@ -1522,6 +1736,15 @@ dependencies: tslib "^2.6.2" +"@smithy/node-http-handler@^4.11.3": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-4.12.1.tgz#e4da9379d228517ba85845081e4e6758ca315c5d" + integrity sha512-ThMkboGeONWXAelq9FvGsuJC4rOi+qyC4/zhUF58xYpxUg5sQKx2VXZYJmtNjr4dSuBJ1HeJXETQILCz3wOHvw== + dependencies: + "@smithy/core" "^3.33.3" + "@smithy/types" "^4.18.0" + tslib "^2.6.2" + "@smithy/node-http-handler@^4.3.0", "@smithy/node-http-handler@^4.9.6": version "4.9.9" resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-4.9.9.tgz#51b342b83968ac73a58da7f2c1287fe8c1dd9ec2" @@ -1561,6 +1784,15 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@smithy/signature-v4@^5.6.12": + version "5.7.3" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.7.3.tgz#76603bf1ac9aa44e1d2f4f358b0cc0cf84961e46" + integrity sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow== + dependencies: + "@smithy/core" "^3.33.3" + "@smithy/types" "^4.17.2" + tslib "^2.6.2" + "@smithy/signature-v4@^5.6.5": version "5.6.8" resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.6.8.tgz#18f2eedb02cb8088b0d58fb20d2ea9822c9d6c5b" @@ -1591,6 +1823,13 @@ dependencies: tslib "^2.6.2" +"@smithy/types@^4.17.2", "@smithy/types@^4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.18.0.tgz#f68aca5b5e39f1f9def3827224e4a1e43d233347" + integrity sha512-CgB6HHWer/vrKps24ulRIbpcpb7K4xAU7SkZ7YHzBPlwHsvsrCJFEXK421s+cJzX+ZrqtA/TuU5w1HzI7k9N8A== + dependencies: + tslib "^2.6.2" + "@smithy/types@^4.3.2": version "4.3.2" resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.3.2.tgz#66ac513e7057637de262e41ac15f70cf464c018a" @@ -2188,7 +2427,7 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -aws-sdk@^2.1005.0, aws-sdk@^2.1691.0: +aws-sdk@^2.1691.0: version "2.1692.0" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1692.0.tgz#9dac5f7bfcc5ab45825cc8591b12753aa7d2902c" integrity sha512-x511uiJ/57FIsbgUe5csJ13k3uzu25uWQE+XqfBis/sB0SFoiElJWXRkgEAUh0U6n40eT3ay5Ue4oPkRMu1LYw==