Сценарий: У меня есть экземпляр EC2 и ведро S3 под той же учетной записью, и мое веб-приложение на этом EC2 хочет получить доступ к ресурсам в этом ковше.AWS EC2 доступ к S3 с ролью IAM
Следуя официальным документам, я создал роль IAM с помощью s3access
и присвоил ее экземпляру EC2. Насколько я понимаю, теперь мое веб-приложение должно иметь доступ к ведру. Однако, после испытаний, кажется, я должен добавить политику allowPublicRead
ведра, как это:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*"
}
]
}
В противном случае я получил доступ запрещен.
Но почему я должен использовать эту политику allowPublicRead
, так как я уже предоставил s3access
роль IAM экземпляру EC2?
Спасибо! Еще один вопрос, если только клиент напрямую разговаривает с S3, почему нам нужно назначить роль IAM с 's3access' в EC2? –
Да, поскольку ваш код развернут на машине ec2, и ему нужно подключиться к S3, чтобы получить объект, а затем отправить его обратно клиенту. Таким образом, ec2 должен иметь доступ S3. –