📅  最后修改于: 2023-12-03 15:08:16.678000             🧑  作者: Mango
AWS S3 是一种对象存储服务,您可以在其上存储和检索各种数据类型(文字文件、图像、视频文件甚至是 HTML), 本文将向您展示如何在 TypeScript 中使 S3 桶对象 public.
npm install aws-sdk
const AWS = require('aws-sdk');
const s3 = new AWS.S3({
accessKeyId: <Access Key ID>,
secretAccessKey: <Secret Access Key>
});
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}`)
}
})
执行以下代码即可:
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 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 账户提供的凭证。如有需要,您可以向您的主账号管理员获取。
在 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。我们使用 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 桶对象在公网上进行访问。记得在生产环境中控制访问权限,避免信息泄漏。