【问题标题】:AWS Elastic Beanstalk - Environment must have instance profile associated with itAWS Elastic Beanstalk - 环境必须具有与之关联的实例配置文件
【发布时间】:2019-01-08 05:32:11
【问题描述】:

我正在开展一个项目,该项目将以编程方式在 AWS 弹性 beantalk 中创建环境。我正在使用适用于 PHP 版本 3 的 AWS 开发工具包。

我的脚本创建环境。在 AWS 控制台中,环境显示为灰色并表示已终止。查看事件显示“Environment must have instance profile associated with it”的错误。

我尝试过使用两个不同用户的访问密钥和密码。一位用户拥有 AmazonEC2FullAccess、IAMFullAccess 和 AWSElasticBeanstalkFullAccess 权限。另一个用户具有 AWSAdmin 权限。两个用户都可以从 AWS 控制台创建环境。

我不知道如何将实例配置文件与 SDK 中的环境相关联。我看不到使用 createEnvironment 函数执行此操作的选项:createEnvironment syntax 在创建 ElasticBeanstalkClient 对象的实例时,我也看不到执行此操作的方法。

我的代码如下。谢谢。

<?php
    require 'vendor/autoload.php';
    use Aws\ElasticBeanstalk\ElasticBeanstalkClient;
    use Aws\Credentials\Credentials;

    $key = '***key***';
    $secret = '***secret***';

    $credentials = new Credentials($key, $secret);
    $ebClient = new ElasticBeanstalkClient([
        'region'  => 'us-east-2',
        'version' => '2010-12-01',
        'credentials' => $credentials
    ]);

    $ebEnv = $ebClient->createEnvironment([
        'ApplicationName' => 'app-from-sdk',
        'EnvironmentName' => 'env-from-sdk-1',
        'CNAMEPrefix'     => 'sdk-test1',
        'Description'     => 'Test environment created from SDK.',
        //'TemplateName'    => 'PHP 7.1 version 2.7.1',
        'SolutionStackName' => '64bit Amazon Linux 2018.03 v2.7.1 running PHP 
7.1',
        'VersionLabel'    => 'Sample Application'
    ]);
    echo '<pre>';
    var_dump($ebEnv);
    echo '</pre>';

【问题讨论】:

    标签: amazon-web-services amazon-elastic-beanstalk aws-sdk aws-php-sdk


    【解决方案1】:

    您在传递的 createEnvironment 属性映射/哈希中缺少以下属性:

    OptionSettings.member.1.Namespace = aws:autoscaling:launchconfiguration
    OptionSettings.member.1.OptionName = IamInstanceProfile
    OptionSettings.member.1.Value = aws-elasticbeanstalk-ec2-role
    

    来源: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-create-api.html

    【讨论】:

    • 谢谢!当我将这些属性插入到 OptionSettings 参数中时,这很有效:'OptionSettings' => [ [ 'Namespace' => 'aws:autoscaling:launchconfiguration', 'OptionName' => 'IamInstanceProfile', //'ResourceName' => '', 'Value' => 'aws-elasticbeanstalk-ec2-role' ] ]
    • 在 JavaScript 中使用 aws-sdk 的等效项是 `` OptionSettings: [{ OptionName: 'IamInstanceProfile', Value: 'aws-elasticbeanstalk-ec2-role', Namespace: 'aws:autoscaling: launchconfiguration' }] ``` 节省了很多时间!谢谢你OP
    猜你喜欢
    • 2017-12-15
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 2022-01-17
    • 2017-12-16
    相关资源
    最近更新 更多