Загрузка Boto3 в корзину S3 - PullRequest
0 голосов
/ 10 марта 2020

Я хочу добавить строку, созданную лямбда-выражением, в существующий текстовый файл в моем контейнере s3.

Когда я использую:

s3.Object('My_bucket', 'textfile.txt').put(Body=missingtagginginfo)

missingtagginginfo = Моя созданная переменная textfile. txt = текстовый файл, который существует в корзине s3

Я получаю следующую ошибку:

"errorMessage": "An error occurred (AccessDenied) when calling the PutObject operation: Access Denied",

"errorType": "ClientError",

Я уже дал лямбде s3fullAccess.

Кто-нибудь знает, как я могу это исправить?

приветствует

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Ваша политика должна содержать s3:PutObject для загрузки объектов.

{
    "Effect": "Allow",
    "Action": [
        "s3:PutObject"
    ],
    "Resource": [
        "arn:aws:s3:::your-bucket/",
        "arn:aws:s3:::your-bucket/*"
    ]
}

Пожалуйста, не добавляйте подстановочные разрешения (s3:*) или подстановочные ресурсы ("Resource": [ "*" ]), поскольку они дают огромный потенциал для ошибок и уязвимостей. AWS Генератор политик может помочь вам в этом.

0 голосов
/ 10 марта 2020

Политика IAM выглядит следующим образом:

"Resource": "arn:aws:s3:::MYBUCKET/*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:ListBucketMultipartUploads",
            "s3:AbortMultipartUpload",
            "s3:ListMultipartUploadParts"
        ],
        "Resource": [
            "arn:aws:s3:::MYBUCKET/",
            "arn:aws:s3:::MYBUCKET/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": "s3:ListBucket",
        "Resource": "*"
    }
...