【问题标题】:Base64 encode script for user data (AWS SDK for Java API)用于用户数据的 Base64 编码脚本(AWS SDK for Java API)
【发布时间】:2015-06-08 05:06:40
【问题描述】:

如何将 bash 脚本文件中的内容转换为可与 Amazon 的 Java API 一起使用的 base64 编码字符串?此代码表达了我正在尝试执行的操作,但会导致异常:

...原因:com.amazonaws.AmazonServiceException:用户数据的 BASE64 编码无效(服务:AmazonEC2;状态代码:400;错误代码:InvalidParameterValue...

String startupUserData = "#!/bin/bash cd /home/ubuntu/myTestDir; mvn test -PmyBuild";

startupUserData = org.apache.commons.codec.binary.Base64.encodeBase64String(startupUserData.getBytes());

runRqst.withImageId(_computerAmi)
        .withInstanceType(instanceSize)
        .withMinCount(hwRequest.numHwComputers)
        // .withMaxCount(Utils.MAX_EC2_INSTANCES_AT_A_TIME) // NOT THIS
        .withMaxCount(hwRequest.numHwComputers)
        .withKeyName(_keyName)
        .withSecurityGroups(_securityGroup)
        .withUserData(startupUserData);
ec2.runInstances(runRqst);

编辑: com.amazonaws.util.Base64.encodeAsString() 消除了异常,但脚本仍然没有执行。字符串应该如何格式化?应该有回车吗?

【问题讨论】:

    标签: java amazon-web-services amazon-ec2 user-data


    【解决方案1】:

    使用上述答案时遇到问题。我的解决方案是我导入了

    import com.amazonaws.util.Base64;
    

    然后

    String initScript = "sudo -i apt-get install docker.io";
    
    RunInstancesRequest run_request = new RunInstancesRequest()
                    .withImageId(ami_id)
                    .withInstanceType(InstanceType.T2Micro)
                    .withMaxCount(1)
                    .withMinCount(1)
                    .withUserData(Base64.encodeAsString(initScript.getBytes()));
    

    【讨论】:

      【解决方案2】:

      对于编码,您需要使用亚马逊提供的编码类。

      amazon.webservices.common.Encoding

      它包含返回编码数据的 API EncodeBase64()。

      public static String EncodeBase64(byte[] rawData) {
       return Base64.encodeBytes(rawData);
      }
      

      【讨论】:

      【解决方案3】:

      com.amazonaws.util.Base64.encodeAsString 对我有用。我使用 \n 来分隔多林。您也可以在 /var/lib/cloud/instance/user-data.txt 验证它,同样的 http://169.254.169.254/user-data 返回。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-02
        • 1970-01-01
        • 2018-05-24
        • 2019-05-23
        相关资源
        最近更新 更多