установка политики корзины s3 во время PutObject - PullRequest
0 голосов
/ 28 октября 2018
public String getPolicy() throws Exception {
        String policy_document = "{\"expiration\": \"2020-01-01T00:00:00Z\",\n" +
                "  \"conditions\": [ \n" +
                "    {\"bucket\": \"bucket\"}, \n" +
                "    [\"starts-with\", \"$Content-Type\", \"image/\"],\n" +
                "    [\"content-length-range\", 0, 100]\n" +
                "  ]\n" +
                "}";
        String aws_secret_key = "xxxxx";
        String policy = (new BASE64Encoder()).encode(policy_document.getBytes("UTF-8"))
                .replaceAll("\n", "").replaceAll("\r", "");

        Mac hmac = Mac.getInstance("HmacSHA1");
        hmac.init(new SecretKeySpec(
                aws_secret_key.getBytes("UTF-8"), "HmacSHA1"));
        String signature = (new BASE64Encoder()).encode(
                hmac.doFinal(policy.getBytes("UTF-8")))
                .replaceAll("\n", "");

        return policy;
    }

При загрузке -

   ObjectMetadata objectMetadata = new ObjectMetadata();
   objectMetadata.setHeader("policy", getPolicy());

   s3Client.putObject(bucket, key, inputStream, objectMetadata);

Можем ли мы передать заголовок политики, как описано выше, чтобы отклонить запросы s3 putObject, которые нарушают условия политики?

Я думаю, что это возможно через s3Client.setBucketPolicy, но есть ли способ установить эти политики для каждого запроса пут?

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