我正在编写一个简单的测试应用程序,使用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);
}
}