Я пытаюсь загрузить файлы через AWS Amplify в существующую корзину s3. Я не использую AWS MobileHub .Я создал новый Identity Pool в соответствии с этим руководством , и в конце концов это моя политика для этой роли:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:*",
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Resource": "*"
}
]
}
В своем коде я настроил Amplify следующим образом:
Amplify.configure({
'aws_cognito_identity_pool_id': 'us-east-2:f37baa...',
'aws_cognito_region': 'us-east-2',
'aws_user_files_s3_bucket': 'demo',
'aws_user_files_s3_bucket_region': 'us-east-1',
});
И я получаю ошибку:
Error: Access Denied
at Request.extractError (s3.js:580)
at Request.callListeners (aws-sdk-core-react-native.js:3610)
at Request.emit (aws-sdk-core-react-native.js:3582)
at Request.emit (aws-sdk-core-react-native.js:7723)
at Request.transition (aws-sdk-core-react-native.js:7062)
at AcceptorStateMachine.runTo (aws-sdk-core-react-native.js:7867)
at aws-sdk-core-react-native.js:7879
at Request.<anonymous> (aws-sdk-core-react-native.js:7078)
at Request.<anonymous> (aws-sdk-core-react-native.js:7725)
at Request.callListeners (aws-sdk-core-react-native.js:3620)
UPDATE
import Amplify from 'aws-amplify';
import { Storage } from 'aws-amplify';
Amplify.configure({
'aws_cognito_identity_pool_id': 'us-east-2:f37...',
'aws_cognito_region': 'us-east-2',
'aws_user_files_s3_bucket': 'demo',
'aws_user_files_s3_bucket_region': 'us-east-1',
});
export default class App extends Component<Props> {
...
uploadImage = async uri => {
const fileName = 'example.jpg';
await Storage.put(fileName, blob, {
contentType: 'image/jpeg',
level: 'public'
}).then(data => console.log(data))
.catch(err => console.log(err))
Это весь код, и я просто не добавил файл для получения, но он работает точно.Когда я использую мобильный концентратор aws-exports.js
, я могу выгружать файлы, но MobileHub создает некоторую корзину, и мой сценарий использования включает использование моей существующей корзины.