首页 > 解决方案 > 访问从 S3 下载到弹性 beantalk 的私钥时出现“权限被拒绝”

问题描述

根据官方 AWS 文档,我将 Firebase Admin SDK 凭证存储到来自亚马逊 S3 的弹性 beantalk env 中,用于应用程序的部署。 https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-storingprivatekeys.html

当 Firebase Admin SDK 尝试访问密钥时,它会引发错误。

PermissionError: [Errno 13] Permission denied: '/etc/pki/tls/certs/my_cert.json'

如何设置使其工作?

标签: djangoamazon-web-servicesamazon-s3amazon-ec2amazon-elastic-beanstalk

解决方案


您需要执行 2 个步骤:

  • .ebextensions/privatekey.config 如您的文档 url中所述。您可以检查 beanstalk 日志(如果可以 SSH,则为 cfn-init 日志)以验证 .ebextensions 脚本是否正确执行

  • beanstalk 应该能够访问存储密钥的 S3 存储桶。

第2点更详细:

分配给您环境的 EC2 实例的实例配置文件必须具有从指定存储桶读取密钥对象的权限。验证实例配置文件是否有权读取 IAM 中的对象,并且存储桶和对象的权限不会禁止实例配置文件。您可以通过 SSH'n 在属于 Beanstalk 环境的 EC2 内对此进行测试并执行:aws s3 ls s3://your-bucket/with-key。之后,您可以尝试下载密钥。这与您的 ebextensions 脚本尝试执行的操作完全相同。如果不允许,ebextensions 脚本将失败。


推荐阅读