2

Openstack (essex) とHeatを使用してローカル クラウド環境をセットアップしました。しかし、インスタンスの最初の起動時に追加のファイル/パッケージを追加したいという問題に直面しています。私の知る限り、これはAWS::CloudFormation::Initで実行できます。

しかし、実行して新しいインスタンスを生成するとき

heat create test --template-file=test.template

次の最小限のテンプレートを使用

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Create and provision a web server",
    "Resources": {
        "NewServer": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "ImageId": "fedora18ami_neu",
                "InstanceType": "m1.large",
                "KeyName": "poc",
                "UserData": {
                    "Fn::Base64": "#!/bin/sh\n/opt/aws/bin/cfn-init -s test--region RegionOne -r NewServer\n"
                }
            },
            "Metadata": {
                "AWS::CloudFormation::Init": {
                    "config": {
                        "packages": {
                            "yum": {
                                "httpd": []
                            }
                        }
                    }
                }
            }
        }
    }
}

エラーが発生しました:

  File "/usr/lib/python2.7/site-packages/cfnbootstrap/aws_client.py", line 149, in sign
    derived_key = hmac.new(("AWS4" + creds.secret_key).encode('utf-8'), timestamp_short.encode('utf-8'), hashlib.sha256).digest()
TypeError: cannot concatenate 'str' and 'NoneType' objects

cfn-init が何らかの Amazon クラウド サービスに接続しようとしているようで、アクションを実行するには資格情報が必要です!? Amazon サービスに接続する必要があるのはなぜですか?また、それを回避する可能性はありますか? または、 AWS::CloudFormation::Initの機能をテンプレートに実装する別の方法はありますか? UserData-Element ですべてを Shellscript として宣言する必要がありますか?

助けてくれてありがとう!

4

0 に答える 0