Repository navigation
feat(adapter-s3): optional serverSideEncryption on putObject - #33
Closed
filipeforattini wants to merge 1 commit into
Closed
filipeforattini wants to merge 1 commit into
filipeforattini wants to merge 1 commit into
Conversation
StoragePutObjectParams gains serverSideEncryption ('AES256' | 'aws:kms'),
forwarded by the S3 adapter as ServerSideEncryption on PutObjectCommand.
Consumers that had to register SDK middleware to keep at-rest encryption
requests (svc-cron's S3WebhookSubscriptionStore) can pass the param instead.
Covered by a local fake-S3 test asserting the header on PUT and its absence
by default and on reads. Changeset: minor for @baldim/core and @baldim/adapter-s3.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexto
Consumidores do
@baldim/adapter-s3que precisam pedir criptografia at-rest ao S3 (ServerSideEncryption) hoje precisam registrar middleware no client do AWS SDK por fora do adapter — caso dosvc-cron(stone-payments/closer PR #4291), que injeta o header viamiddlewareStackporque oputObjectdo adapter não expõe o parâmetro. Este PR fecha o primeiro dos dois gaps levantados na migração do closer para o baldim.Gap 1 — SSE param (implementado aqui)
StoragePutObjectParamsganhaserverSideEncryption?: 'AES256' | 'aws:kms', repassado peloS3Client.putObjectcomoServerSideEncryptionnoPutObjectCommand. Opcional e aditivo: nenhum write path existente muda de comportamento.Verificação: teste novo (
server-side-encryption.test.ts) sobe um S3 falso em127.0.0.1e inspeciona o que sai na rede —PUTcom o headerx-amz-server-side-encryption: AES256quando o param é passado, sem header no default e emGET.typechecke suite do adapter verdes (6 passed; contrato S3 real permanece gated porBALDIM_S3_CONTRACT_URL).Gap 2 — multipart upload (documentado, não implementado)
putObjectusaPutObjectCommand, então objetos acima de 5 GB (ou uploads instáveis de alto volume) não têm multipart. É o que segura osvc-workerdo closer (Parquet grande via@aws-sdk/lib-storageUpload, partSize 16 MB) migrando para o baldim. Desenho proposto para um PR futuro:uploadObject(params: StorageUploadObjectParams): Promise<...>compartSize?: numberequeueSize?: number, implementado no adapter-s3 com@aws-sdk/lib-storage(new Upload({ client, params })) e mapeado paraputObjectnos adapters que não suportam multipart (memory/filesystem) — mesma estratégia do driver de backup, que já tratauploadObjectcomo capacidade opcional (s3-backup-driver.class.ts).StorageUploadObjectParamsestendeStoragePutObjectParams(herdandoserverSideEncryptionde graça —Uploadaceita os mesmos inputs).putObjectcom multipart implícito: mudaria a semântica de single-shot que o contrato público etests/storage-adapter-contract.tsjá estabelecem.Mudanças
core/src/clients/types.ts:serverSideEncryption?: 'AES256' | 'aws:kms'emStoragePutObjectParamsadapters/s3/src/s3-client.class.ts: forward paraoptions.ServerSideEncryptionadapters/s3/tests/server-side-encryption.test.ts: prova de rede com S3 falso.changeset/adapter-s3-server-side-encryption.md: minor de@baldim/coree@baldim/adapter-s3