Я пытаюсь использовать метод S3 Archive для развертывания Chef в Opsworks. Я поместил архив Chef в S3 и скопировал адрес https://s3.us-east-2.amazonaws.com/redcted/redcted.tar.gz. Я предоставил профилю экземпляра, используемому экземпляром, полный доступ на чтение / запись к «отредактированному» сегменту. Однако во время развертывания я получаю «setup_failed», а в журналах отображается 403 Forbidden при попытке доступа к архиву S3.
Я нашел некоторые Документы AWS, предлагающие сделать архив общедоступным. Однако я не хочу, чтобы мой код Chef был доступен всему миру.
Почему я получаю 403 Forbidden, хотя профиль экземпляра имеет правильные разрешения на архив?
Я сводил себя с ума, пытаясь заставить это работать раньше. Попытка получить доступ к корзине во время начальной загрузки всегда приводила к неудаче. Я думаю, это как-то связано с временем загрузки, и Chef запрашивает файл перед экземпляр имел на это право.
К сожалению, я пошел дальше и отказался от решения Opsworks Chef. (Это даже после разговора с одним из их специалистов по Opsworks!) Я перешел к тестированию решения Opsworks Chef Automate.
Как получить доступ к файлам в ведре S3?
По HTTPS работать не будет без публикации файлов. Это тот случай, если в вашем сценарии Chef вы, например, делаете:
wget https://s3.us-east-2.amazonaws.com/redacted/redacted.tar.gz
Чтобы использовать Роль IAM вам нужно будет скачать файлы, используя AWS-CLI. Это получит правильные разрешения и сможет загрузить файл. Например:
aws s3 cp s3://redacted/redacted.tar.gz .
Это должно работать.
Надеюсь, это поможет :)