我最近开始使用新的Amazon Elasticsearch Service,我似乎无法弄清楚我需要的访问策略,因此我只能从我的EC2实例访问具有特定IAM角色的服务.
以下是我目前为ES域分配的访问策略的示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::[ACCOUNT_ID]:role/my_es_role",
]
},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1:[ACCOUNT_ID]:domain/[ES_DOMAIN]/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但正如我所说,这不起作用.我登录到EC2实例(my_es_role
附加了角色)并尝试在"https://*.es.amazonaws.com"端点上运行简单的curl调用,我收到以下错误:
{"消息":"用户:匿名无权执行:es:ESHttpGet on resource:arn:aws:es:us-east-1:[ACCOUNT_ID]:domain/[ES_DOMAIN] /"}
有没有人知道我必须在访问策略中更改什么才能使其正常工作?
amazon-ec2 amazon-web-services elasticsearch amazon-iam amazon-elasticsearch
是否可以将项目列表应用于Ansible playbook中的多个任务?举个例子:
- name: download and execute
hosts: server1
tasks:
- get_url: url="some-url/{{item}}" dest="/tmp/{{item}}"
with_items:
- "file1.sh"
- "file2.sh"
- shell: /tmp/{{item}} >> somelog.txt
with_items:
- "file1.sh"
- "file2.sh"
Run Code Online (Sandbox Code Playgroud)
是否有一些语法可以避免重复项目列表?
我尝试编写一个模板,列出我的服务名称以及它们的外部端点+端口.但是,我没有找到任何示例或文档如何从数组中选择元素,在本例中是port
从ports
数组中选择.
我走得那么远:
kubectl get service -o=custom-columns=NAME:.metadata.name,IP:.spec.clusterIP,PORT:.spec.ports
Run Code Online (Sandbox Code Playgroud)
举一个更具体的例子,这是我的运行服务:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kafka-manager 10.3.242.200 146.148.20.235 9000:32619/TCP 11h
spark-master 10.3.242.209 104.199.21.235 7077:30588/TCP 11h
Run Code Online (Sandbox Code Playgroud)
我希望得到:
NAME EXTERNAL-ENDPOINT
kafka-manager 146.148.20.225:9000
spark-master 104.199.21.225:7077
Run Code Online (Sandbox Code Playgroud) 我们在一个团队中使用 Gitlab 项目。每个开发人员在云端都有自己的 Kubernetes 集群,在 GitLab 中有自己的分支。我们使用 GitLab-CI 自动构建新容器并将它们部署到我们的 Kubernetes 集群。
目前我们有一个.gitlab-ci.yml
看起来像这样的东西:
variables:
USERNAME: USERNAME
CI_K8S_PROJECT: ${USERNAME_CI_K8S_PROJECT}
REGISTRY_JSON_KEY_FILE: ${USERNAME_REGISTRY_JSON_KEY_FILE}
[...]
stages:
- build
- deploy
- remove
build-zeppelin:
stage: build
image: docker:latest
variables:
image_name: "zeppelin"
only:
- ${USERNAME}@Gitlab-Repo
tags:
- cloudrunner
script:
- docker login -u _json_key -p "${REGISTRY_JSON_KEY_FILE?}" https://eu.gcr.io
- image_name_fqdn="eu.gcr.io/${CI_K8S_PROJECT?}/${image_name?}:latest"
- docker build -t ${image_name_fqdn?} .
- docker push ${image_name_fqdn?}
- echo "Your new image is '${image_name_fqdn?}'. Have fun!"
[...]
Run Code Online (Sandbox Code Playgroud)
因此,一开始我们通过使用 USERNAME 前缀来引用重要信息。这工作得很好,但有问题,因为我们需要在来自另一个用户的每个拉取请求之后更正它们。
因此,我们寻找一种方法来使 gitlab-ci 文件对每个开发人员都相同,同时仍然引用一些针对每个开发人员不同的 …
我尝试在我的 Airflow 安装中运行Python Operator Example。安装在同一台机器上部署了 webserver、scheduler 和 worker,并且对所有非 PytohnOperator 任务都没有抱怨。任务失败,抱怨无法导入模块“unusual_prefix_*”,其中 * 是包含 DAG 的文件的名称。
完整的堆栈跟踪:
['/usr/bin/airflow', 'run', 'tutorialpy', 'print_the_context', '2016-08-23T10:00:00', '--pickle', '90', '--local']
[2016-08-29 11:35:20,054] {__init__.py:36} INFO - Using executor CeleryExecutor
[2016-08-29 11:35:20,175] {configuration.py:508} WARNING - section/key [core/fernet_key] not found in config
Traceback (most recent call last):
File "/usr/bin/airflow", line 90, in <module>
args.func(args)
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/airflow/bin/cli.py", line 214, in run
DagPickle).filter(DagPickle.id == args.pickle).first()
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2659, in first
ret = list(self[0:1])
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2457, in __getitem__ …
Run Code Online (Sandbox Code Playgroud) 我有一个查询,每次加载网站时都会运行.此查询聚合了三个不同的术语字段和大约300万个文档,因此需要6-7秒才能完成.数据不会频繁改变,结果的当前性并不重要.
我知道我可以使用别名在RDMS世界中创建"视图".是否也可以填充它,因此查询结果会被缓存?在这种情况下,缓存是否有任何其他方式可能有所帮助,或者我是否必须为聚合数据创建其他索引并不时更新?
我创建了一个触发器(使用settings/ci_cd页面).触发器下方的说明告诉我使用版本3 API调用它(当然,我将令牌变量设置为触发器部分下面的令牌):
curl -X POST \
-F token=${TOKEN} \
-F ref=master \
https://gitlab.com/api/v3/projects/2313008/trigger/builds
Run Code Online (Sandbox Code Playgroud)
哪个只返回:
{"未找到错误404"}
我还尝试遵循API v4文档:
curl --request POST \
--form token=${TOKEN} \
--form ref=master \
https://gitlab.com/api/v4/projects/2313008/trigger/pipeline
Run Code Online (Sandbox Code Playgroud)
返回相同的错误.
是否需要其他设置?
假设这是源json文件:
{
"name": "tom",
"age": 12,
"visits": {
"2017-01-25": 3,
"2016-07-26": 4,
"2016-01-24": 1
}
}
Run Code Online (Sandbox Code Playgroud)
我想得到:
[
"age",
"name",
"visits.2017-01-25",
"visits.2016-07-26",
"visits.2016-01-24"
]
Run Code Online (Sandbox Code Playgroud)
我可以使用:提取键jq '. | keys' file.json
,但这会跳过嵌套字段。如何包括那些?
有没有办法通过多个条件过滤极坐标数据帧?
这是我的用例以及我目前如何解决它,但我想知道如果我的日期列表更长,如何解决它:
dates = ["2018-03-25", "2019-03-31", "2020-03-29"]
timechange_forward = [(datetime.strptime(x+"T02:00", '%Y-%m-%dT%H:%M'), datetime.strptime(x+"T03:01", '%Y-%m-%dT%H:%M')) for x in dates]
df.filter(
pl.col("time").is_between(*timechange_forward[0]) |
pl.col("time").is_between(*timechange_forward[1]) |
pl.col("time").is_between(*timechange_forward[2])
)
Run Code Online (Sandbox Code Playgroud) 有没有一种方法可以创建一个类,以某种方式模拟模拟以实现所有可能的功能?所以它不应该返回AttributeError
,而应该打印一条语句。
gitlab-ci ×2
python ×2
airflow ×1
amazon-ec2 ×1
amazon-iam ×1
ansible ×1
gitlab ×1
gitlab-api ×1
jq ×1
json ×1
key ×1
kubectl ×1
kubernetes ×1
nested ×1
pickle ×1
yaml ×1