.NET - Пометка экземпляра EC2 с помощью AWS CDK для низкоуровневых конструкций CloudFormation Resource .NET - PullRequest
0 голосов
/ 19 сентября 2018

Пока мы все ждем, чтобы более высокий уровень / рукописный текст Construct был доступен для создания экземпляра EC2 с использованием AWS CDK, я пытаюсь использовать автоматически сгенерированный низкоуровневый ресурс CloudFormation Resourceдоступно по адресу Amazon.CDK.AWS.EC2.cloudformation.InstanceResource_ в пакете NuGet Amazon.CDK.AWS.EC2 .

Моим тестовым приложением является консольное приложение .NET Core с Amazon.CDK.AWS.EC2 NuGet пакет как единственная другая зависимость.Вот код:

using System;
using System.Linq;

namespace AWSCDKEval
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a new app. The first argument is used to display a usage message for this app.
            var appArgs = new [] { $"dotnet ${nameof(AWSCDKEval)}" }
                .Concat(args)
                .ToArray();
            var app = new Amazon.CDK.App(appArgs);

            new TestStack(app, "test-aws-cdk-stack-1", new Amazon.CDK.StackProps());

            // Your app must write the return value of app.Run() to standard output. The `cdk init`
            // and `cdk synth` commands require this output.
            Console.WriteLine(app.Run());
        }
    }

    public class TestStack : Amazon.CDK.Stack
    {
        public TestStack(Amazon.CDK.App parent, string name, Amazon.CDK.IStackProps props) : base(parent, name, props)
        {
            new Amazon.CDK.AWS.EC2.cloudformation.InstanceResource_(
                this, 
                "testInstance1", 
                new Amazon.CDK.AWS.EC2.cloudformation.InstanceResourceProps
                {
                    ImageId = "ami-0f1155cc2cb6b0cfd", // Microsoft Windows Server 2016 Base
                    InstanceType = "t2.micro",
                    KeyName = "my_key",
                    Tags = new []
                    {
                        new Amazon.CDK.Tag { Key = "Name", Value = "test-instance-1" },
                        new Amazon.CDK.Tag { Key = "foo", Value = "bar" }
                    }
                });
        }
    }
}

Затем вы компилируете проект и используете CDK для synth его в шаблонах CloudFormation и всех настройках, но tags делает его.

dotnet build <folder-with-code>
cdk synth --output <folder-where-to-write-cf-templates>

И вывод:

Resources:
    testInstance1:
        Type: 'AWS::EC2::Instance'
        Properties:
            ImageId: ami-0f1155cc2cb6b0cfd
            InstanceType: t2.micro
            KeyName: my_key
    CDKMetadata:
        Type: 'AWS::CDK::Metadata'
        Properties:
            Modules: '@aws-cdk/aws-ec2=0.9.1,@aws-cdk/aws-iam=0.9.1,@aws-cdk/cdk=0.9.1,@aws-cdk/cx-api=0.9.1,js-base64=2.4.9'

Теперь я полностью понимаю, что CDK находится на очень ранних стадиях и не рекомендуется для какой-либо разработки, но лучшая часть - это доступность всех собственных ресурсов под cloudformationпространство имен, которое я планирую использовать, пока CDK растет.

Буду признателен за любую помощь в правильном направлении!

1 Ответ

0 голосов
/ 20 сентября 2018

Оказывается, это в настоящее время ошибка в AWS CDK и работает , если вы используете typescript вместо C# .NET.Я зарегистрировал проблему для того же самого.

...