1.0.9 • Published 11 months ago

tencentcloud-ssm-sdk-nodejs-v1 v1.0.9

Weekly downloads
-
License
Apache 2.0
Repository
-
Last release
11 months ago

SSM Rotated Credential SDK For Nodejs

支持平台

  • Linux x64(glibc >= 2.17)
  • Windows x64
  • Mac x64

依赖说明

建议 nodejs >= 12。

使用说明

npm install tencentcloud-ssm-sdk-nodejs-v1

环境变量

SSM_SECURED_ACCESS_KEY_RUNTIME_DEVICE_FINGERPRINT:值为UUID SSM_SECURED_ACCESS_KEY_PROFILE:profile_xxx.json文件的位置(绝对路径 + 文件名) SSM_SECURED_ACCESS_KEY_PROFILE_DECRYPT_KEY_DIR:whitebox.bin文件的位置(绝对路径) SSM_SECURED_ACCESS_KEY_PROFILE_DECRYPT_KEY_NAME:whitebox.bin文件的名字(文件名)

使用流程

  1. 设置profile 有关参数
  2. profile = await rc.LoadAccessKeyProfile() ,加载profile 配置信息
  3. cred = await profile.GetCredential(secretName) 获取认证信息, 如果发生轮转cred中的认证信息会变更
  4. profile.Close() 关闭定时器

例子:

以调用云产品KMS的GetRegions接口为例

const EnvSsmSecuredAccessKeyProfile = "SSM_SECURED_ACCESS_KEY_PROFILE"
const ssmSdk = require("tencentcloud-ssm-sdk-nodejs-v1")
const tencentcloud = require("tencentcloud-sdk-nodejs");
const KmsClient = tencentcloud.kms.v20190118.Client;

const rc = ssmSdk.rotated_credential

async function main() {
    try {
        // 子账号和tag的信息
        let tagName = "AKSK_XXX"
        //指定日志输出到控制台
        let log = new rc.ConsoleLogger()
        let profile = await rc.LoadAccessKeyProfile(log)
        //获取一次即可
        let cred = await profile.GetCredential(tagName)
        const clientConfig = {
            credential: cred,
            region: "ap-guangzhou",
            profile: {
                httpProfile: {
                    endpoint: "kms.tencentcloudapi.com",
                },
            },
        };
        const client = new KmsClient(clientConfig);
        const params = {};
        let regions = await client.GetRegions(params)
        console.log("load regions success", regions)
    } catch (e) {
        console.log("load cred failed", e)
    }
}

main()

COS SDK使用

COS SDK 版本 >= 2.11.17 npm i cos-nodejs-sdk-v5@2.11.17

const EnvSsmSecuredAccessKeyProfile = "SSM_SECURED_ACCESS_KEY_PROFILE"
const ssmSdk = require("tencentcloud-ssm-sdk-nodejs-v1")
const tencentcloud = require("tencentcloud-sdk-nodejs");
// 引入模块
const COS = require('cos-nodejs-sdk-v5');
const rc = ssmSdk.rotated_credential

async function main() {
    try {
        // 子账号和tag的信息
        let tagName = "AKSK_XXX"
        //指定日志输出到控制台
        let log = new rc.ConsoleLogger()
        let profile = await rc.LoadAccessKeyProfile(log)
        //获取一次即可,如果发生轮转 密钥信息会自动更新
        let cred = await profile.GetCredential(tagName)
        // 使用认证信息创建cos实例
        var cos = new COS({Credentials: cred});
        // 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket
        var Bucket = 'test-1250000000';
        // 存储桶Region可以在COS控制台指定存储桶的概览页查看 https://console.cloud.tencent.com/cos5/bucket/
        // 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224
        var Region = 'ap-guangzhou';
        // 分片上传
        cos.sliceUploadFile({
            Bucket: Bucket,
            Region: Region,
            Key: '1.zip',
            FilePath: './1.zip' // 本地文件地址,需自行替换
        }, function (err, data) {
            console.log(err, data);
        });
    } catch (e) {
        console.log("load cred failed", e)
    }
}

main()

腾讯云云函数

某些场景下 腾讯云云函数判断会走到musl去,但是实际上云函数只支持glibc。可以通过设置环境变量来解决该问题

# 设置该值为非空 则可以使用glibc版本的底层依赖
TENCENT_CLOUD_SERVERLESS = xx