S3 Доступ запрещен при указании принципала - PullRequest
0 голосов
/ 11 июня 2018

Политика Bucket

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::123456784337:root",
                    "arn:aws:iam::123456784337:user/lambda-user"
                ]
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucket/*"
        }
    ]
   }

Инициализация

 AWS.config.update({
      region: 'ap-southeast-1',
      accessKey: 'abcxxxx',
      secretAccessKey:'abcdxxx'

    });
    AWS.config.credentials = new AWS.CognitoIdentityCredentials({
     IdentityPoolId: 'ap-southeast-1:12340000-5587-4d40-91fe-9fab5668c708'
    });

S3 getObject

function (bucketName, key) {
  const params = {
    Bucket: bucketName,
    Key: key,
  };
  return s3.getObject(params).promise()
    .then((data) => {
      console.log('Successfully read from S3!');
      return data;
    });
};

Congnito userUnauthenticated

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "lambda:InvokeFunction",
                "mobileanalytics:PutEvents",
                "dynamodb:Scan",
                "lambda:InvokeAsync",
                "cognito-sync:*"
            ],
            "Resource": "*"
        }
    ]
}

Не удалось прочитать вS3.AccessDenied: доступ запрещен (узел: 73168) UnhandledPromiseRejectionWarning: необработанное отклонение обещания (идентификатор отклонения: 1): AccessDenied: доступ запрещен

Работает только в том случае, когда принципал является подстановочным, но не рекомендуется иметь эту конфигурацию.

1 Ответ

0 голосов
/ 11 июня 2018

Здесь указана политика чтения файлов с S3.

{
    "Id": "Policy1528709447655",
    "Version": "2012-10-17",
    "Statement": [{
        "Sid": "Stmt1528709412334",
        "Action": [
            "s3:GetBucketPolicy",
            "s3:GetObject",
            "s3:GetObjectTagging",
            "s3:GetObjectAcl"
        ],
        "Effect": "Allow",
        "Resource": [
            "arn:aws:s3:::bucket_name",
            "arn:aws:s3:::bucket_name/*"
        ],
        "Principal": {
            "AWS": [
                "arn:aws:iam::123456784337:root",
                "arn:aws:iam::487686674337:user/lambda-user"
            ]
        }
    }]
}
...