Ваша ситуация:
- Экземпляр Amazon EC2 в Аккаунте-A
- Корзина Amazon S3 в Аккаунте-B
- Вы хотите разрешить инстанс EC2 для доступа к корзине
Это можно сделать двумя способами:
Вариант 1: Политика корзины
Просто добавьте политику корзины в корзину в Account-B который предоставляет доступ к роли IAM, используемой экземпляром EC2:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Principal": {
"AWS": [
"arn:aws:iam::ACCOUNT-A:role/my-ec2-role"
]
}
}
]
}
Экземпляр EC2 будет использовать свои обычные учетные данные роли IAM для доступа к корзине. Также убедитесь, что роль IAM дала разрешение на использование Amazon S3 для доступа к корзине:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucket-b",
"arn:aws:s3:::bucket-b/*"
]
}
]
}
Вариант 2. Принять роль
- Создайте роль IAM в учетной записи-B, которая имеет разрешение на доступ к корзине
- Код в экземпляре EC2 вызывает
AssumeRole()
в роли IAM - Используйте возвращенные учетные данные для доступа к корзине