【问题标题】:How to define the principal for an AWS policy statement?如何定义 AWS 策略声明的委托人?
【发布时间】:2017-05-23 14:55:05
【问题描述】:

我从 http://awspolicygen.s3.amazonaws.com/policygen.html 开始创建一个策略,该策略将向用户列表的特定 S3 存储桶授予上传权限。我不清楚我如何定义这些用户应该是谁。

文档将委托人称为“一个或多个人”,但没有说明如何引用所述人的示例。一个假设是“电子邮件地址”并且策略生成器会接受它,但是当我将生成的语句粘贴到存储桶策略编辑器时,我得到:

策略中的委托人无效 - “AWS”:“steve@here.com”

完整声明:

{
  "Id": "myPol",
  "Statement": [
    {
      "Sid": "Stmt130",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::myBucketName",
      "Principal": {
        "AWS": [
          "steve@here.com"
        ]
      }
    } ]
}

【问题讨论】:

    标签: amazon-s3


    【解决方案1】:

    委托人可以是另一个 AWS 账户或 IAM 用户。这些文档很有帮助 Specifying Principals in Bucket PoliciesIntegrating IAM with S3

    【讨论】:

    • 那将是我的错误 - 如果生成器在让我离开之前采取额外的验证循环来检查我的输入,那肯定会很好。
    • 这里的实际修复是什么?
    【解决方案2】:
    [HttpPost]
    public ActionResult Uploaddemo(HttpPostedFileBase file) {
        try {
            IAmazonS3 client;
            using (client = Amazon.AWSClientFactory.CreateAmazonS3Client(_awsAccessKey, _awsSecretKey,RegionEndpoint.USWest2)) {
                var request = new PutObjectRequest() {
                    BucketName = _bucketName,
                    CannedACL = S3CannedACL.PublicRead, ACCESIBLE
                    Key = string.Format("visumes/{0}", file.FileName),
                    InputStream = file.InputStream,//SEND THE FILE STREAM
                };
    
                Amazon.S3.AmazonS3Config s3Config = new Amazon.S3.AmazonS3Config() { 
                    ServiceURL = "http://s3.amazonaws.com"  
                };
                string HOST ="http://s3-website-us-west-2.amazonaws.com";
                client.PutObject(request);
            }
        } catch (Exception ex) {
    
        }
        return View();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 2013-06-08
      • 2021-11-12
      • 1970-01-01
      • 2023-01-05
      • 2019-05-02
      • 1970-01-01
      相关资源
      最近更新 更多