将角色分配给 .ebextensions 中的实例
Assign role to instance in .ebextensions
tl;dr 实例获得假定角色,而不是我在配置中设置的角色。
我在 docker 中部署了一个 java 应用程序到 elastic-beanstalk 中;我实际上在 .ebextensions/instance.config
:
中使用我的自定义策略设置了特定角色
- namespace: aws:autoscaling:launchconfiguration
option_name: IamInstanceProfile
value: custom-profile
当我使用 eb init && eb create --tier worker
部署时一切正常。然后应用程序尝试访问 custom-profile 中允许的内容,但它失败了:
Exception in thread "main" com.amazonaws.AmazonServiceException: User: arn:aws:sts::***:assumed-role/aws-elasticbeanstalk-ec2-role/*** is not authorized to perform: ...
它甚至没有提到它使用 "assumed role" 的原因。有趣的是,当我在 Web 控制台中手动设置角色并上传 zip 时,它起作用了。
我试过使用 SingleInstance 和 LoadBalanced,两者的结果相同。我已阅读 docs 并用谷歌搜索,但没有发现任何有用的东西。我已经将 PassRole 权限添加到我的控制台用户,但我什至不知道它是否有帮助。该配置被认为是有效的,但是在创建 EC2 实例时我没有任何信息说明为什么它没有被分配正确的角色。
非常感谢您的建议。
注:new InstanceProfileCredentialsProvider()
用于Java。
两种可能
您是否将 .ebextension 文件提交到 git 存储库?很可能你做了,但只是仔细检查。
另一种可能性是,当您 运行 eb init 和 eb create 时,它会在不同的 conf 文件中为您设置默认值。这些默认值包括 IamInstanceProfile。在交互模式下,您可以选择角色名称,否则它会选择默认名称。 eb 通过 api 传递默认选项设置。您的 ebextensions 还指定了具有不同值的相同选项设置。如果发生冲突,api 获胜并覆盖您的 ebextension 中的歌曲。我认为这就是可能发生的事情。您可以尝试在交互模式下调用 eb init/create 时指定您的角色名称吗?这样您的角色将被使用而不是默认角色。
EB CLI 告诉 Elastic Beanstalk 使用 "aws-elasticbeanstalk-ec2-role" 实例配置文件。这将覆盖您的 ebextensions。
为了使用您自己的配置文件,您可以使用“-ip”选项,也可以使用默认保存的配置。
eb create --tier worker -ip custom-profile
如果您想使用保存的配置执行此操作,请参阅 this blog post。
tl;dr 实例获得假定角色,而不是我在配置中设置的角色。
我在 docker 中部署了一个 java 应用程序到 elastic-beanstalk 中;我实际上在 .ebextensions/instance.config
:
- namespace: aws:autoscaling:launchconfiguration
option_name: IamInstanceProfile
value: custom-profile
当我使用 eb init && eb create --tier worker
部署时一切正常。然后应用程序尝试访问 custom-profile 中允许的内容,但它失败了:
Exception in thread "main" com.amazonaws.AmazonServiceException: User: arn:aws:sts::***:assumed-role/aws-elasticbeanstalk-ec2-role/*** is not authorized to perform: ...
它甚至没有提到它使用 "assumed role" 的原因。有趣的是,当我在 Web 控制台中手动设置角色并上传 zip 时,它起作用了。
我试过使用 SingleInstance 和 LoadBalanced,两者的结果相同。我已阅读 docs 并用谷歌搜索,但没有发现任何有用的东西。我已经将 PassRole 权限添加到我的控制台用户,但我什至不知道它是否有帮助。该配置被认为是有效的,但是在创建 EC2 实例时我没有任何信息说明为什么它没有被分配正确的角色。
非常感谢您的建议。
注:new InstanceProfileCredentialsProvider()
用于Java。
两种可能
您是否将 .ebextension 文件提交到 git 存储库?很可能你做了,但只是仔细检查。
另一种可能性是,当您 运行 eb init 和 eb create 时,它会在不同的 conf 文件中为您设置默认值。这些默认值包括 IamInstanceProfile。在交互模式下,您可以选择角色名称,否则它会选择默认名称。 eb 通过 api 传递默认选项设置。您的 ebextensions 还指定了具有不同值的相同选项设置。如果发生冲突,api 获胜并覆盖您的 ebextension 中的歌曲。我认为这就是可能发生的事情。您可以尝试在交互模式下调用 eb init/create 时指定您的角色名称吗?这样您的角色将被使用而不是默认角色。
EB CLI 告诉 Elastic Beanstalk 使用 "aws-elasticbeanstalk-ec2-role" 实例配置文件。这将覆盖您的 ebextensions。 为了使用您自己的配置文件,您可以使用“-ip”选项,也可以使用默认保存的配置。
eb create --tier worker -ip custom-profile
如果您想使用保存的配置执行此操作,请参阅 this blog post。