Android AWS SDK:未在区域元数据中找到 Cognito Identity
Android AWS SDK : Cognito Identity not was not found in region metadata
我正在编写一个简单的测试应用程序以使用 android APP 连接到 AWS。我通过 CognitoCachingCredentialsProvider 构造函数提供身份池凭证。在 AWS 控制台上,我创建了一个身份池并检查了 "Enable access to Unauthenticated identities"。创建了具有对 AWS 服务的基本访问权限的相应 IAM 角色。
然而,当我 运行 我的 android 代码时,我总是收到错误:“{cognito-identity, us-west-2} was not found in region metadata, trying to使用此区域的标准模式构建端点:'cognito-identity.us-west-2.amazonaws.com'.
我已按照 aws 文档中给出的所有说明进行操作。我无法理解我哪里出错了。如果有人经历过这种情况或知道我做错了什么的解决方案,我将非常感谢您的帮助。
CognitoCachingCredentialsProvider 构造函数的 android 代码是从 AWS 的身份池控制台的源代码部分复制的。我写的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);
}
}
您在 logcat 上看到身份 ID 了吗?来自 AWS 论坛的 this post,可能只是消息具有误导性,但调用确实有效。
我正在编写一个简单的测试应用程序以使用 android APP 连接到 AWS。我通过 CognitoCachingCredentialsProvider 构造函数提供身份池凭证。在 AWS 控制台上,我创建了一个身份池并检查了 "Enable access to Unauthenticated identities"。创建了具有对 AWS 服务的基本访问权限的相应 IAM 角色。
然而,当我 运行 我的 android 代码时,我总是收到错误:“{cognito-identity, us-west-2} was not found in region metadata, trying to使用此区域的标准模式构建端点:'cognito-identity.us-west-2.amazonaws.com'.
我已按照 aws 文档中给出的所有说明进行操作。我无法理解我哪里出错了。如果有人经历过这种情况或知道我做错了什么的解决方案,我将非常感谢您的帮助。
CognitoCachingCredentialsProvider 构造函数的 android 代码是从 AWS 的身份池控制台的源代码部分复制的。我写的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);
}
}
您在 logcat 上看到身份 ID 了吗?来自 AWS 论坛的 this post,可能只是消息具有误导性,但调用确实有效。