Android AWS SDK:在区域元数据中找不到Cognito Identity

时间:2017-04-22 03:29:47

标签: android aws-sdk aws-cognito

我正在编写一个简单的测试应用程序,使用Android APP连接到AWS。我通过CognitoCachingCredentialsProvider构造函数提供身份池凭据。在AWS控制台上,我创建了一个标识池,并选中了“启用对未经身份验证的标识的访问”。通过对AWS服务的基本访问权限创建相应的IAM角色。

但是,当我运行我的Android代码时,我总是收到错误:“{cognito-identity,us-west-2}在区域元数据中找不到,尝试使用此区域的标准模式构建端点:'cognito-identity.us-west-2.amazonaws.com'。

我已按照aws文档中的所有说明进行操作。我无法理解我哪里出错了。如果有人经历过这个或者知道我做错了什么的解决方案,我将非常感谢你的帮助。

CognitoCachingCredentialsProvider构造函数的android代码是从AWS的Identity Pool Console的SourceCode部分复制的。我写的android代码如下:

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

import com.amazonaws.auth.CognitoCachingCredentialsProvider;
import com.amazonaws.regions.Regions;


public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button b = (Button)findViewById(R.id.fhButton);

    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            showClick();
        }
    });

}

public void showClick(){
    Log.i("TEST", "Hurray!");

    new AsyncTask(){
        @Override
        protected Object doInBackground(Object[] objects) {
            // Initialize the Amazon Cognito credentials provider
            CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
                    getApplicationContext(),
                    "us-west-2:XXXXXXXXXX", // Identity Pool ID
                    Regions.US_WEST_2 // Region
            );
            Log.i("TEST",credentialsProvider.getIdentityId());

            return null;
        }
    }.execute();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

1 个答案:

答案 0 :(得分:0)

你在logcat上看到身份证吗?从AWS论坛上的this post开始,可能只是该消息具有误导性,但该呼叫实际上有效。