O cliente do kit de desenvolvimento de software (SDK) Browser.js gerencia recursos do Object Storage Service (OSS), como buckets e arquivos. Para enviar uma solicitação ao OSS, inicialize uma instância do cliente e modifique as configurações padrão conforme necessário.
Pré-requisitos
Instale o Browser.js SDK. Para mais informações, consulte Instalação (Browser.js SDK).
Crie um novo cliente
Signature V4 (Recommended)
Use o algoritmo de assinatura V4, mais seguro. Ao inicializar um cliente com assinatura V4, declare authorizationV4. O OSS Browser.js SDK V6.20.0 e versões posteriores oferecem suporte a assinaturas V4.
O exemplo a seguir mostra como usar uma assinatura V4 durante a inicialização com um nome de domínio do OSS. Para outros cenários, como inicialização com um nome de domínio personalizado, modifique o exemplo conforme necessário.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<!--Import the SDK file.-->
<script
type="text/javascript"
src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.20.0.min.js"
></script>
<script type="text/javascript">
const client = new OSS({
// Set yourRegion to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set yourRegion to oss-cn-hangzhou.
region: 'yourRegion',
authorizationV4: true,
// The temporary AccessKey pair (AccessKey ID and AccessKey secret) obtained from Security Token Service (STS).
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// The security token obtained from STS.
stsToken: 'yourSecurityToken',
// Specify the bucket name. For example, examplebucket.
bucket: "examplebucket",
});
</script>
</body>
</html>
Signature V1 (Not recommended)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<!--Import the SDK file.-->
<script
type="text/javascript"
src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"
></script>
<script type="text/javascript">
const client = new OSS({
// Set yourRegion to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set yourRegion to oss-cn-hangzhou.
region: 'yourRegion',
// The temporary AccessKey pair (AccessKey ID and AccessKey secret) obtained from STS.
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// The security token obtained from STS.
stsToken: 'yourSecurityToken',
// Specify the bucket name. For example, examplebucket.
bucket: "examplebucket",
});
</script>
</body>
</html>
Configure o cliente
Adicione itens de configuração ao inicializar o cliente. Por exemplo, use timeout para definir o tempo limite da solicitação e stsToken para especificar uma credencial de acesso temporária. Para mais detalhes sobre os itens de configuração e exemplos compatíveis com o Browser.js, consulte as seções a seguir.
Descrições dos parâmetros options
accessKeyId {String}: AccessKey ID obtido no Alibaba Cloud Management Console.
accessKeySecret {String}: AccessKey secret obtido no Alibaba Cloud Management Console.
[stsToken] {String}: Token do Security Token Service usado para autorização temporária.
[refreshSTSToken] {Function}: Função que define automaticamente stsToken, accessKeyId e accessKeySecret quando o token STS expira. Essa função deve retornar um objeto contendo stsToken, accessKeyId e accessKeySecret.
[refreshSTSTokenInterval] {number}: Intervalo de atualização do token do Security Token Service, em milissegundos. Esse valor deve ser menor que o período de expiração do token STS. O valor padrão é 300.000 milissegundos (5 minutos).
[bucket] {String}: Bucket padrão a ser acessado. Se o bucket não existir, chame a operação putBucket() para criá-lo.
[endpoint] {String}: Nome de domínio específico da região do OSS. Esse parâmetro tem prioridade maior que o parâmetro region. Defina-o como um endpoint público, um endpoint interno da mesma região ou um nome de domínio acelerado, conforme necessário. Para mais informações, consulte a lista de endpoints.
[region] {String}: Região onde o bucket está localizado. O valor padrão é oss-cn-hangzhou.
[internal] {Boolean}: Define se o acesso ao OSS ocorre pela rede interna da Alibaba Cloud. O valor padrão é false. Se o servidor também estiver em execução na Alibaba Cloud, defina esse parâmetro como true para reduzir custos de transferência de dados.
[secure] {Boolean}: Define se o cliente OSS usa o protocolo HTTPS (secure: true) ou HTTP (secure: false).
[timeout] {String|Number}: Tempo limite para todas as operações, em segundos. O valor padrão é 60.
[cname] {Boolean}: Define se um nome de domínio personalizado será usado para acessar o OSS. O valor padrão é false. Ao definir esse parâmetro como true, especifique o nome de domínio personalizado no campo endpoint.
[isRequestPay] {Boolean}: Define se o recurso Requester Pays deve ser ativado para o bucket. O valor padrão é false. Se definido como true, o cabeçalho 'x-oss-request-payer': 'requester' é enviado ao servidor OSS.
[useFetch] {Boolean}: Parâmetro válido apenas em ambiente de navegador. O valor padrão é false. Se definido como true, os objetos são carregados usando o método fetch. Caso contrário, XMLHttpRequest é utilizado.
[retryMax] {Number}: Número máximo de tentativas para uma solicitação que falha devido a erro de rede ou tempo limite. Não há suporte para novas tentativas em operações putStream.
[authorizationV4] {Boolean}: Define se uma assinatura V4 deve ser usada. O valor padrão é false.
Exemplos
-
Uso básico
const OSS = require('ali-oss'); const store = new OSS({ region: 'yourRegion', authorizationV4: true, accessKeyId: 'your access key', accessKeySecret: 'your access secret', stsToken: 'yourSecurityToken', bucket: 'your bucket name', }); -
Usar um endpoint acelerado
NotaEndpoint do Global Accelerator: oss-accelerate.aliyuncs.com
Endpoint acelerado para regiões fora da China continental: oss-accelerate-overseas.aliyuncs.com
const OSS = require('ali-oss'); const store = new OSS({ region: 'yourRegion', authorizationV4: true, accessKeyId: 'your access key', accessKeySecret: 'your access secret', stsToken: 'yourSecurityToken', bucket: 'your bucket name', endpoint: 'oss-accelerate.aliyuncs.com', }); -
Usar um método de acesso personalizado
const OSS = require('ali-oss'); const store = new OSS({ region: 'yourRegion', authorizationV4: true, stsToken: 'yourSecurityToken', accessKeyId: 'your access key', accessKeySecret: 'your access secret', cname: true, endpoint: 'your custome domain', }); -
Acessar usando um token STS
const OSS = require('ali-oss'); const store = new OSS({ region: 'yourRegion', authorizationV4: true, accessKeyId: 'your STS key', accessKeySecret: 'your STS secret', stsToken: 'your STS token', refreshSTSToken: async () => { const info = await fetch('you sts server'); return { accessKeyId: info.accessKeyId, accessKeySecret: info.accessKeySecret, stsToken: info.stsToken, }; }, refreshSTSTokenInterval: 300000, }); -
Tentar novamente uma solicitação usando stream
for (let i = 0; i <= store.options.retryMax; i++) { try { const result = await store.putStream('<example-object>', fs.createReadStream('<example-path>')); console.log(result); break; // break if success } catch (e) { console.log(e); } } -
Usar uma assinatura V4 e a opção opcional additionalHeaders
const OSS = require('ali-oss'); const store = new OSS({ accessKeyId: 'your access key', accessKeySecret: 'your access secret', bucket: 'your bucket name', region: 'oss-cn-hangzhou', authorizationV4: true , stsToken: 'yourSecurityToken', }); try { const bucketInfo = await store.getBucketInfo('your bucket name'); console.log(bucketInfo); } catch (e) { console.log(e); } try { const putObjectResult = await store.put('your bucket name', 'your object name', { headers: { // The headers of this request header1: 'value1', header2: 'value2', }, // The keys of the request headers to include in the V4 signature calculation. Ensure that these additional headers are included in the request headers. additionalHeaders: ['additional header1', 'additional header2'], }); console.log(putObjectResult); } catch (e) { console.log(e); }