Как разбить на разделы хранилище S3 с префиксом bucket - PullRequest
1 голос
/ 01 августа 2020

Сначала я хочу настроить несколько хранилищ S3 в моем проекте усиления. Но сейчас это запрещено (ampify-cli показывает мне Amazon S3 storage was already added to your project.)

И я нашел возможное решение для моего варианта использования, создав разделы. Это упомянуто в приведенной ниже ссылке.

https://github.com/aws-amplify/amplify-cli/issues/1923#issuecomment -516508923

Это говорит примерно так.

As a best practice, the Amplify Framwork allows you to have multiple prefixes in the bucket as a best practice instead of having multiple buckets.
You could partition your bucket by prefixes like the following:
`mybucket/partition1` and `mybucket/partition2` which can potentially have different auth policies and lambda triggers.

Но это не так объясните, как создавать разделы и как ими пользоваться. Итак, может ли кто-нибудь объяснить, как это сделать?

1 Ответ

1 голос
/ 02 августа 2020

В папке ampify / backend / storage / s3-cloudformation-template. json вы можете добавить новую политику для вашего нового префикса, который будет именем папки в корзине s3

        "S3AuthStorage1Policy": {
            "DependsOn": [
                "S3Bucket"
            ],
            "Condition": "CreateAuthStorage1",
            "Type": "AWS::IAM::Policy",
            "Properties": {
                "PolicyName": {
                    "Ref": "s3Storage1Policy"
                },
                "Roles": [
                    {
                        "Ref": "authRoleName"
                    }
                ],
                "PolicyDocument": {
                    "Version": "2012-10-17",
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Action": {
                                "Fn::Split" : [ "," , {
                                    "Ref": "s3PermissionsAuthenticatedStorage1"
                                } ] 
                            },
                            "Resource": [
                                {
                                    "Fn::Join": [
                                        "",
                                        [
                                            "arn:aws:s3:::",
                                            {
                                                "Ref": "S3Bucket"
                                            },
                                            "/storage1/*"
                                        ]
                                    ]
                                }
                            ]
                        }
                    ]
                }
            }
        },

https://docs.amplify.aws/lib/storage/getting-started/q/platform/js#using -amazon-s3 https://github.com/aws-amplify/amplify-js/issues/332#issuecomment -602606514

Теперь вы можете использовать, например, собственный префикс «storage1» для хранения файлов в папке storage1.

Storage.put("storageTest.png", file, {
  contentType: "image/png",
  level: 'public',
  customPrefix: {
    public: "storage1/"
  }
})
  .then(result => console.log(result))
  .catch(err => console.log(err));

};

Сделайте то же самое с другим префиксом (в этом примере хранилище 2), чем вы можете хранить файлы из другого варианта использования в другой папке.

ведро s3 с двумя настраиваемыми префиксами

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