我正在尝试使用 S3 存档方法在 Opsworks 中进行 Chef 部署。我将 Chef 存档放在 S3 中,并复制了https://s3.us-east-2.amazonaws.com/redacted/redacted.tar.gz。我授予实例使用的实例配置文件对“已编辑”存储桶的完全读/写访问权限。然而,在部署期间,我尝试访问 S3 存档时出现“setup_failed”且日志显示 403 Forbidden。
我发现了一些AWS 文档建议公开该档案。然而我并不想让我的 Chef 代码公开。
为什么即使实例配置文件对档案具有正确的权限,我仍会收到 403 Forbidden 错误?
答案1
如何访问 S3 存储桶中的文件?
通过 HTTPS 则无法工作而不将文件公开。如果您在 Chef 脚本中执行以下示例,则会出现这种情况:
wget https://s3.us-east-2.amazonaws.com/redacted/redacted.tar.gz
为了利用IAM 角色你必须使用以下方式下载文件AWS 命令行界面。这将获得正确的权限并应该能够下载文件。例如:
aws s3 cp s3://redacted/redacted.tar.gz .
这应该可行。
希望有帮助:)
答案2
我以前为了让它工作而拼了命。在初始启动期间尝试访问存储桶总是会失败。我认为这与启动时间有关,Chef 要求提供文件前该实例有权利这样做。
遗憾的是,我放弃了 Opsworks Chef 解决方案。(这甚至是在与他们的一位 Opsworks 技术人员交谈之后!)我已开始测试 Opsworks Chef Automate 解决方案。