web-dev-qa-db-ja.com

AWSポリシーステートメントのプリンシパルを定義するにはどうすればよいですか?

http://awspolicygen.s3.amazonaws.com/policygen.html から始めて、ユーザーのリストに対して特定のS3バケットへのアップロード権限を付与するポリシーを作成します。私はそれらのユーザーがどうあるべきかをどのように定義するか明確ではありません。

ドキュメントでは、プリンシパルを「1人または複数の人」と呼び、その人を指す方法の例は示していません。 「電子メールアドレス」を想定し、ポリシージェネレーターがそれを受け入れるが、生成されたステートメントをバケットポリシーエディターに貼り付けると、次のようになります。

ポリシーの無効なプリンシパル-"AWS": "[email protected]"

完全なステートメント:

{
  "Id": "myPol",
  "Statement": [
    {
      "Sid": "Stmt130",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::myBucketName",
      "Principal": {
        "AWS": [
          "[email protected]"
        ]
      }
    } ]
}
22
justSteve

プリンシパルは、別のAWSアカウントまたはIAMユーザーにすることができます。これらのドキュメントは役に立ちます バケットポリシーでのプリンシパルの指定 および IAMとS3の統合

15
cordsen
[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();
}
0
Dharmendra