📜  如何使 s3 桶对象 publicj - TypeScript (1)

📅  最后修改于: 2023-12-03 15:08:16.678000             🧑  作者: Mango

如何使 S3 桶对象 public - TypeScript

AWS S3 是一种对象存储服务,您可以在其上存储和检索各种数据类型(文字文件、图像、视频文件甚至是 HTML), 本文将向您展示如何在 TypeScript 中使 S3 桶对象 public.

步骤概览
  1. 使用 AWS SDK for JavaScript 安装 AWS S3:
npm install aws-sdk
  1. 初始化 AWS SDK:
const AWS = require('aws-sdk');

const s3 = new AWS.S3({
  accessKeyId: <Access Key ID>,
  secretAccessKey: <Secret Access Key>
});
  1. 设置 S3 桶策略:
const params = {
  Bucket: '<Bucket Name>',
  Policy: JSON.stringify({
    Version: '2012-10-17',
    Statement: [{
      Sid: 'PublicReadGetObject',
      Effect: 'Allow',
      Principal: '*',
      Action: ['s3:GetObject'],
      Resource: [`arn:aws:s3:::<Bucket Name>/*`]
    }]
  })
}

s3.putBucketPolicy(params, (err: any, data: any) => {
  if (err) {
    console.log(err);
  } else {
    console.log(`Bucket Policy updated successfully. ${data}`)
  }
})
  1. 使 S3 桶对象 public

执行以下代码即可:

const params = {
  Bucket: '<Bucket Name>',
  Key: '<Object Key>',
  ACL: 'public-read'
}

s3.putObjectAcl(params, (err: any, data: any) => {
  if (err) {
    console.log(err);
  } else {
    console.log(`Object ACL updated successfully. ${data}`)
  }
})

以上就是使 S3 桶对象 public 的代码片段,下面将更详细地解释这个过程。

步骤细节
初始化 AWS SDK

在本文中,我们使用了 AWS SDK for JavaScript 来连接到 AWS 服务。

const AWS = require('aws-sdk');

AWS SDK 需要访问密钥,您可以使用以下方法进行身份验证:

const s3 = new AWS.S3({
  accessKeyId: <Access Key ID>,
  secretAccessKey: <Secret Access Key>
});

Access Key ID 和 Secret Access Key 是您的 AWS 账户提供的凭证。如有需要,您可以向您的主账号管理员获取。

设置 S3 桶策略

在 AWS S3 中,桶策略允许您控制谁可以访问您的 S3 桶,以及可以访问哪些资源。

const params = {
  Bucket: '<Bucket Name>',
  Policy: JSON.stringify({
    Version: '2012-10-17',
    Statement: [{
      Sid: 'PublicReadGetObject',
      Effect: 'Allow',
      Principal: '*',
      Action: ['s3:GetObject'],
      Resource: [`arn:aws:s3:::<Bucket Name>/*`]
    }]
  })
}

s3.putBucketPolicy(params, (err: any, data: any) => {
  if (err) {
    console.log(err);
  } else {
    console.log(`Bucket Policy updated successfully. ${data}`)
  }
})

以上策略允许匿名用户(*)以 GetObject 操作访问存储桶中存储的所有对象(<Bucket Name>/*)。

使 S3 桶对象 public

最后一步是使 S3 桶中的对象 public。我们使用 putObjectAcl 方法将一个 object 的访问权限设置为 public-read

const params = {
  Bucket: '<Bucket Name>',
  Key: '<Object Key>',
  ACL: 'public-read'
}

s3.putObjectAcl(params, (err: any, data: any) => {
  if (err) {
    console.log(err);
  } else {
    console.log(`Object ACL updated successfully. ${data}`)
  }
})

其中 <Object Key> 是对象在 S3 桶中的唯一标识符,public-read 允许公共读取对象。

总结

以上就是在 TypeScript 中使用 AWS SDK for JavaScript 使 S3 桶对象 public 的全部步骤和细节。通过以上步骤可以使您的 S3 桶对象在公网上进行访问。记得在生产环境中控制访问权限,避免信息泄漏。