Укажите объем и другие параметры для AWS EC2 AMI при запуске экземпляра - PullRequest
0 голосов
/ 04 ноября 2019

Я изо всех сил пытался сказать это лучше, но я хочу иметь возможность запустить экземпляр EC2, используя Wordpress AMI от Bitnami.

Я хочу сделать это, используя aws-sdk для javascript, чтобы я мог запускать экземпляры из своей программы.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу указать размер тома, который нужно присоединить. Есть какой-либо способ сделать это? Возможно, создайте пользовательский AMI, который является модификацией существующего - если так, как бы я поступил об этом?

Я борюсь с документами AWS.

Мой вызов экземпляра:

const startInstance = () => {
return new Promise((resolve, reject) => {
    const ec2 = new AWS.EC2({ apiVersion: '2016-11-15' });

    const instanceParams = {
        ImageId: 'ami-05d3ff95e7af0c839',
        InstanceType: 't2.micro',
        KeyName: 'filezilla2',
        MinCount: 1,
        MaxCount: 1
    };

    const instancePromise = new AWS.EC2({ apiVersion: '2016-11-15' }).runInstances(instanceParams).promise();

    instancePromise.then(
        function (data) {
            console.log(data);
            var instanceId = data.Instances[0].InstanceId;
            console.log("Created instance", instanceId);
            tagParams = {
                Resources: [instanceId], Tags: [
                    {
                        Key: 'Name',
                        Value: 'test from app'
                    }
                ]
            };

            var tagPromise = new AWS.EC2({ apiVersion: '2016-11-15' }).createTags(tagParams).promise();

            tagPromise.then(
                function (data) {
                    console.log("Instance tagged");
                    resolve(data);
                }).catch(
                    function (err) {
                        console.error(err, err.stack);
                        reject(err)
                    });
        }).catch(
            function (err) {
                console.error(err, err.stack);
                reject(err)
            });
});

}

1 Ответ

0 голосов
/ 04 ноября 2019

Я нашел решение, добавьте это к вашему объекту params

BlockDeviceMappings: [
                {
                    DeviceName: '/dev/sda1',
                    Ebs: {
                        DeleteOnTermination: <<true || false>>,
                        VolumeSize: <<size in GB>>,
                        VolumeType: "gp2"
                    }
                }
            ],
...