2017-10-26 8 views
0

私はAmazon S3にバケットを持ち、IAMユーザーを作成しました。これで、一時的な資格証明を使用してプライベートバケットファイルをダウンロードします。AWS S3バケット一時資格証明ダウンロードファイル.Net

これは私のバケットポリシー

{ 
    "Id": "Policy1509026195925", 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1509026179419", 
      "Action": [ 
       "s3:GetObject" 
      ], 
      "Effect": "Allow", 
      "Resource": "arn:aws:s3:::test-folder/*", 
      "Principal": { 
       "AWS": [ 
        "arn:aws:iam::461567291450:user/john" 
       ] 
      } 
     } 
    ] 
} 

である、これは私が私がアクセスがメッセージを拒否得たコードを実行するたびに、私のC#.NETコード

ServicePointManager.Expect100Continue = false; 
      ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 

      try 
      { 

       // In real applications, the following code is part of your trusted code. It has 
       // your security credentials you use to obtain temporary security credentials. 
       AmazonSecurityTokenServiceConfig config = new AmazonSecurityTokenServiceConfig(); 
       AmazonSecurityTokenServiceClient stsClient = 
         new AmazonSecurityTokenServiceClient(config); 

       GetFederationTokenRequest federationTokenRequest = 
                new GetFederationTokenRequest(); 
       federationTokenRequest.Name = "testuser"; 
       // federationTokenRequest.Policy = "Policy1509026195925"; 
       federationTokenRequest.DurationSeconds = 7200; 

       GetFederationTokenResponse federationTokenResponse = stsClient.GetFederationToken(federationTokenRequest); 
       //FederatedUser federationTokenResult = federationTokenResponse.; 
       Credentials credentials = federationTokenResponse.Credentials; 


       SessionAWSCredentials sessionCredentials = 
           new SessionAWSCredentials(credentials.AccessKeyId, 
                  credentials.SecretAccessKey, 
                  credentials.SessionToken); 

       // The following will be part of your less trusted code. You provide temporary security 
       // credentials so it can send authenticated requests to Amazon S3. 
       // Create Amazon S3 client by passing in the basicSessionCredentials object. 
       AmazonS3Client s3Client = new AmazonS3Client(sessionCredentials, Amazon.RegionEndpoint.USEast1); 
       // Test. For example, send list object keys in a bucket. 
       ListObjectsRequest listObjectRequest = new ListObjectsRequest(); 
       listObjectRequest.BucketName = bucketName; 
       ListObjectsResponse response = s3Client.ListObjects(listObjectRequest); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 

です。どうして?一時的な資格情報を使用してバケットファイルをダウンロードするにはどうすればよいですか? Switching to an IAM Role (API).

を参照してくださいを参照してください

assumeRoleResult = AssumeRole(role-arn); 
tempCredentials = new SessionAWSCredentials(
    assumeRoleResult.AccessKeyId, 
    assumeRoleResult.SecretAccessKey, 
    assumeRoleResult.SessionToken); 
s3Request = CreateAmazonS3Client(tempCredentials); 

あなたはアマゾンS3への呼び出しを行うために、これらの資格情報を使用し、その後、一時的なセキュリティ証明書を取得するためにAssumeRoleを呼び出して、する必要があります。

答えて

0

あなたのような何かを試すことができます。 Using Temporary Security Credentials with the AWS SDKs

+0

この使い方は?私はロールを作成しましたが、まだawsサービスにアクセスできない –

+0

何が問題なのかを説明してください –

+0

AWS IAMでロールを作成し、管理者とPowerUserの権限を割り当ててからこのコードを書きました stsClient.AssumeRole(new AssumeRoleRequest (); { RoleArn = "arn:aws:iam :: 461567291450:role/arn-user"、 RoleSessionName = "Bob" }); –