我正在尝试在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.但是,我仍然想知道如何检查它是否启用/禁用.
AWS CDK 创建cdk.out项目根目录。我不知道是否应该添加 git 文件。
我正在尝试为我的代码编写一个很好的错误处理程序,以便当它失败时,日志、回溯和其他相关信息会通过电子邮件发送给我。
我不知道如何获取异常对象并提取回溯。
我发现该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) 我正在尝试使用pydantic.
我想指定 dict 可以有一个 key daytime,或者没有。如果是这样,我希望 的值daytime同时包含sunrise和sunset。
例如,这些应该被允许:
{
'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) 我正在使用python脚本访问AWS中的dynamodb数据库。
我有一个带有哈希键和排序键的表。
对于给定的哈希键,我想找到最大排序键小于某个值的项目。我怎样才能做到这一点?
另外,有没有办法从给定的键中找到上一个项目?
我不是要查找具有最大属性值的项目(在dynamodb中一项昂贵的任务),我想要最大的键值。
我有一个很长的 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) 在powershell中,您可以使用cd dir进入目录dir.
但是,如果dir是目录的快捷方式,cd dir并且cd dir.lnk都给出错误,则说该目录不存在.
那么我该如何遵循这条捷径呢?
(在Linux中cd dir 运行.在Windows中,我不知道)
我有一个类似 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) 我正在使用 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 ×4
boto3 ×2
nested ×2
ansible ×1
aws-cdk ×1
aws-lambda ×1
boto ×1
bytesio ×1
cd ×1
csv ×1
exception ×1
fastapi ×1
file ×1
git ×1
gitignore ×1
indentation ×1
jinja2 ×1
key ×1
kubectl ×1
kubernetes ×1
pandas ×1
powershell ×1
pydantic ×1
rbac ×1
shortcut ×1
symlink ×1
timeout ×1
traceback ×1
validation ×1