こんにちは。CX事業本部のakkyです。
RDSのパスワードなど、シークレットの管理などにはSecretsManagerを使うのが便利ですが、API経由で値を取得する際に複数のシークレットを同時に取得できるようにアップデートされました。
aws-sdk-js-v3もつい1時間ほど前にアップデートされ、様々なアップデートと共にこの機能に対応しました。
https://github.com/aws/aws-sdk-js-v3/releases/tag/v3.458.0
私は普段はPythonを使うことが多いので、boto3も更新されていないかを確かめてみたのですが、11/27 15時の段階ではまだアップデートはないようです。とはいえしばらくすれば対応されると思います。
→つい先ほどのアップデートで対応したようです!
それでは、早速この機能を試してみましたので、ご紹介します。
やってみた
まず、マネジメントコンソールでSecretsManagerを開き、2つのシークレットを登録してみました。
次にnodejsで新たなプロジェクトを作り、npmでaws-sdk v3の3.458.0とtypescriptをインストールしました。
"@aws-sdk/client-secrets-manager": "^3.458.0",
コードはTypescriptで記述しました。test1とtest2という2つのシークレットを名前で検索してみます。
import { SecretsManager } from "@aws-sdk/client-secrets-manager";
const secretsmanager = new SecretsManager({ region: "ap-northeast-1" });
(async function () {
// const secrets_list = await secretsmanager.listSecrets({});
// console.log(secrets_list);
const secrets = await secretsmanager.batchGetSecretValue({
Filters: [{
Key: "name",
Values: ["test1", "test2"]
}
]
});
console.log(secrets);
})();
こちらのコードを実行すると、2つのシークレットが表示されることを確認できました!(結果は一部マスクしています)
{
'$metadata': {
httpStatusCode: 200,
requestId: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
extendedRequestId: undefined,
cfId: undefined,
attempts: 1,
totalRetryDelay: 0
},
Errors: [],
SecretValues: [
{
ARN: 'arn:aws:secretsmanager:ap-northeast-1:123456789012:secret:test2-XXXXXX',
CreatedDate: 2023-11-27TXX:XX:XX.XXXXZ,
Name: 'test2',
SecretString: '{"password":"9876"}',
VersionId: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
VersionStages: [Array]
},
{
ARN: 'arn:aws:secretsmanager:ap-northeast-1:123456789012:secret:test1-XXXXXX',
CreatedDate: 2023-11-27TXX:XX:XX.XXXXZ,
Name: 'test1',
SecretString: '{"password":"123456"}',
VersionId: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
VersionStages: [Array]
}
]
}