簡體   English   中英

程序文件上傳到AWS S3存儲桶

[英]Programmatic file upload to AWS S3 bucket

我想提供一個AWS S3存儲桶和一個IAM用戶(僅具有編程訪問權限),因此我只能為該用戶提供文件上傳特權。 用戶將收到AWS訪問密鑰ID和秘密訪問密鑰,以在簡單的Node.js或Python控制台應用程序中使用。 實現此目標所需的最少步驟是什么

  1. 創建沒有權限的IAM用戶(具有程序訪問權限)-完成
  2. 創建一個S3存儲桶並阻止所有公共訪問-完成
  3. 添加如下所示的存儲桶策略:
{
    "Version": "2012-10-17",
    "Id": "Policy1234567",
    "Statement": [
        {
            "Sid": "Stmt1234567",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::1234567890:user/someuser"
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::some-bucket-name/*"
        }
    ]
}

我有一個簡單的node.js應用程序,它將給定文件上傳到存儲桶:

const fs = require('fs');
const zlib = require('zlib');
const AWS = require('aws-sdk');
const s3 = new AWS.S3({
  accessKeyId: process.env.AWS_ACCESS_KEY,
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
});

const bucketName = 'some-bucket-name';
const fileName = 'alargefile.iso';
var body = fs.createReadStream(fileName)
             .pipe(zlib.createGzip());

// Upload the stream
var s3obj = new AWS.S3({
  accessKeyId: process.env.AWS_ACCESS_KEY,
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
  params: {
    Bucket: bucketName,
    Key: fileName
  }
});
s3obj.upload({
  Body: body
}, function(err, data) {
  if (err) {
    console.log("An error occurred", err);
  }
  else {
    console.log("Uploaded the file at", data.Location);
  }
});
  1. 由於用戶沒有任何權限,我是否仍需要創建一個自定義策略來應用為該用戶的權限? OOTB策略要么過於寬松(AmazonS3FullAccess),要么過於嚴格(AmazonS3ReadOnlyAccess)。 另一個令人困惑的地方是,我設置了一個存儲桶策略來規范特定用戶對存儲桶的訪問,這樣還不夠嗎?

您也可以為IAM用戶創建自定義策略,只允許PUTObject進入特定存儲桶。

例:

{
    "Version": "2012-10-17",
    "Id": "Policy1234567",
    "Statement": [
        {
            "Sid": "Stmt1234567",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::some-bucket-name/*"
        }
    ]
}

如果存儲桶和IAM用戶位於同一帳戶中,則如果IAM用戶具有上述策略,則不需要存儲桶策略。

您肯定需要基於以下鏈接的身份策略:

https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM