1

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つのことを指定していることに注意してください

  1. リージョンはeu-west-1 にする必要があります
  2. 許可されたアクションはワイルドカードです。つまり、すべてを許可します

しかし、スローされた例外は、ユーザーがus-east-1 へのアクセス許可を持っていないことを主張しています

なぜこのエラーが発生するのかについてのアイデアはありますか?

4

1 に答える 1

1

わかりました。

クライアントからのサービスへの呼び出しでリージョン エンドポイントを設定する必要があります。

そう

var simpleDBClient = new AmazonSimpleDBClient(iamkey.AccessKeyId, iamkey.SecretAccessKey, iamkey.SessionToken, Amazon.RegionEndpoint.EUWest1);
于 2013-09-07T19:23:34.237 に答える