Java Android AWS安全凭据问题

Java Android AWS安全凭据问题,java,android,amazon-web-services,credentials,Java,Android,Amazon Web Services,Credentials,我在将AmazonS3PersonalFileStore演示应用程序登录集成到我的应用程序时遇到问题 我已经设置了我的TVM,在演示应用程序上一切正常,当我复制/粘贴项目并重命名它时,它也能正常运行 当我开始将我的.javas从我的主应用程序粘贴到粘贴的演示应用程序时,问题就出现了,现在当我登录时,我得到了错误 凭证问题! AWS凭据配置不正确。请查看自述文件 自述文件指的是项目设置和.properties文件,所有这些我都没有触及 这是我的舱单: <?xml version="1

我在将AmazonS3PersonalFileStore演示应用程序登录集成到我的应用程序时遇到问题

我已经设置了我的TVM,在演示应用程序上一切正常,当我复制/粘贴项目并重命名它时,它也能正常运行

当我开始将我的.javas从我的主应用程序粘贴到粘贴的演示应用程序时,问题就出现了,现在当我登录时,我得到了错误

凭证问题! AWS凭据配置不正确。请查看自述文件

自述文件指的是项目设置和.properties文件,所有这些我都没有触及

这是我的舱单:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.amazonaws.demo.personalfilestore"
      android:versionCode="1"
      android:versionName="1.0">

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".S3PersonalFileStore"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Login"></activity>        

    <activity android:name=".s3.S3BucketView"></activity>
    <activity android:name=".s3.S3ObjectView"></activity>   
    <activity android:name=".s3.S3AddObjectView"></activity>
    <activity
            android:screenOrientation="portrait"
            android:name="com.example.indrive.MainMenu"
            android:label="@string/main_menu" />
        <activity
            android:screenOrientation="portrait"
            android:name="com.example.indrive.TripMain"
            android:label="@string/trips"/>
        <activity
            android:screenOrientation="portrait"
            android:name="com.example.indrive.TripView"
            android:label="@string/trip_view"/>
        <activity
            android:screenOrientation="portrait"
            android:name="com.example.indrive.DiagnosticsMain"
            android:label="@string/diagnostics"/>
        <activity
            android:screenOrientation="portrait"
            android:name="com.example.indrive.DtcListView"
            android:label="@string/dtcs"/>
        <activity
            android:screenOrientation="portrait"
            android:name="com.example.indrive.RpmComparison"
            android:label="@string/rpm_distribution"/>
        <activity
            android:screenOrientation="portrait"
            android:name="com.example.indrive.UbiMain"
            android:label="@string/ubi"/>
        <activity
            android:screenOrientation="portrait"
            android:name="com.example.indrive.UbiView"
            android:label="@string/ubi_view"/>
        <activity
            android:screenOrientation="portrait"
            android:name="com.example.indrive.UsageMain"
            android:label="@string/usage"/>
        <activity
            android:screenOrientation="portrait"
            android:name="com.example.indrive.EnvironmentalMain"
            android:label="@string/environmental_main"/>
        <activity
            android:screenOrientation="portrait"
            android:name="com.example.indrive.ComparisonMain"
            android:label="@string/vehicle_comparison"/>
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="xxxxxxxx"/>

    </application>
</manifest> 

虽然我添加了新代码,但我很确定它没有运行,因为我的任何活动都没有被创建

更新:我尝试使用与IAM TVMUser相同的权限向TVM Elastic Beanstalk添加EC2角色,但演示应用程序甚至无法工作


更新2:为TVM IAM用户/Elastic Beanstalk尝试了一系列不同的IAM配置,但没有任何效果

在将AmazonS3PersonalFileStore演示应用登录集成到我的应用时,我遇到了相同的问题

问题是通过HTTP请求向TVM发送的请求被阻止。这是由于android sdk的StrictMode.ThreadPolicy不允许在UI线程上执行网络操作

可以使用以下方法更改此限制:

if (android.os.Build.VERSION.SDK_INT > 9) {
  StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
  StrictMode.setThreadPolicy(policy);
}
将上述代码添加到主活动的onCreate()方法中

此外,始终建议将网络操作移出UI线程,例如,使用AsyncTask。


我相信这会解决您的问题。

当您在我的pc上访问instancename.elasticbeanstalk.com上的TVM实例时,您会看到什么:祝贺您!令牌自动售货机正在使用身份注册运行。警告:您没有运行SSL。在我的手机上:我可以使用用户名/密码注册您的TVM.json凭据是否与您的IAM用户凭据匹配?我在IAM TVMUser&Elastic Beanstalk TVM环境属性中具有相同的访问密钥,如果这是您的意思的话