小编shr*_*nde的帖子

模拟AWS服务进行测试

我正在寻找在不实际使用AWS云的情况下测试AWS服务的方法.Python是首选语言.

使用一些模拟组件,让我测试使用AWS S3,Redshift,Lambda,Dynamodb等的代码

到目前为止,我发现,

  1. Localstack(这支持大多数AWS服务)
  2. Minio - 这个支持S3和Lambda
  3. s3rver - 仅支持AWS S3

还有其他选择吗?

python unit-testing amazon-web-services

8
推荐指数
1
解决办法
3111
查看次数

DynamoDB Local:Streams.getRecords返回TrimmedDataAccessException

我正在使用DynamoDB本地从nodejs(Javascript SDK)运行集成测试.当我调用getRecords时,我得到"TrimmedDataAccessException".如果我在AWS(非本地)中针对DynamoDB运行相同的代码,它可以正常工作.这是步骤:

  • 运行DynamoDB
  • createTable"EventStore"
  • createTable"音乐"
  • describeTable"EventStore"(获取LatestStreamArn")
  • describeStream作为"LatestStreamArn"返回(获取ShardId)
  • 带有ShardIteratorType"LATEST"的getShardIterator
  • 将记录放到"音乐"表中
  • 将记录放到"EventStore"表中
  • 来自"EventStore"流的getRecords

"put"命令的顺序很重要.如果我把"EventStore"放在首先一切正常,但是当我首先使用"Music"时它会失败.如果我更改顺序,我的应用程序逻辑将是错误的,因此只更改顺序对我来说是一个问题.

运行DynamoDB

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb -dbPath /data
Run Code Online (Sandbox Code Playgroud)

CREATETABLE

{
    TableName: "EventStore",
    KeySchema: [
        { AttributeName: "EntityId", KeyType: "HASH" },
        { AttributeName: "Version", KeyType: "RANGE" }
    ],
    AttributeDefinitions: [
        { AttributeName: "EntityId", AttributeType: "S" },
        { AttributeName: "Version", AttributeType: "N" }
    ],
    ProvisionedThroughput: {
        ReadCapacityUnits: 10,
        WriteCapacityUnits: 10
    },
    StreamSpecification: {
        StreamEnabled: true,
        StreamViewType: "NEW_IMAGE"
    }
}
Run Code Online (Sandbox Code Playgroud)

createTable(响应)

{
  "TableDescription": {
    "AttributeDefinitions": [
      {
        "AttributeName": "EntityId",
        "AttributeType": "S" …
Run Code Online (Sandbox Code Playgroud)

dynamo-local amazon-dynamodb-streams

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

在路由之前修改flask url

我的Flask应用程序将url路由定义为

self.add_url_rule('/api/1/accounts/<id_>', view_func=self.accounts, methods=['GET'])
Run Code Online (Sandbox Code Playgroud)

问题是对此应用程序进行查询的应用程序之一添加额外的/在url中//api/1 // accounts/id.我无法控制进行此类查询的应用程序,因此我无法对其进行更改.

为解决此问题,我目前添加了多个规则

self.add_url_rule('/api/1/accounts/<id_>', view_func=self.accounts, methods=['GET'])
self.add_url_rule('/api/1//accounts/<id_>', view_func=self.accounts, methods=['GET'])
Run Code Online (Sandbox Code Playgroud)

有很多这样的路线,这是丑陋的解决方法.在点击路由逻辑之前,是否有一种方法可以修改URL?

python url flask python-2.7

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

使用列表理解的Python字符串形成

我正在尝试使用列表形成字符串。

如果list具有单个元素,l = [10]则应为string 10 如果有多个元素,l = [10,20,30]则应为string10,20,30

我尝试过,但总是,在末尾附加额外内容。 "".join("%s," % x for x in l)这产生10,10,20,30,上面列出

string list-comprehension python-2.7

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

Python 结构体长度不正确

python 结构的几个问题。请让我知道什么是正确的。

  1. 文档提到 l/L 的长度为 4,但是当使用 calcsize 检查时,它给出 8。

    >>> struct.calcsize('l')
    8
    
    Run Code Online (Sandbox Code Playgroud)
  2. struct module calcsize 给出了错误的大小。如果计算单个元素大小,其总和为 90,但与 calcsize 一起计算时,其结果为 92。

    >>> struct.calcsize('8s2sIII30s32s6s')
    92
    
    >>> struct.calcsize('8s')
    8
    
    >>> struct.calcsize('2s')
    2
    
    >>> struct.calcsize('III')
    12
    
    >>> struct.calcsize('30s')
    30
    
    >>> struct.calcsize('32s')
    32
    
    >>> struct.calcsize('6s')
    6
    
    Run Code Online (Sandbox Code Playgroud)

python struct python-2.7

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