Доступ к ковшу AWS S3 от EC2

Мне нужно запустить ведро S3, чтобы мои экземпляры EC2 имели доступ к хранилищу файлов изображений. Экземпляры EC2 нуждаются в разрешениях на чтение/запись. Я не хочу, чтобы ядро ​​S3 было общедоступным, я хочу, чтобы экземпляры EC2 имели к нему доступ.

Другой способ: мои экземпляры EC2 управляются OpsWorks, и я могу иметь возможность запускать разные экземпляры в зависимости от загрузки/использования. Если бы я ограничивал его по IP, я не всегда мог бы знать IP, который имеет экземпляры EC2. Могу ли я ограничить VPC?

Должен ли я сделать свой ведро S3 включенным для статического хостинга? Нужно ли делать все файлы в ведре общедоступными, чтобы это работало?

Ответ 1

Вам не нужно делать ведро общедоступным, а файлы - общедоступными. Ведро и его содержимое можно хранить в тайне.

Не ограничивайте доступ к сегменту на основе IP-адреса, а ограничивайте его на основе роли IAM, которую использует экземпляр EC2.

  1. Создайте роль экземпляра IAM EC2 для ваших экземпляров EC2.
  2. Запустите ваши экземпляры EC2, используя эту роль.
  3. Назначьте этой роли IAM политику доступа к корзине S3.

Например:

{
  "Version": "2012-10-17",
  "Statement":[{
    "Effect": "Allow",
    "Action": "s3:*",
    "Resource": ["arn:aws:s3:::my_bucket",
                 "arn:aws:s3:::my_bucket/*"]
    }
  ]
} 
  1. Если вы хотите ограничить доступ к самой корзине, попробуйте политику корзины S3.

Например:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": ["arn:aws:iam::111122223333:role/my-ec2-role"]
      },
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::my_bucket",
                   "arn:aws:s3:::my_bucket/*"]
    }
  ]
}

Дополнительная информация: http://blogs.aws.amazon.com/security/post/TxPOJBY6FE360K/IAM-policies-and-Bucket-Policies-and-ACLs-Oh-My-Controlling-Access-to-S3-Resourc

Ответ 3

Это можно сделать очень просто. Выполните следующие действия:

  • Откройте AWS EC2 на консоли.
  • Выберите экземпляр и перейдите к действиям.
  • Выберите настройки экземпляров и выберите "Присоединить/заменить роль IAM"
  • Создайте новую роль и присоедините к ней политику S3FullAccess.

После этого подключитесь к экземпляру AWS, а все остальное будет выполнено с помощью следующих команд консоли:

  • aws s3 cp расположение файла/имя файла s3://имя_хранилища

Обратите внимание... расположение файла относится к локальному адресу. И имя ведра - это имя вашего ведра. Также обратите внимание: это возможно, если ваш экземпляр и корзина S3 находятся в одной учетной записи. Приветствия.