Я пытаюсь создать указанную c папку пользователя в s3
. Все пользователи аутентифицированы через Cognito
(провайдер Google). У меня есть такие политики для Cognito Role
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"cognito-identity:*",
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Resource": "*"
},
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::fake-youtube-videos"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"${accounts.google.com:sub}/*"
]
}
}
},
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::fake-youtube-videos/${accounts.google.com:sub}/*"
]
}
]
}
И политики для корзины
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::fake-youtube-videos",
"Condition": {
"StringLike": {
"s3:prefix": "${accounts.google.com:sub}/*"
}
}
},
{
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::fake-youtube-videos/${accounts.google.com:sub}/*"
}
]
}
Когда я получаю аутентификацию с внешнего интерфейса
var id_token = googleUser.getAuthResponse().id_token;
var profile = googleUser.getBasicProfile();
AWS.config.apiVersions = '2012-10-17'
AWS.config.region = 'us-east-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:c1f4182d-4598-4c83-80ff-896b6bff632f',
Logins: {
'accounts.google.com': id_token
}
});
var identityId = AWS.config.credentials.identityId;
var s3 = new AWS.S3();
s3.listObjects({Bucket: 'fake-youtube-videos'}, function (err, url) {
console.log('The URL is', url);
console.log('The error', err);
})
Также все отключено Я получил 403 за список объектов Access denied
. Я застрял. Что я делаю не так?