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
を呼び出して、する必要があります。
この使い方は?私はロールを作成しましたが、まだawsサービスにアクセスできない –
何が問題なのかを説明してください –
AWS IAMでロールを作成し、管理者とPowerUserの権限を割り当ててからこのコードを書きました stsClient.AssumeRole(new AssumeRoleRequest (); { RoleArn = "arn:aws:iam :: 461567291450:role/arn-user"、 RoleSessionName = "Bob" }); –