Политика доступа к AWS Cloud Front и S3 Bucket для Laravel - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь настроить корзину AWS S3, в которой я хочу хранить загруженный пользователем мультимедийный контент.Приложение написано в Laravel 5.5.После загрузки контента этот контент должен доставляться только через AWS CDN / CloudFront.
Для вышеприведенного сценария я добавил эту политику S3, которая позволяет пользователю загружать контент через приложение Laravel (которое размещено на EC2), а затем получить доступэти данные через CDN.

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity ABC123456"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::s3bucket/*"
        },
        {
            "Sid": "Stmt123456789",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::s3bucket",
                "arn:aws:s3:::s3bucket/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpc": "vpc-id"
                }
            }
        }
    ]
}

Однако у меня возникают следующие проблемы:

  • Если пользователь загружает контент, он будет загружен в корзину S3, но у него нет доступаиспользуя CDN URL или S3 URL.

  • Если я буду использовать php artinan tinker и выполнить Storage :: disk ('s3') -> put ('file.txt', 'Contents'); Файл будет создан на S3 и также может быть доступен по URL CDN.

Итак, мой вопрос: что я делаю не так в вышеуказанной политике?Кроме того, есть ли способ разрешить пользователю доступ к этому контенту только из мобильного приложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...