O cliente do kit de desenvolvimento de software (SDK) do OSS Browser.js gerencia os recursos do Object Storage Service (OSS), como buckets e arquivos. Para enviar uma requisição ao OSS, inicialize uma instância do cliente e modifique as configurações padrão conforme a sua necessidade.
Pré-requisitos
O SDK do Browser.js precisa estar instalado. Para mais informações, consulte Installation (Browser.js SDK).
Crie um novo cliente
Assinatura V4 (Recomendada)
Utilize o algoritmo de assinatura V4, que é mais seguro. Ao inicializar um cliente com a assinatura V4, declare authorizationV4. As assinaturas V4 têm suporte no SDK do OSS Browser.js V6.20.0 e versões posteriores.
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 a 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>
Assinatura V1 (Não recomendada)
A partir de 1º de março de 2025, o Alibaba Cloud Object Storage Service (OSS) não oferece mais a assinatura V1 para novos usuários (ou seja, novos UIDs). A partir de 1º de setembro de 2025, o OSS deixará de atualizar e manter a assinatura V1 e não a oferecerá mais para novos buckets de armazenamento de objetos. Migre para a assinatura V4 o mais rápido possível para evitar interrupções no service. Para mais informações, consulte Anúncio.
<!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 conforme necessário ao inicializar o cliente. Por exemplo, use timeout para especifique o tempo limite da requisição e stsToken para especifique uma credencial de acesso temporária. Para mais informações sobre os itens de configuração e exemplos compatíveis com o Browser.js, consulte as seções a seguir.
Descrição dos parâmetros de options
accessKeyId {String}: o AccessKey ID usado para autenticar suas requisições.
accessKeySecret {String}: o AccessKey Secret usado para autenticar suas requisições.
[stsToken] {String}: o token do Security Token Service usado para autorização temporária.
[refreshSTSToken] {Function}: uma função que define automaticamente o stsToken, o accessKeyId e o accessKeySecret quando o token STS expira. Essa função deve retornar um objeto que contenha o stsToken, o accessKeyId e o accessKeySecret.
[refreshSTSTokenInterval] {number}: o 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}: o bucket padrão que você deseja acessar. Se o bucket não existir, chame a operação putBucket() e crie.
[endpoint] {String}: o nome de domínio específico da região do OSS. Este parâmetro tem prioridade maior que o parâmetro region. Defina este parâmetro 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}: a região onde o bucket está localizado. O valor padrão é oss-cn-hangzhou. Use um valor de região específico, como oss-cn-hangzhou ou oss-cn-beijing. Você também pode definir este parâmetro como rg-china-mainland para acessar Anywhere Buckets na parte continental da china, mas um valor de região específico é preferível para um roteamento regional mais preciso.
[internal] {Boolean}: especifique se o acesso ao OSS será feito pela rede interna da Alibaba Cloud. O valor padrão é false. Se o seu servidor também for executado na Alibaba Cloud, defina este parâmetro como true para reduzir os custos de transferência de dados.
[secure] {Boolean}: especifique se o cliente OSS usa o protocolo HTTPS (secure: true) ou HTTP (secure: false).
[timeout] {String|Number}: o tempo limite para todas as operações, em segundos. O valor padrão é 60.
[cname] {Boolean}: especifique se um nome de domínio personalizado será usado para acessar o OSS. O valor padrão é false. Se você definir este parâmetro como true, precisará especifique o nome de domínio personalizado no campo endpoint.
[isRequestPay] {Boolean}: especifique se o recurso Requester Pays ative para o bucket. O valor padrão é false. Se você definir este parâmetro como true, o cabeçalho 'x-oss-request-payer': 'requester' será enviado ao servidor OSS.
[useFetch] {Boolean}: este parâmetro só tem efeito em um ambiente de navegador. O valor padrão é false. Se você definir este parâmetro como true, os objetos serão carregados usando o método fetch. Caso contrário, o XMLHttpRequest será usado.
[retryMax] {Number}: o número máximo de tentativas para uma requisição que falha devido a um erro de rede ou tempo limite. Não há suporte para tentativas em operações putStream.
[authorizationV4] {Boolean}: especifique se uma assinatura V4 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', }); -
Use um endpoint acelerado
NotaEndpoint do Global Accelerator: oss-accelerate.aliyuncs.com
Endpoint acelerado para regiões fora da parte continental da china: 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', }); -
Use 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', }); -
Acesse 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, }); -
Tente novamente uma requisição usando um 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); } } -
Use 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); }