小编c1m*_*ore的帖子

ECS Fargate 1.4 不使用 VPC 终端节点

这是一个奇怪的现象。我有一个在私有子网中使用 Fargate v1.4 的 ECS 服务。由于任务无法访问 Internet,因此我必须配置 VPC 端点,以便任务可以从 AWS 服务加载所需的内容(例如,来自 SSM 的机密、来自 ECR 的图像等)。 这一切都很好,而且工作得很好,直到它失败了。 我不确定发生了什么变化,但一个周末我注意到我的服务器不再运行,并且我注意到控制台中出现此错误:

ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve secrets from ssm: service call has been retried 1 time(s): RequestError: send request failed caused by: Post https://ssm.us-ea...
Run Code Online (Sandbox Code Playgroud)

当我配置 VPC 端点时,这看起来很熟悉,因此我通过控制台以确保没有发生任何变化。据我所知,配置看起来正确(安全组具有正确的入口/出口规则,配置了正确的端点并连接到我的服务器所在的 VPC,所有内容都在同一个可用区中,IAM 角色可以访问密钥)。

作为一个实验,我删除了尝试从任务定义中加载的秘密,看看会发生什么。当新服务器启动时,我看到了类似的错误,但这次是从 ECR 加载图像:

ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve ecr registry auth: service call has been …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-vpc aws-fargate

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

Python的模拟抛出AttributeError:'module'对象没有属性'patch'

我正在尝试为Python程序创建一些测试.我使用的是Python 2.7.12版,所以我不得不安装mock使用sudo pip install mock.

根据文档其他几个 站点,我应该能够使用以下代码来使用补丁:

import mock     # Also could use from mock import patch
import unittest

class TestCases(unittest.TestCase):
    @mock.patch('MyClass.ImportedClass')   # If using from mock import patch should just be @patch
    def test_patches(self, mock_ImportedClass):
        # Test code...
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码会引发以下错误:

AttributeError: 'module' object has no attribute 'patch'
Run Code Online (Sandbox Code Playgroud)

在终端进行了一些实验后,似乎有一些事情不起作用.例如

>>> import mock

>>> mock.MagicMock
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'MagicMock' …
Run Code Online (Sandbox Code Playgroud)

python unit-testing python-2.7

5
推荐指数
1
解决办法
3398
查看次数

保存后自动填充子文档

我想在自动保存特定模型后始终填充子文档。我真正想要的是以下内容:

MyModel.post('save', function(doc, next) {
    doc.populate('path').then(next);
});
Run Code Online (Sandbox Code Playgroud)

但是,上述方法不起作用,因为

post中间件不直接接收流控制,例如没有nextdone回调传递给它。post钩子是为这些方法注册传统事件侦听器的一种方式。

当然,有“异步 Post Hooks”,但它们仍然不接收控制流,因此无法保证在我需要时会填充子文档。

为什么不直接使用嵌入式文档?对于这种情况,子文档与父文档相同(例如,我使用的是 Composite 模式之类的东西),这会导致我不确定如何解决(或者我是否可以解决)的循环依赖. 对于其他情况,我可能希望能够在不通过父文档的情况下访问子文档。

我考虑的另一种方法是:

const nativeSave = /* ? */;

MyModel.methods.save = function save() {
    return nativeSave.call(this).then(function(savedDoc) {
        return savedDoc.populate('path');
    });
};
Run Code Online (Sandbox Code Playgroud)

然而,这有两个问题。首先,这似乎是一个迂回的解决方案。如果有一种更原生的方法不违背猫鼬的实现,我会更喜欢那个。其次,我不知道我会设置什么nativeSave(如 所示/* ? */)。

那么,对于获得这种行为有哪些建议呢?如果我的第二个解决方案对当前版本的猫鼬来说是最好的,我应该设置nativeSave什么?我已经考虑过嵌入文档,所以除非您提供有关解决循环依赖的建议,否则请不要建议使用它们。即便如此,我还是想要针对我提到的其他用例的解决方案。

正如我在评论中所解释的,这与按照其他帖子的要求保存后手动填充子文档不同。我希望这会自动发生以避免泄露我的实现细节(例如使用 ObjectIds 而不是真实文档)。

mongoose

4
推荐指数
1
解决办法
4551
查看次数