Database password trong code? API key .env commit Git? Token hết hạn phải deploy lại? Secrets Manager và SSM Parameter Store là giải pháp.
| Secrets Manager | SSM Parameter Store | |
|---|---|---|
| Dùng cho | DB password, API key, OAuth token | Config, feature flag, non-sensitive URL |
| Auto-rotation | Có (RDS built-in) | Không |
| Cost | $0.40/secret/tháng | Standard: free. Advanced: $0.05/param/tháng |
| Lambda Extension | Cache in-memory, auto-refresh | Cache qua extension |
aws secretsmanager create-secret --name /prod/database \
--secret-string '{"host":"rds-xxx.amazonaws.com","username":"admin","password":"..."}'
aws ssm put-parameter --name /prod/api-key --value "sk-abc123" --type SecureString --key-id alias/aws/ssm
// Lambda extension cache: không gọi API mỗi invocation
const { SecretString } = await sm.send(
new GetSecretValueCommand({ SecretId: "/prod/database" })
);
const { host, username, password } = JSON.parse(SecretString!);
Dùng Lambda extension cho cả hai service. Extension cache secret trong memory, refresh trước khi hết hạn. Giảm latency từ ~50ms (API call) xuống <1ms (in-memory read), giảm API cost.
Bài sau: Phần 31: Dự án — Serverless REST API