Я занимаюсь разработкой приложения для Android и продолжаю испытывать проблемы с доступом к корзине S3 "через" Cognito.Мне удается соединиться с моим пулом Cognito, используя имя пользователя и пароль определенного пользователя из моего пула:
AWSMobileClient auth = AWSMobileClient.getInstance();
auth.signIn("username", "password", new HashMap<String, String>());
if (auth.isSignedIn()) {
ActivityUtils.startActivity(this, MyActivity.class);
}
Мой пользователь в пуле назначен группе с ролью S3 присоединения:
Role ARN arn:aws:iam::<my account number>:role/Cognito_S3_Full_Access
Который содержит эти разрешения:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
Когда я пытаюсь использовать «AmazonS3Client», который я создал с использованием учетных данных из «AWSMobileClient», я получаю ошибки.Я создаю его следующим образом:
AWSMobileClient awsMobileClient =AWSMobileClient.getInstance();
AmazonS3Client s3Client = new AmazonS3Client(awsMobileClient);
И полученная ошибка :
2019-05-20 17:56:21.645 27019-27019/com.mycomp.mypackage E/S3Uploader: Error upload file to S3 bucket : Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 375C07384A904483)
Когда я создаю "AmazonS3Client", используя HARD-CODED accessKey и secretKey нового пользователя "IAM", которого я создал, и прикрепляют к нему ту же политику, что и выше, и работают как положено.Я использую это следующим образом:
BasicAWSCredentials credentials = new BasicAWSCredentials("myAccessKey_hsjgfhjsdg", "mySecretKey_asdhasjkdha");
AmazonS3Client s3Client = new AmazonS3Client(credentials);
Но я не хочу заполнять свое приложение жестко закодированным паролем, тем более, что мне уже удается подключиться, используя вводимые пользователем имя пользователя и пароль
- Некоторые примечания: когда я пытаюсь получить секретный ключ и ключ доступа после входа в систему с помощью Cognito, я вижу, что при каждом входе в систему я получаю разные токены, поэтому я полагаю, что эта часть работает.
Итак, мой вопрос: что я делаю не так?
Как настроить AmazonS3Client на использование разрешения сеанса и роли пользователя, вошедшего в систему и назначенной ему группы?