Ваша ситуация:
- У вас есть Amazon S3
Bucket-A
в Account-A
- У вас есть пользователь IAM (
User-A
) в Account-A
- У вас есть экземпляр Amazon EC2, работающий в
Account-B
- Из этого экземпляра EC2 вы получите sh для доступа к
Bucket-A
- Также кажется, что у вас есть средство для экземпляра EC2 для доступа к конечным точкам Amazon S3 для выполнения вызовов API
Предполагается, что экземпляр может достичь Amazon S3 (что выглядит так, поскольку сообщение об ошибке относится к разрешениям, которые могли бы появиться из S3) существует два способа аутентификации для доступа к Bucket-A
:
Вариант 1. Использование пользователя IAM из учетной записи-A
при выполнении вызова от экземпляра EC2 до Bucket-A
используйте учетные данные IAM, созданные в Bucket-A. Неважно, что запрос исходит от экземпляра Amazon EC2 в Account-B
. На самом деле, Amazon S3 даже не знает этого. Вызов API может поступить из в любом месте Inte rnet (включая ваш домашний компьютер или мобильный телефон). Что важно, так это набор учетных данных, предоставляемых при совершении вызова.
Если вы используете AWS интерфейс командной строки (CLI) для выполнения вызова, то вы можете сохранить User-A
учетные данные в качестве профиля, используя aws configure --profile user_a
(или любое имя), затем введите учетные данные от пользователя IAM в Account-A
. Затем получите доступ к Amazon S3 с помощью aws s3 ls --profile user_a
. Использование профиля, подобного этому, позволяет переключаться между учетными данными.
Вариант 2. Использование политики Bucket
Amazon S3 также имеет возможность указать политику Bucket для ведро, которое может предоставить доступ к ведру. Таким образом, если экземпляр EC2 использует учетные данные из Account-B
, вы можете добавить политику корзины, которая предоставляет доступ из этих Account-B
учетных данных.
Предположим, что экземпляр Amazon EC2 был запущен с ролью IAM под названием role-b
, тогда вы можете использовать Bucket Policy, например:
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<Account-B>:role/role-b"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket-a/*"
}
]
}
Отказ от ответственности: Все вышеперечисленное предполагает, что у вас нет странных политик на вашем VP C Конечные точки / Точки доступа Amazon S3 или другие VPC соединяются с конечными точками Amazon S3.