Как создать предварительно назначенные ссылки с помощью NodeJS SDK для IBM Cloud Object Storage? - PullRequest
0 голосов
/ 30 августа 2018

Я использую IBM Cloud Object Storage и его NodeJS SDK (https://github.com/IBM/ibm-cos-sdk-js).

Я хочу создать предварительно созданные ссылки, чтобы пользователи могли получать доступ к содержимому корзины без необходимости аутентификации.

Когда я звоню cos.getSignedUrl('getObject', ...), я получаю сообщение об ошибке UnsupportedSigner: Presigning only supports S3 or SigV4 signing.

Как решить эту проблему?

1 Ответ

0 голосов
/ 30 августа 2018

Сначала необходимо сгенерировать ключи HMAC для экземпляра службы, как описано в Как создать учетные данные HMAC для IBM Cloud Object Storage с помощью CLI?

Получив ключ доступа HMAC и секретный ключ доступа, измените инициализацию COS SDK следующим образом:

const config = {
  endpoint: 'cos endpoint',
  apiKeyId: 'cos api key',
  ibmAuthEndpoint: 'https://iam.ng.bluemix.net/oidc/token',
  serviceInstanceId: 'cos crn'
  // these two are required to generate presigned URLs
  credentials: new COS.Credentials('<access key>', '<secret_access_key>', sessionToken = null),
  signatureVersion: 'v4'
};
const cos = new COS.S3(config);

тогда вы можете создавать ссылки с помощью:

const url = await cos.getSignedUrl('getObject', {
  Bucket: '<your-bucket-name>',
  Key: '<your-key-name>',
  Expires: 60 * 5, // 5 minutes
});
...