Надстройте/Настройте AWS SDK версия 3 с Nestjs
Наскоро получавах това предупреждение за надстройката на версията на AWS SDK за Nodejs, която използвах за моя стар проект Nestjs. Предупреждението е така:
Формализираме нашите планове за въвеждане на AWS SDK за JavaScript (v2) в режим на поддръжка през 2023 г.
Моля, мигрирайте кода си, за да използвате AWS SDK за JavaScript (v3)
Така че си помислих, че може би е добър момент за надграждане до v3. Предполагах, че просто ще трябва да надстроя пакетите до техните по-нови версии и това ще свърши работата, но се оказа, че не е така и трябваше да променя направо от начина, по който импортираме пакета, до извикването на API функциите.
Преди това използвах „aws-sdk“ и „nest-aws-sdk“, които замених съответно с „@aws-sdk/{service}“ и „aws-sdk-v3-nest“ за тяхната цел.
app.module.ts (стар импортиран)
import { AwsSdkModule } from 'nest-aws-sdk'; import { SharedIniFileCredentials, S3, SecretsManager, CognitoIdentityServiceProvider, } from 'aws-sdk';
app.module.ts (нов внос)
import { AwsSdkModule } from 'aws-sdk-v3-nest'; import { S3Client } from '@aws-sdk/client-s3'; import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager'; import { CognitoIdentityProviderClient } from '@aws-sdk/client-cognito-identity-provider'; import { fromIni } from '@aws-sdk/credential-providers';
Сега да видим конфигурациите:
app.module.ts(стар)
@Module({ imports: [ AwsSdkModule.forRootAsync({ defaultServiceOptions: { useValue: { signatureVersion: 'v4', region: '{region}', credentials: !process.env.LAMBDA_TASK_ROOT && !process.env.AWS_EXECUTION_ENV ? new SharedIniFileCredentials({ profile: '{my local aws profile name}', }) : null, }, }, services: [S3, SecretsManager, CognitoIdentityServiceProvider], }), ... ], });
Обяснение:
Тук в горния код бях настроил идентификационни данни, които търсят променливата на средата „LAMBDA_TASK_ROOT“, за да видят дали е на Lamba (моят код е внедрен на lambda...