Мы ранее использовали для копирования файлов с s3 в Redshift с помощью команды COPY каждый день из ведра без конкретной политики.S3 to Redshift: Копировать с доступом запрещен
COPY schema.table_staging
FROM 's3://our-bucket/X/YYYY/MM/DD/'
CREDENTIALS 'aws_access_key_id=xxxxxx;aws_secret_access_key=xxxxxx'
CSV
GZIP
DELIMITER AS '|'
TIMEFORMAT 'YYYY-MM-DD HH24:MI:SS';
Как нам нужно улучшить безопасность нашего сегмента S3, мы добавили политику авторизации соединения либо с нашего VPC (тот, который мы используем для нашего Redshift кластера) или конкретного IP-адреса.
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "DenyAllExcept",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::our-bucket/*",
"arn:aws:s3:::our-bucket"
],
"Condition": {
"StringNotEqualsIfExists": {
"aws:SourceVpc": "vpc-123456789"
},
"NotIpAddressIfExists": {
"aws:SourceIp": [
"12.35.56.78/32"
]
}
}
}
]
}
Эта политика работает хорошо для доступа к файлам из EC2, ОГО или нашего конкретного адреса с помощью AWS CLI или библиотеку бота Python.
Здесь ошибка мы имеем на Redshift:
ERROR: S3ServiceException:Access Denied,Status 403,Error AccessDenied,Rid xxxxxx,CanRetry 1
Détail :
-----------------------------------------------
error: S3ServiceException:Access Denied,Status 403,Error AccessDenied,Rid xxxxxx,CanRetry 1
code: 8001
context: Listing bucket=our-bucket prefix=X/YYYY/MM/DD/
query: 1587954
location: s3_utility.cpp:552
process: padbmaster [pid=21214]
-----------------------------------------------
Большое спасибо заранее, если вы можете помочь нам в этом,
Damien
пс: этот вопрос очень похож на этот один: Copying data from S3 to Redshift - Access denied