小编fal*_*ets的帖子

如何使用kubectl检查RBAC是否已启用

我正在尝试在kubernetes集群上安装一个helm软件包,该集群据称已禁用RBAC.我收到了一个权限错误提示clusterroles.rbac.authorization.k8s.io,如果启用了 RBAC,这就是我所期望的.

有没有办法检查kubectlRBAC是否真的被禁用?

我尝试过的:

  • kubectl describe nodes --all-namespaces | grep -i rbac :什么都没有出现
  • kubectl describe rbac --all-namespaces | grep -i rbac :什么都没有出现
  • kubectl config get-contexts | grep -i rbac :什么都没有出现
  • k get clusterroles它说"找不到资源",而不是错误信息.这是否意味着,RBAC 启用?
  • kuebctl describe cluster 不是一件事

我知道这可能是xy问题,因为我正在安装的helm软件包可能需要启用RBAC.但是,我仍然想知道如何检查它是否启用/禁用.

rbac kubernetes kubectl

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

我不应该 git 忽略由 AWS CDK 创建的 cdk.out 文件夹吗?

AWS CDK 创建cdk.out项目根目录。我不知道是否应该添加 git 文件。

git gitignore amazon-web-services aws-cdk

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

如何捕获python异常并将回溯文本保存为字符串

我正在尝试为我的代码编写一个很好的错误处理程序,以便当它失败时,日志、回溯和其他相关信息会通过电子邮件发送给我。

我不知道如何获取异常对象并提取回溯。

我发现该traceback模块非常混乱,主要是因为它根本不处理异常。它只是从某处获取一些全局变量,假设我想要最新的异常。但如果我不这样做呢?如果我想忽略错误处理程序中的某些异常怎么办?(例如,如果我无法向我发送电子邮件并想重试。)

我想要的是

import traceback as tb

# some function that will fail after a few recursions
def myfunc(x):
   assert x > 0, "oh no"
   return myfunc(x-1)

try:
    myfunc(3)
except Exception as e:
    traceback_str = tb.something(e)
Run Code Online (Sandbox Code Playgroud)

请注意,tb.something e作为参数

Stack Overflow 上有很多关于使用traceback模块获取回溯字符串的问题。这个问题的独特之处在于如何从捕获的异常而不是全局变量中获取它。

结果:

traceback_str 包含字符串:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in myfunc
  File "<stdin>", line 3, in myfunc
  File "<stdin>", …
Run Code Online (Sandbox Code Playgroud)

python error-handling exception traceback

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

用pydantic指定嵌套字典的最佳方法?

语境

我正在尝试使用pydantic.

我想指定 dict 可以有一个 key daytime,或者没有。如果是这样,我希望 的值daytime同时包含sunrisesunset

例如,这些应该被允许:

{
   'type': 'solar',
   'daytime': {
      'sunrise': 4, # 4am
      'sunset': 18 # 6pm
   }
}
Run Code Online (Sandbox Code Playgroud)

{
   'type': 'wind'
   # daytime key is omitted
}
Run Code Online (Sandbox Code Playgroud)

{
   'type': 'wind',
   'daytime': None
}
Run Code Online (Sandbox Code Playgroud)

但我想验证失败

{
   'type': 'solar',
   'daytime': {
      'sunrise': 4
   }
}
Run Code Online (Sandbox Code Playgroud)

因为这有一个daytime值,但没有日落值。

移动电源

我有一些代码可以做到这一点。如果我运行这个脚本,它会成功执行。

from pydantic import BaseModel, ValidationError
from typing import List, Optional, Dict

class DayTime(BaseModel):
    sunrise: int …
Run Code Online (Sandbox Code Playgroud)

validation nested pydantic fastapi

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

在dynamodb中返回具有最大排序键的项目

我正在使用python脚本访问AWS中的dynamodb数据库。

我有一个带有哈希键和排序键的表。

对于给定的哈希键,我想找到最大排序键小于某个值的项目。我怎样才能做到这一点?

另外,有没有办法从给定的键中找到上一个项目?

不是要查找具有最大属性值的项目(在dynamodb中一项昂贵的任务),我想要最大的键值

python key amazon-dynamodb boto3

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

如何在 jinja2 中缩进嵌套的 if/for 语句

我有一个很长的 Jinja2 模板,它有很多嵌套的if/for语句。阅读起来非常困难。我想缩进这些{% %}位,以使其更清楚。但是,如果我这样做,这些块的内容也会进一步缩进。

我怎么能缩进只是{% %}位?

我正在使用 Ansible。

重现步骤:

template.yaml.j2

{% for x in range(3) %}
Key{{ x }}:
   # The following should be one list
   - always here
   {% if x % 2 %}
   - sometimes here
   {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

playbook.yaml

---
- hosts: localhost
  connection: local

  tasks:
    - template:
        src: template.j2
        dest: template.yaml
Run Code Online (Sandbox Code Playgroud)

运行 ansible-playbook playbook.yaml

期望输出

Key0:
   # The following should be one list …
Run Code Online (Sandbox Code Playgroud)

nested indentation jinja2 ansible

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

如何遵循powershell中的快捷方式

在powershell中,您可以使用cd dir进入目录dir.

但是,如果dir是目录的快捷方式,cd dir并且cd dir.lnk都给出错误,则说该目录不存在.

那么我该如何遵循这条捷径呢?

(在Linux中cd dir 运行.在Windows中,我不知道)

powershell symlink cd shortcut

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

来自 BytesIO 的熊猫 read_csv

我有一个类似 BytesIO 文件的对象,其中包含一个 CSV。我想将它读入 Pandas 数据帧,而不是在两者之间写入磁盘。

移动电源

在我的用例中,我将文件直接下载到 BytesIO。对于这个 MWE,我将在磁盘上有一个文件,将其读入 BytesIO,然后将其读入 Pandas。磁盘步骤只是为了制作 MWE。

file.csv

a,b
1,2
3,4
Run Code Online (Sandbox Code Playgroud)

脚本:

import pandas as pd
from io import BytesIO
bio = BytesIO()
with open('file.csv', 'rb') as f:
   bio.write(f.read())

# now we have a BytesIO with a CSV
df = pd.read_csv(bio)
Run Code Online (Sandbox Code Playgroud)

结果:

Traceback (most recent call last):
  File "pandas-io.py", line 8, in <module>
    df = pd.read_csv(bio)
  File "/home/ec2-user/.local/lib/python3.6/site-packages/pandas/io/parsers.py", line 685, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "/home/ec2-user/.local/lib/python3.6/site-packages/pandas/io/parsers.py", line 457, in _read
    parser = TextFileReader(fp_or_buf, …
Run Code Online (Sandbox Code Playgroud)

python csv file bytesio pandas

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

使用 boto 调用 lambda 不考虑超时

我正在使用 boto3 调用 lambda 函数,其中:

import boto3
import json

client = boto3.client('lambda')
response = client.invoke(
            InvocationType='RequestResponse',
            FunctionName=test_lambda_arn,
            LogType='Tail',
            Payload=json.dumps(data)
)
Run Code Online (Sandbox Code Playgroud)

botocore.vendored.requests.exceptions.ReadTimeout在 626 秒后引发异常。我已将此 lambda 配置为在 100 秒后超时。当我用 boto 创建它时,我这样做了。当我进入 AWS 控制台时,它说这个 lambda 的超时时间为 1 分 40 秒。

那么为什么invoke命令在 626 秒后超时,而不是 100 秒后呢?

是因为重试吗?如果是这样,我如何禁用重试?

编辑:在 CloudWatch 日志中,我可以看到每个client.invoke调用的多个调用。因此会发生一些自动重试的事情。以下是该文档client.invoke

python timeout boto boto3 aws-lambda

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