403 Доступ запрещен при доступе к объекту s3 с использованием URL-адреса объекта из лямбда-выражения - PullRequest
0 голосов
/ 13 июля 2020

У меня есть файлы в корзине S3, и я хочу получить к ним доступ из моей Lambda. Прямо сейчас я включил разрешение на чтение для группы Everyone отдельных файлов. Но я хочу ограничить этот доступ, чтобы только моя Lambda могла читать файлы. Я хочу использовать URL-адрес объекта и передать его Tika, например: tika.detect(objectUrl).

Я использую формирование облака и добавил эту политику в свою лямбда-роль:

{
  "Action": "s3:*",
  "Effect": "Allow",
  "Resource": "arn:aws:s3:::BUCKET_NAME/*"
}

In мое ведро S3, я добавил эту политику:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowS3Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::AWS_ACCOUNT_ID:role/LAMBDA_NAME-LambdaRole"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME",
                "arn:aws:s3:::BUCKET_NAME/*"
            ]
        }
    ]
}

Тем не менее я получаю эту ошибку:

Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: https://BUCKET_NAME.s3-us-west-2.amazonaws.com/FILE_NAME
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:3051)
at java.net.URLConnection.getContentType(URLConnection.java:512)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getContentType(HttpsURLConnectionImpl.java:415)
at org.apache.tika.io.TikaInputStream.get(TikaInputStream.java:416)
...