AWS EB从docker TypeError部署

时间:2018-09-19 09:08:15

标签: amazon-web-services docker amazon-elastic-beanstalk

我正在尝试使用AWS Elasticbeanstalk CLI从Docker实例内部部署我的代码。我收到此错误:

    $ eb deploy my-env
Traceback (most recent call last):
  File "/usr/local/bin/eb", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/ebcli/core/ebcore.py", line 142, in main
    ebrun.run_app(app)
  File "/usr/local/lib/python2.7/dist-packages/ebcli/core/ebrun.py", line 74, in run_app
    io.log_error(e.__class__.__name__ + " - " + e.message)
TypeError: cannot concatenate 'str' and 'ProfileNotFound' objects

我的config.yml看起来像这样:

branch-defaults:
  default:
    environment: null
    group_suffix: null
  master:
    environment: my-env
global:
  application_name: myapp
  branch: null
  default_ec2_keyname: null
  default_platform: Docker 18.03.1-ce
  default_region: eu-west-2
  include_git_submodules: true
  instance_profile: null
  platform_name: null
  platform_version: null
  profile: eb-cli
  repository: null
  sc: git
  workspace_type: Application

3 个答案:

答案 0 :(得分:4)

问题是容器内的~/.aws/credentials中没有AWS凭证。您的Dockerfile需要在~/.aws/credentials之前的eb deploy中添加以下内容:

[eb-cli]
aws_access_key_id = <AWS_ACCESS_KEY_ID>
aws_secret_access_key = <AWS_SECRET_ACCESS_KEY>

答案 1 :(得分:0)

您能否提供一些有关您的环境的详细信息?如果我正确理解已在Docker容器中安装了ewscli,则启动该容器并连接到该容器,然后尝试从那里运行部署。

能否请你告诉我: -您的python版本是什么? -在容器内,您是否配置了默认的AWS配置文件?

答案 2 :(得分:0)

在2019年之后更新给任何关注此内容的人尝试不要在Docker容器中传递凭据,通过任务定义角色传递IAM权限

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_environment

注册任务定义时,可以为IAM角色提供任务角色,该角色允许任务权限中的容器代表您调用其关联策略中指定的AWS API。有关更多信息,请参阅任务的IAM角色。 -https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html