小编Tom*_*itt的帖子

将未知大小的安全组列表添加到EC2实例

我们有一个CloudFormation模板,用于创建EC2实例和安全组(以及许多其他资源),但我们需要能够向同一个EC2实例添加一些其他预先存在的安全组.

我们遇到的问题是,预先存在的安全组的数量并不总是相同,我们希望有一个模板来处理所有情况.

目前,我们有一个输入参数,如下所示:

"WebTierSgAdditional": {
  "Type": "String",
  "Default": "",
  "Description": ""
}
Run Code Online (Sandbox Code Playgroud)

我们将此参数传递给逗号分隔的预先存在的安全组字符串,例如'sg-abc123,sg-abc456'.

EC2实例的SecurityGroup标记如下所示:

"SecurityGroups": [
  {
    "Ref": "WebSg"
  },
  {
    "Ref": "WebTierSgAdditional"
  }
]
Run Code Online (Sandbox Code Playgroud)

使用此代码,在创建实例时,我们会在AWS控制台中收到此错误:

必须对所有安全组使用group-id或group-name,而不是同时使用

上面的'WebSg'参考是在模板中其他地方创建的安全组之一.如果我们通过输入参数传入组名列表而不是组ID列表,则会出现同样的错误.

当我们将输入参数的"类型"字段更改为"CommaDelimitedList"时,我们会收到错误消息:

属性值SecurityGroups的类型必须是List of String

它显然无法使用字符串连接列表以使其成为新列表.

当参数只包含一个sg id时,所有内容都会成功创建,但是,我们需要能够添加多个sg id.

我们Fn::Join在SecurityGroups标记中尝试了许多不同的使用组合,但似乎没有任何效果.我们真正需要的是某种"爆炸"功能,用于从参数字符串中提取单个id.

有谁知道一个很好的方法让这个工作?

amazon-ec2 amazon-web-services aws-cloudformation

14
推荐指数
2
解决办法
1万
查看次数

Angular - 没有将"exportAs"设置为"ngModel"的指令

以下是AngularJS项目中的文件.正如一些帖子所建议的那样,我补充说:

ngModel name="currentPassword" #currentPassword="ngModel 
Run Code Online (Sandbox Code Playgroud)

在输入字段中,但仍然出错.

的package.json

.........
"dependencies": {
        "@angular/common": "^2.3.1",
        "@angular/compiler": "^2.3.1",
        "@angular/core": "^2.3.1",
        "@angular/forms": "^2.3.1",
        "@angular/http": "^2.3.1",
        "@angular/platform-browser": "^2.3.1",
        "@angular/platform-browser-dynamic": "^2.3.1",
        "@angular/router": "^3.3.1",
        "core-js": "^2.4.1",
        "rxjs": "^5.0.1",
        "ts-helpers": "^1.1.1",
        "zone.js": "^0.7.2"
    },
   ...............
Run Code Online (Sandbox Code Playgroud)

变化password.component.html

<form #f="ngForm" [formGroup]="changePasswordForm">
        <div class="form-group">
            <label for="currentPassword">Current Password</label> <input
                placeholder="currentPassword" ngModel name="currentPassword"
                #currentPassword="ngModel" id="currentPassword"
                name="currentPassword" type="text" class="form-control" required
                minlength="6" formControlName="currentPassword">
            </div>
        </div>
        <button class="btn btn-primary" type="submit">Change Password</button>
    </form>
Run Code Online (Sandbox Code Playgroud)

变化password.component.ts

import { Component, OnInit } from '@angular/core';
import { FormBuilder, Validators, ControlContainer, FormGroup, FormControl } …
Run Code Online (Sandbox Code Playgroud)

angular2-forms angular2-ngmodel angular

11
推荐指数
4
解决办法
2万
查看次数

在DEV中,Symfony 4非常缓慢

我尝试在docker容器上运行一个简单的Symfony 4项目.我已经测试了常规PHP脚本,并且它们运行良好.但是,使用Symfony项目,执行变得非常缓慢.例如,没有任何重要内容的页面需要5-6秒.

我附上了Symfony的性能分析器的截图.

Screenshot1 Screenshot2 Screenshot3 Screenshot4

您是否知道如何将执行时间缩短到可接受的水平?

php symfony docker symfony4

10
推荐指数
3
解决办法
4382
查看次数

带有Packer的AWS user_data

所以我正在尝试使用Packer创建AWS映像并通过user_data_file指定一些用户数据.实例启动时需要运行此文件的内容,因为每次实例都是唯一的.我不能把它加入AMI.

使用打包器我有以下内容:

{
  "variables": {
  "ami_name": ""
  },
  "builders": [
  {
    "type": "amazon-ebs",
    "region": "us-east-1",
    "source_ami": "ami-c8580bdf",
    "instance_type": "t2.micro",
    "ssh_username": "ubuntu",
    "ami_name": "{{ user `ami_name` }}-{{ isotime | clean_ami_name }}",
    "user_data_file": "user_data.sh",
    "tags": {
      "os_version": "ubuntu",
      "built_by": "packer",
      "build_on": "{{ isotime | clean_ami_name }}",
      "Name": "{{ user `ami_name` }}"
    }
  }],
  "provisioners": [
  {
    "type": "ansible",
    "playbook_file": "playbook.yml",
    "user": "ubuntu"
  }]
}
Run Code Online (Sandbox Code Playgroud)

我的user_data shell脚本的内容只是通过在供应商步骤中运行的ansible脚本安装的软件包的几个基本配置行.观察Packer的输出我可以确认ansible脚本全部运行.

Packer完成并创建AMI,但永远不会执行用户数据.结果图像中不存在任何记录.没有/userdata.log文件并且/var/lib/cloud/instance/user-data.txt是空的我觉得我错过了一些基本的东西,因为这应该是一个非常简单的事情与Packer.

amazon-ec2 packer amazon-web-services user-data

9
推荐指数
2
解决办法
4361
查看次数

git submodule add fatal:不是Git Repository

我是Git的新手,并尽我所能找到关于这个问题的一些文档无济于事.

这是我的命令:

$ git submodule add https://github.com/joliver/EventStore.git externalsource/JOliverEventStore/ 
Run Code Online (Sandbox Code Playgroud)

致命:不是git存储库:../.git/modules/externalsource/JOliverEventStore无法签出子模块'externalsource/JOliverEventStore'

我在我的回购根目录中,目前没有目录/externalsource/JO liverEventStore/.错误是谈论我不知道的目录.

如果我将子模块添加到根目录,如下所示:

$ git submodule add https://github.com/joliver/EventStore.git JOliverEventStore 
Run Code Online (Sandbox Code Playgroud)

我没有问题,它在根目录中创建了该文件夹.

任何见解将不胜感激.

git git-submodules

8
推荐指数
3
解决办法
2万
查看次数

在控制器测试中覆盖Symfony 3.3容器服务

我对依赖于需要在测试环境中模拟的第三方API的控制器进行了一系列测试.我们覆盖功能测试客户端爬虫并模拟我们需要测试的依赖项.这里的关键是每次测试都会改变模拟.

在Symfony 3.2中,这个工作正常,但在Symfony 3.3中,由于现在注入服务的方式,我有一些弃用警告:

示例控制器测试用例:

class MyControllerTest extends WebTestCase
{
    private static $kernelModifier = null;

    public function setKernelModifier(\Closure $kernelModifier)
    {
        self::$kernelModifier = $kernelModifier;
        $this->ensureKernelShutdown();
    }

    protected static function createClient(array $options = [], array $server = [])
    {
        static::bootKernel($options);

        if ($kernelModifier = self::$kernelModifier) {
            $kernelModifier->__invoke();
            self::$kernelModifier = null;
        };

        $client = static::$kernel->getContainer()->get('test.client');
        $client->setServerParameters($server);

        return $client;
    }

    protected function getPropertyClient()
    {
        $mockService = (new PropertyMock())->getPropertyMock();
        $this->setKernelModifier(function () use ($mockService) {
            static::$kernel->getContainer()->set('app.property_service', $mockService);
        });
        return static::createClient();
    }

    protected function getPropertyFailureClient()
    {
        $mockService = …
Run Code Online (Sandbox Code Playgroud)

php phpunit dependency-injection symfony symfony-3.3

7
推荐指数
1
解决办法
1039
查看次数

如何将ZF2单元/应用程序模块测试整合到一个呼叫中?

我遵循ZF2惯例,在模块中存储测试,当每个模块中运行测试时,一切正常.我想要做的是有一个根级phpunit.xml,它调用单个模块测试并合并它们以产生代码覆盖率数据和其他指标.

问题是每个单独的测试套件都在模块化的phpunit.xml文件中引导.我知道做事的唯一方法是在每个phpunit.xml文件中配置引导程序,当从root运行测试时,由于忽略了单独的xml文件,这显然无法获取.

所以我的问题是:是否有一种方法可以让根级phpunit.xml文件从模块中读取单独的phpunit.xml和bootstrap文件,如果你愿意的话,还有一种phpunit配置继承?我可以沿着Phing或CI脚本编写这个版本的路线,但我希望它在开发过程中快速而肮脏,这个解决方案仍然不会产生合并的代码报告.

基本上,我想要这样的东西,但不是运行测试,我希望它在每个模块中运行各个phpunit.xml文件.这可能吗?

<?xml version="1.0" encoding="UTF-8"?>

<phpunit>
    <testsuites>
        <testsuite name="Site Tests">
            <directory>./module/Application/test/ApplicationTest</directory>
            <directory>./module/User/test/UserTest</directory>
        </testsuite>
    </testsuites>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

更新

目标是让PHPUnit生成的代码度量标准提供项目概述,而不是模块化的特定概述.我很欣赏答案中的脚本将按模块运行单元测试,但这不是我想要的.据我所知,就PHPUnit而言,这可能是一个限制.我将在接下来的几天内对此进行研究,并尝试找到一个解决方案,因为它似乎对许多处理自定义模块的项目很有用.

更新2

Robert Basic提出了一个脚本,该脚本创建了一个目录结构,其中包含模块内部报告,并且它工作得很好但是很高兴让它在PHPUnit中运行并具有适当的度量报告.

https://gist.github.com/robertbasic/5329789

php phpunit unit-testing zend-framework2

6
推荐指数
1
解决办法
481
查看次数

Dockerhub使用多个私有回购自动构建

有没有办法在自动化dockerhub构建期间连接到多个私有git repos?我们正在构建golang应用程序,并且需要"获取"其他私有存储库作为我们构建的一部分,并且当它们失败时,因为docker无法连接到它们,只有目标私有存储库.

主要仓库很好,因为部署密钥是通过Dockerhub安装的,但任何后续的私有仓库导入都会失败.

我可以看到,解决这个问题的一种方法是在本地构建映像,"docker push"到dockerhub,然后在部署端将其拉下来,这会破坏dockerhub和自动构建系统的目的.另一种是将ssh键烘焙到基本图像中,这不是一个好主意.

有没有人有这个解决方案,不涉及将ssh密钥烧成图像或在本地构建?

非常感谢.

git github go docker dockerhub

6
推荐指数
1
解决办法
767
查看次数

实体框架 6:迁移删除列(如果存在)

在删除列的迁移操作期间,如何在尝试删除列之前先生成 SQL 以检查该列是否存在?

对于删除列操作,实体框架当前生成这样的 sql 来删除列:

// Migration Operation:
DropColumn("dbo.Table", "Column");

// TSQL generated:
// Dependency management logic ...
ALTER TABLE [dbo].[Table] DROP COLUMN [Column]
Run Code Online (Sandbox Code Playgroud)

如何更改 SQL 以首先检查列是否存在:

// Migration Operation:
DropColumn("dbo.Table", "Column");

// TSQL desired:
IF EXISTS (SELECT * FROM sys.columns WHERE object_id = Object_id('dbo.Table') AND name = 'Column')
BEGIN
    // Dependency management logic ...
    ALTER TABLE [dbo].[Table] DROP COLUMN [Column]
END
Run Code Online (Sandbox Code Playgroud)

我知道可以通过继承自SqlServerMigrationSqlGenerator. 我这样做的尝试未能将默认放置列逻辑包装在一个IF块中。请参阅下面的示例:

public class CustomSqlServerMigrationSqlGenerator: SqlServerMigrationSqlGenerator
{
    /// <summary>
    /// Drop column only …
Run Code Online (Sandbox Code Playgroud)

entity-framework sql-generation ef-code-first entity-framework-6 entity-framework-migrations

6
推荐指数
1
解决办法
4100
查看次数

AWS Route53 记录集删除错误 - 提供的值与当前值不匹配

我正在尝试使用以下命令删除故障转移别名记录集:

aws route53 change-resource-record-sets \
    --hosted-zone-id <my-zone-id> \
    --change-batch file://file.json
Run Code Online (Sandbox Code Playgroud)

json的内容:

{
  "Comment": "test-rdc",
  "Changes": [
  {
    "Action": "DELETE",
    "ResourceRecordSet": {
      "Name": "abc.aws-ab-xyz.abcd.com",
      "Type": "A",
      "SetIdentifier": "abc-Secondary",
      "Failover": "SECONDARY" ,
      "AliasTarget": {
        "HostedZoneId": "jashkhakh",
        "DNSName": "hhhkjhkh",
        "EvaluateTargetHealth": false 
      },
      "HealthCheckId": "hhjhkh" 
    }
  }]
}
Run Code Online (Sandbox Code Playgroud)

错误:尝试删除资源记录集 [name='abc.aws-ab-xyz.abcd.com.', type='A', set-identifier='abc-Secondary', health check='hhjhkh'] 但是提供的值与当前值不匹配

我已验证 json 文件中的条目是否正确。

amazon-web-services aws-cli

6
推荐指数
1
解决办法
7012
查看次数