Не удается получить доступ к корзине S3 с помощью роли IAM из экземпляра EC2 - PullRequest
2 голосов
/ 25 марта 2019

Я пытаюсь загрузить файл из частного сегмента S3 с помощью PHP SDK (на экземпляре EC2).

Я создаю роль IAM и прикрепляю к ней AmazonS3FullAccess.

Я создал корзину S3, и это политика корзины:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::206193043625:role/MyRoleName"
      },
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::config-files/*"
    }
  ]
}

Затем на стороне PHP я делаю запрос curl для http://169.254.169.254/latest/meta-data/iam/security-credentials/MyRoleName, я получаю JSON обратно, создаю экземпляр S3Client и пытаюсьскачайте его, но я получаю это сообщение об ошибке:

Ошибка выполнения «GetObject» на «https://files.s3.us -west-2.amazonaws.com / us-west-2__config.php ";Ошибка HTTP AWS: ошибка клиента: GET https://files.s3.us-west-2.amazonaws.com/us-west-2__config.php, в результате которого был получен ответ 403 Forbidden:

AccessDenied

Access DeniedC84D80 (усечено ...) AccessDenied (клиент): Доступ запрещен -

Отказано в доступе

Отказано в доступеC84D80DE6B2D35FD6sDWIYK98nSH + Oa8lBH7lD91rfHospDeo0jZKFDdo0CaeY8aX6Wb / s2ja5qeYxCBuLwDJ27 * * * 0

Ответы [ 3 ]

2 голосов
/ 25 марта 2019

Нет необходимости обращаться к 169.254.169.254 напрямую.AWS SDK для PHP автоматически получит учетные данные.

Просто создайте клиент S3 без указания учетных данных.

0 голосов
/ 26 марта 2019

Для доступа к S3 Bucket из экземпляра EC2 выполните следующие шаги:

* Create an IAM Role with S3 Full Access.
* Launch an EC2 instance with the role attached to it.
* SSH to your EC2 instance with root permissions.
* Type the command:    aws s3 ls. It will display all the buckets which are there in S3.

Поскольку роль прикреплена к экземпляру EC2, нет необходимости упоминать учетные данные безопасности.

Спасибо

0 голосов
/ 25 марта 2019

Поскольку вы уже предоставили AmazonS3FullAccess роль для своего экземпляра EC2, вам больше ничего не нужно делать (т. Е. Получать доступ к api метаданных). Прямой доступ к вашему клиенту S3, и он будет работать так, как ожидается от вашего вычислительного экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...