![](/img/trans.png)
[英]How to access S3 bucket created in us-west-2 region from us-east-1 account?
[英]s3 pre-signed url for buckets in us-east-1, us-west-1, us-west-2 missing fields
我正在嘗試生成 s3 預簽名 url 以便我可以從客戶端將對象放入我的存儲桶中。 我最初感興趣的區域是:
下面是我用來獲取簽名 url 的代碼:
const AWS = require("aws-sdk");
const { v4: uuidv4 } = require("uuid");
const region_name = "x-region";
const upload_bucket = "bucket-in-x-region";
AWS.config.update({ region: region_name });
const s3 = new AWS.S3();
async function getPresignedUrl() {
const random_id = uuidv4();
const obj_key = `${random_id}.png`;
const s3Params = {
Bucket: upload_bucket,
Key: obj_key,
Expires: 60,
ContentType: "image/png",
ACL: "public-read",
};
const presigned_url = await s3.getSignedUrlPromise("putObject", s3Params);
return presigned_url;
}
getPresignedUrl().then((data) => {
console.log(data);
});
ap-northeast-2 和 ap-south-1 中的存儲桶返回一個WORKING簽名 URL,其中包含以下字段: Content-Type、X-Amz-Algorithm、X-Amz-Credential、X-Amz-Date、X-Amz-Expires , X-Amz-Security-Token, X-Amz-Signature, X-Amz-SignedHeaders, x-amz-acl
但是,我嘗試的所有存儲桶都基於以下區域:us-east-1、us-west-1 和 us-west-2 返回一個NON WORKING url,只有以下字段: Content-Type、Expires、Signature、x-amz- acl
當我在 lambda 中運行此代碼時,調用角色具有以下語句的策略:
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::bucket-name-mumbai/*",
"arn:aws:s3:::bucket-name-seoul/*",
"arn:aws:s3:::bucket-name-useast/*",
"arn:aws:s3:::bucket-name-uswest/*",
]
}
任何想法將不勝感激。
在 AWS 配置中添加signatureVersion: 'v4'
它應該可以工作:
AWS.config.update({ region: region_name, signatureVersion: 'v4' });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.