AWS IAM を使用してモバイルアプリの一時トークンを生成しようとしています。AWS C# SDK を使用しています。
これが私のコードです...
トークン生成サービス
public string GetIAMKey(string deviceId)
{
//fetch IAM key...
var credentials = new BasicAWSCredentials("MyKey", "MyAccessId");
var sts = new AmazonSecurityTokenServiceClient(credentials);
var tokenRequest = new GetFederationTokenRequest();
tokenRequest.Name = deviceId;
tokenRequest.Policy = File.ReadAllText(HostingEnvironment.MapPath("~/policy.txt"));
tokenRequest.DurationSeconds = 129600;
var tokenResult = sts.GetFederationToken(tokenRequest);
var details = new IAMDetails { SessionToken = tokenResult.GetFederationTokenResult.Credentials.SessionToken, AccessKeyId = tokenResult.GetFederationTokenResult.Credentials.AccessKeyId, SecretAccessKey = tokenResult.GetFederationTokenResult.Credentials.SecretAccessKey, };
return JsonConvert.SerializeObject(details);
}
クライアント
var iamkey = Storage.LoadPersistent<IAMDetails>("iamkey");
var simpleDBClient = new AmazonSimpleDBClient(iamkey.AccessKeyId, iamkey.SecretAccessKey, iamkey.SessionToken);
try
{
var details = await simpleDBClient.SelectAsync(new SelectRequest { SelectExpression = "select * from mydomain" });
return null;
}
catch (Exception ex)
{
Storage.ClearPersistent("iamkey");
}
ポリシー ファイルの内容
{ "ステートメント":[{ "効果":"許可", "アクション":"sdb:* ", "リソース":"arn:aws:sdb:eu-west-1:* :domain/mydomain*" } ]}
次のエラーが発生し続けます...
ユーザー (arn:aws:sts::myaccountid:federated-user/654321) には、リソース (arn:aws:sdb:us-east-1:myaccountid:domain/mydomain) で実行 (sdb:Select) する権限がありません
私のポリシーファイルは明確に2つのことを指定していることに注意してください
- リージョンはeu-west-1 にする必要があります
- 許可されたアクションはワイルドカードです。つまり、すべてを許可します
しかし、スローされた例外は、ユーザーがus-east-1 へのアクセス許可を持っていないことを主張しています
なぜこのエラーが発生するのかについてのアイデアはありますか?