#node.js #amazon-web-services #amazon-s3 #aws-lambda #amazon-iam
Вопрос:
Я получаю ошибки отказа в доступе при загрузке файла из lambda в корзину s3. Ниже приведены настройки для корзины и роли. Разрешение на ведро S3
"Version": "2008-10-17",
"Id": "PolicyForDevelopment",
"Statement": [
{
"Sid": "BucketAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountA:role/service-role/lambda-execute"
},
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::test/*"
}
]
}
Разрешение роли, установленное для доступа к S3
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:*",
"cloudwatch:*",
"logs:*"
],
"Resource": "*"
}
]
}
Я использую nodejs lambda и не хочу помещать сведения о доступе в функции s3 и предоставлять доступ из функции lambda только для размещения объектов в корзинах s3.
let s3 = new AWS.S3({ apiVersion: '2006-03-01' });
const params = {
Bucket: `test`,
Key: `test.pdf`,
Body: base64data,
ACL: 'public-read'
};
let s3Response = await s3.upload(params).promise();
....
Я перешел по ссылке https://aws.amazon.com/premiumsupport/knowledge-center/lambda-execution-role-s3-bucket/ amp; https://aws.amazon.com/premiumsupport/knowledge-center/access-denied-lambda-s3-bucket/
Комментарии:
1. Использует ли ваше ведро или объект шифрование kms?
2. К вашему сведению, если в «Разрешении роли» отображаются разрешения, которые вы назначили роли IAM, прикрепленной к функции AWS Lambda, то этих разрешений достаточно для предоставления доступа к любым корзинам S3 в той же учетной записи. В политике корзины нет необходимости , так как роль уже имеет необходимые разрешения. (На самом деле предоставление
s3:*
не является хорошим с точки зрения безопасности. Это эффективно дает функции AWS Lambda разрешение на любые действия в S3, включая удаление всех ваших корзин и объектов!)